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

From: Stefan Huchler <[email-masked]>
Date: Sun, 24 May 2020 19:37:50 +0200

[email-masked] writes:

> 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).

Hello "o",

sadly can't see your name, I run into the same Problem and first found
only your bug report so did not care to look for other bug reports
further back in the past, but this "bug" missunderstanding seems to be
related to bug#37422.

I found the solution by carefully reading the docu und try/error a few
iterations first with simpler level of config till I got the solution
( would be easier if I found the bug mentioned earlier but I learned more
this way so it's good :D )

This is the solution to get it working:
(service slim-service-type
	(slim-configuration
	   (xorg-configuration (xorg-configuration
		(keyboard-layout keyboard-layout)))))

The tricky part is that you have to use 2 times xorg-configuration one
time for the variable name and one time you have some sort of generator
function for xorg-configuration, that didn't clip for me as newcomer to
guix instantly.

If we consider that a bug it would be a documentian bug, and maybe that
the set-xorg-configuration method does not work (at least it seems that
way) that is not what the documentation implies. This function looks
like a general function where it says "e.g. gdm" that implies that it
should work for both gdm and all other login-managers the same way.

Ok just testet it that works to:

(set-xorg-configuration
   (xorg-configuration
      (keyboard-layout keyboard-layout)) slim-service-type)

Where the documentition there is missleading is that you see the:

Scheme Procedure: set-xorg-configuration config
[login-manager-service-type]

optional login-manager-service-type parameter but it's not described
that it defaults to gdm-service-type and can be therefor ommited in the
case of gdm.

So I would A maybe add more sample code and B adding (default:
gdm-service-type) behind the "set-xorg-configuration" description.