Subject: bug#39606: Keyboard layout defined by 'set-xorg-configuration' is not honored by GDM.

From: Maxim Cournoyer <[email-masked]>
Date: Fri, 14 Feb 2020 14:23:47 -0500

Hello!

I based my operating system configuration on
gnu/system/examples/desktop.tmpl in the Guix tree, and was surprised
that my dvorak keyboard is in effect everywhere except at the GDM
greeter screen (where it is QWERTY).

Here's the full config:

--8<---------------cut here---------------start------------->8---
(use-modules (gnu)
	     (gnu system nss)
	     (srfi srfi-1))

(use-service-modules admin desktop docker ssh xorg)
(use-package-modules android certs ratpoison)

(operating-system
  (host-name "raisin")
  (timezone "America/Montreal")
  (locale "en_US.utf8")

  ;; Choose US English keyboard layout.  The "altgr-intl"
  ;; variant provides dead keys for accented characters.
  (keyboard-layout (keyboard-layout "dvorak"))

  ;; Use the UEFI variant of GRUB with the EFI System
  ;; Partition mounted on /boot/efi.
  (bootloader (bootloader-configuration
	       (bootloader grub-efi-bootloader)
	       (target "/boot/efi")
	       (keyboard-layout keyboard-layout)))

  ;; Radeon requires a blob else prevents booting.  Blacklisting the
  ;; radeon driver allows falling back to VESA.
  (kernel-arguments '("quiet" "modprobe.blacklist=radeon"))

  ;; Specify a mapped device for the encrypted root partition.
  ;; The UUID is that returned by 'cryptsetup luksUUID'.
  (mapped-devices
   (list (mapped-device
	  (source (uuid "f85c0627-1f6f-48b9-a2c2-6c12594a7bd1"))
	  (target "btrfs-pool-1")
	  (type luks-device-mapping))))

  (file-systems (cons*
		 (file-system
		   (device (file-system-label "btrfs-pool-1"))
		   (mount-point "/")
		   (type "btrfs")
		   (options '(("subvol" . "rootfs")
			      ("compress" . "zstd")))
		   (dependencies mapped-devices))
		 (file-system
		   (device (file-system-label "btrfs-pool-1"))
		   (mount-point "/home")
		   (type "btrfs")
		   (options '(("subvol" . "homefs")
			      ("compress" . "zstd")))
		   (dependencies mapped-devices))
		 (file-system
		   (device (uuid "209E-67AD" 'fat))
		   (mount-point "/boot/efi")
		   (type "vfat"))
		 %base-file-systems))

  (swap-devices '("/swap/swapfile"))

  (users (cons (user-account
		(name "mcournoyer")
		(group "users")
		(supplementary-groups '("wheel" "netdev"
					"audio" "video"
					"kvm" "docker"
					"adbusers")))
	       %base-user-accounts))

  (groups (cons* (user-group (system? #t)
			     (name "adbusers"))
		 %base-groups))

  ;; This is where we specify system-wide packages.
  (packages (cons* ratpoison
		   nss-certs		;for HTTPS access
		   %base-packages))

  ;; SSH, Docker
  (services
   (cons*
    (service rottlog-service-type)
    (service openssh-service-type
	     (openssh-configuration
	      (port-number 22)
	      (permit-root-login #t)))
    (service docker-service-type)
    (set-xorg-configuration (xorg-configuration
			     (keyboard-layout keyboard-layout)))
    (modify-services %desktop-services
      ;; Enable using adb as a simple user with a multitude of devices.
      (udev-service-type config =>
			 (udev-configuration
			  (inherit config)
			  (rules (cons* android-udev-rules
					(udev-configuration-rules config))))))))

  ;; Allow resolution of '.local' host names with mDNS.
  (name-service-switch %mdns-host-lookup-nss))
--8<---------------cut here---------------end--------------->8---

Maxim