services: xorg: Add 'set-xorg-configuration'.
* gnu/services/xorg.scm (gdm-service-type)[compose, extend]: New fields. (set-xorg-configuration): New procedure. * doc/guix.texi (Keyboard Layout): Use it. (X Window): Document it. * gnu/system/examples/desktop.tmpl: Add 'keyboard-layout' fields.
This commit is contained in:
parent
607fcc7540
commit
305a732a0a
|
@ -11077,6 +11077,7 @@ Let's say you want your system to use the Turkish keyboard layout throughout
|
|||
your system---bootloader, console, and Xorg. Here's what your system
|
||||
configuration would look like:
|
||||
|
||||
@findex set-xorg-configuration
|
||||
@lisp
|
||||
;; Using the Turkish layout for the bootloader, the console,
|
||||
;; and for Xorg.
|
||||
|
@ -11088,18 +11089,17 @@ configuration would look like:
|
|||
(bootloader grub-efi-bootloader)
|
||||
(target "/boot/efi")
|
||||
(keyboard-layout keyboard-layout))) ;for GRUB
|
||||
(services (modify-services %desktop-services
|
||||
(gdm-service-type config =>
|
||||
(gdm-configuration
|
||||
(inherit config)
|
||||
(xorg-configuration
|
||||
(services (cons (set-xorg-configuration
|
||||
(xorg-configuration ;for Xorg
|
||||
(keyboard-layout keyboard-layout))))))))
|
||||
(keyboard-layout keyboard-layout)))
|
||||
%desktop-services)))
|
||||
@end lisp
|
||||
|
||||
In the example above, for GRUB and for Xorg, we just refer to the
|
||||
@code{keyboard-layout} field defined above, but we could just as well refer to
|
||||
a different layout.
|
||||
a different layout. The @code{set-xorg-configuration} procedure communicates
|
||||
the desired Xorg configuration to the graphical log-in manager, by default
|
||||
GDM.
|
||||
|
||||
@node Locales
|
||||
@section Locales
|
||||
|
@ -13566,6 +13566,16 @@ default is @code{-nolisten tcp}.
|
|||
@end table
|
||||
@end deftp
|
||||
|
||||
@deffn {Scheme Procedure} set-xorg-configuration @var{config} @
|
||||
[@var{login-manager-service-type}]
|
||||
Tell the log-in manager (of type @var{login-manager-service-type}) to use
|
||||
@var{config}, an <xorg-configuration> record.
|
||||
|
||||
Since the Xorg configuration is embedded in the log-in manager's
|
||||
configuration---e.g., @code{gdm-configuration}---this procedure provides a
|
||||
shorthand to set the Xorg configuration.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} xorg-start-command [@var{config}]
|
||||
Return a @code{startx} script in which the modules, fonts, etc. specified
|
||||
in @var{config}, are available. The result should be used in place of
|
||||
|
|
|
@ -99,7 +99,8 @@
|
|||
|
||||
gdm-configuration
|
||||
gdm-service-type
|
||||
gdm-service))
|
||||
gdm-service
|
||||
set-xorg-configuration))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
|
@ -875,6 +876,15 @@ the GNOME desktop environment.")
|
|||
xorg-configuration-keyboard-layout
|
||||
gdm-configuration-xorg))))
|
||||
|
||||
;; For convenience, this service can be extended with an
|
||||
;; <xorg-configuration> record. Take the first one that
|
||||
;; comes.
|
||||
(compose first)
|
||||
(extend (lambda (config xorg-configuration)
|
||||
(gdm-configuration
|
||||
(inherit config)
|
||||
(xorg-configuration xorg-configuration))))
|
||||
|
||||
(default-value (gdm-configuration))
|
||||
(description
|
||||
"Run the GNOME Desktop Manager (GDM), a program that allows
|
||||
|
@ -908,4 +918,14 @@ password."
|
|||
(gdm gdm)
|
||||
(allow-empty-passwords? allow-empty-passwords?))))
|
||||
|
||||
(define* (set-xorg-configuration config
|
||||
#:optional
|
||||
(login-manager-service-type
|
||||
gdm-service-type))
|
||||
"Tell the log-in manager (of type @var{login-manager-service-type}) to use
|
||||
@var{config}, an <xorg-configuration> record."
|
||||
(simple-service 'set-xorg-configuration
|
||||
login-manager-service-type
|
||||
config))
|
||||
|
||||
;;; xorg.scm ends here
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
;; root partition is encrypted with LUKS.
|
||||
|
||||
(use-modules (gnu) (gnu system nss))
|
||||
(use-service-modules desktop)
|
||||
(use-service-modules desktop xorg)
|
||||
(use-package-modules certs gnome)
|
||||
|
||||
(operating-system
|
||||
|
@ -11,11 +11,16 @@
|
|||
(timezone "Europe/Paris")
|
||||
(locale "en_US.utf8")
|
||||
|
||||
;; Choose US English keyboard layout. The "altgr-intl"
|
||||
;; variant provides dead keys for accented characters.
|
||||
(keyboard-layout (keyboard-layout "us" "altgr-intl"))
|
||||
|
||||
;; 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")))
|
||||
(target "/boot/efi")
|
||||
(keyboard-layout keyboard-layout)))
|
||||
|
||||
;; Specify a mapped device for the encrypted root partition.
|
||||
;; The UUID is that returned by 'cryptsetup luksUUID'.
|
||||
|
@ -58,7 +63,10 @@
|
|||
;; include the X11 log-in service, networking with
|
||||
;; NetworkManager, and more.
|
||||
(services (append (list (service gnome-desktop-service-type)
|
||||
(service xfce-desktop-service-type))
|
||||
(service xfce-desktop-service-type)
|
||||
(set-xorg-configuration
|
||||
(xorg-configuration
|
||||
(keyboard-layout keyboard-layout))))
|
||||
%desktop-services))
|
||||
|
||||
;; Allow resolution of '.local' host names with mDNS.
|
||||
|
|
Loading…
Reference in New Issue