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
|
your system---bootloader, console, and Xorg. Here's what your system
|
||||||
configuration would look like:
|
configuration would look like:
|
||||||
|
|
||||||
|
@findex set-xorg-configuration
|
||||||
@lisp
|
@lisp
|
||||||
;; Using the Turkish layout for the bootloader, the console,
|
;; Using the Turkish layout for the bootloader, the console,
|
||||||
;; and for Xorg.
|
;; and for Xorg.
|
||||||
|
@ -11088,18 +11089,17 @@ configuration would look like:
|
||||||
(bootloader grub-efi-bootloader)
|
(bootloader grub-efi-bootloader)
|
||||||
(target "/boot/efi")
|
(target "/boot/efi")
|
||||||
(keyboard-layout keyboard-layout))) ;for GRUB
|
(keyboard-layout keyboard-layout))) ;for GRUB
|
||||||
(services (modify-services %desktop-services
|
(services (cons (set-xorg-configuration
|
||||||
(gdm-service-type config =>
|
|
||||||
(gdm-configuration
|
|
||||||
(inherit config)
|
|
||||||
(xorg-configuration
|
|
||||||
(xorg-configuration ;for Xorg
|
(xorg-configuration ;for Xorg
|
||||||
(keyboard-layout keyboard-layout))))))))
|
(keyboard-layout keyboard-layout)))
|
||||||
|
%desktop-services)))
|
||||||
@end lisp
|
@end lisp
|
||||||
|
|
||||||
In the example above, for GRUB and for Xorg, we just refer to the
|
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
|
@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
|
@node Locales
|
||||||
@section Locales
|
@section Locales
|
||||||
|
@ -13566,6 +13566,16 @@ default is @code{-nolisten tcp}.
|
||||||
@end table
|
@end table
|
||||||
@end deftp
|
@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}]
|
@deffn {Scheme Procedure} xorg-start-command [@var{config}]
|
||||||
Return a @code{startx} script in which the modules, fonts, etc. specified
|
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
|
in @var{config}, are available. The result should be used in place of
|
||||||
|
|
|
@ -99,7 +99,8 @@
|
||||||
|
|
||||||
gdm-configuration
|
gdm-configuration
|
||||||
gdm-service-type
|
gdm-service-type
|
||||||
gdm-service))
|
gdm-service
|
||||||
|
set-xorg-configuration))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;;;
|
;;;
|
||||||
|
@ -875,6 +876,15 @@ the GNOME desktop environment.")
|
||||||
xorg-configuration-keyboard-layout
|
xorg-configuration-keyboard-layout
|
||||||
gdm-configuration-xorg))))
|
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))
|
(default-value (gdm-configuration))
|
||||||
(description
|
(description
|
||||||
"Run the GNOME Desktop Manager (GDM), a program that allows
|
"Run the GNOME Desktop Manager (GDM), a program that allows
|
||||||
|
@ -908,4 +918,14 @@ password."
|
||||||
(gdm gdm)
|
(gdm gdm)
|
||||||
(allow-empty-passwords? allow-empty-passwords?))))
|
(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
|
;;; xorg.scm ends here
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
;; root partition is encrypted with LUKS.
|
;; root partition is encrypted with LUKS.
|
||||||
|
|
||||||
(use-modules (gnu) (gnu system nss))
|
(use-modules (gnu) (gnu system nss))
|
||||||
(use-service-modules desktop)
|
(use-service-modules desktop xorg)
|
||||||
(use-package-modules certs gnome)
|
(use-package-modules certs gnome)
|
||||||
|
|
||||||
(operating-system
|
(operating-system
|
||||||
|
@ -11,11 +11,16 @@
|
||||||
(timezone "Europe/Paris")
|
(timezone "Europe/Paris")
|
||||||
(locale "en_US.utf8")
|
(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
|
;; Use the UEFI variant of GRUB with the EFI System
|
||||||
;; Partition mounted on /boot/efi.
|
;; Partition mounted on /boot/efi.
|
||||||
(bootloader (bootloader-configuration
|
(bootloader (bootloader-configuration
|
||||||
(bootloader grub-efi-bootloader)
|
(bootloader grub-efi-bootloader)
|
||||||
(target "/boot/efi")))
|
(target "/boot/efi")
|
||||||
|
(keyboard-layout keyboard-layout)))
|
||||||
|
|
||||||
;; Specify a mapped device for the encrypted root partition.
|
;; Specify a mapped device for the encrypted root partition.
|
||||||
;; The UUID is that returned by 'cryptsetup luksUUID'.
|
;; The UUID is that returned by 'cryptsetup luksUUID'.
|
||||||
|
@ -58,7 +63,10 @@
|
||||||
;; include the X11 log-in service, networking with
|
;; include the X11 log-in service, networking with
|
||||||
;; NetworkManager, and more.
|
;; NetworkManager, and more.
|
||||||
(services (append (list (service gnome-desktop-service-type)
|
(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))
|
%desktop-services))
|
||||||
|
|
||||||
;; Allow resolution of '.local' host names with mDNS.
|
;; Allow resolution of '.local' host names with mDNS.
|
||||||
|
|
Loading…
Reference in New Issue