Subject: bug#41121: (Keyboard-layout) form does not work "across the board"

From: [email-masked]
Date: Thu, 07 May 2020 09:01:50 +0200

Hej guys,

so I hope this actually is a bug and not something not yet implemented 
or a misunderstanding on my part.

In the process of changing my login manager to slim (over gdm), I 
noticed that the (keyboard-layout ...) form does not work the same way 
in the (bootloader)/(set-xorg-configuration) and the 
(slim-configuration) form. While in the former cases, (keyboard-layout 
keyboard-layout) uses the string I inputted in the beginning of the 
config file, an error is thrown when I try to do the same in the 
(slim-configuration) form (error 1). When I simply use (service 
slim-service-type) and try to supplement via (set-xorg-configuration), 
an error is thrown as well (error 2).

Have a good day folks, guix rules :)

### The errors (with my shabby translations)
1) user@computer ~$ sudo guix system reconfigure 
src/guix-config/os-desktop.scm
Passwort:
guix system: error: „src/guix-config/os-desktop.scm“ could not be 
loaded: /home/user/src/guix-config/os-desktop.scm:68:30: Wrong type to 
apply: #<<keyboard-layout> name: "de" variant: #f model: #f options: ()>

2) user@computer ~$ sudo guix system reconfigure 
src/guix-config/os-desktop.scm
guix system: error: Der Dienst „xorg-server“ kommt mehr als einmal vor

### The config file (note that some parens might be unbalanced because I 
tried to remove the "unnecessary" stuff)
(use-modules (gnu)
	     (srfi srfi-1))

(use-service-modules desktop networking ssh xorg)

(use-package-modules disk llvm linux ncdu xorg less gnome fonts 
display-managers lxqt syncthing
		     version-control emacs emacs-xyz tex cups video gstreamer gnuzilla 
web-browsers
		     messaging mail rsync suckless pdf curl databases hardware wm)

(operating-system
   (locale "de_DE.utf8")
   (timezone "Europe/Berlin")
   (keyboard-layout (keyboard-layout "de"))
   (host-name "computer")
   (users (cons* (user-account
                   (name "user")
                   (comment "")
                   (group "users")
                   (home-directory "/home/hapster")
                   (supplementary-groups
                     '("wheel" "netdev" "audio" "video")))
                 %base-user-accounts))
   (packages
     (append
       (map specification->package
  	'(
	 ;;;; PACKAGES
					))
       %base-packages))

   ;;;; "alternative" Konfiguration
   (services (cons* (service slim-service-type)
			    ;; (slim-configuration
			    ;;  (xorg-configuration
			    ;;   (keyboard-layout keyboard-layout))))
		   ;; (set-xorg-configuration
		   ;;  (xorg-configuration
		   ;;   (keyboard-layout keyboard-layout)))
		   (remove (lambda (service)
			     (eq? (service-kind service) gdm-service-type))
		   %desktop-services)))
   (bootloader
     (bootloader-configuration
       (bootloader grub-bootloader)
       (target "/dev/sdX")
       (keyboard-layout keyboard-layout)))
   (file-systems
     (cons*
               ;;;; FILESYSTEMS
            %base-file-systems)))