gnu: services: Start X with -configdir.
* gnu/services/xorg.scm (%default-xorg-modules): New public variable. (xorg-configuration-directory): New function. (xorg-start-command): Add #:modules keyword argument, defaulting to %default-xorg-modules. Build an xorg.conf.d directory from those modules, and pass it to X via the -configdir parameter.
This commit is contained in:
parent
d0a6437f7d
commit
79fd74facd
|
@ -40,6 +40,7 @@
|
||||||
#:use-module (srfi srfi-26)
|
#:use-module (srfi srfi-26)
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
#:export (xorg-configuration-file
|
#:export (xorg-configuration-file
|
||||||
|
%default-xorg-modules
|
||||||
xorg-start-command
|
xorg-start-command
|
||||||
%default-slim-theme
|
%default-slim-theme
|
||||||
%default-slim-theme-name
|
%default-slim-theme-name
|
||||||
|
@ -137,9 +138,52 @@ EndSection
|
||||||
"\n"
|
"\n"
|
||||||
extra-config))
|
extra-config))
|
||||||
|
|
||||||
|
(define %default-xorg-modules
|
||||||
|
(list xf86-video-vesa
|
||||||
|
xf86-video-fbdev
|
||||||
|
xf86-video-modesetting
|
||||||
|
xf86-video-cirrus
|
||||||
|
xf86-video-intel
|
||||||
|
xf86-video-mach64
|
||||||
|
xf86-video-nouveau
|
||||||
|
xf86-video-nv
|
||||||
|
xf86-video-sis
|
||||||
|
xf86-input-libinput
|
||||||
|
xf86-input-evdev
|
||||||
|
xf86-input-keyboard
|
||||||
|
xf86-input-mouse
|
||||||
|
xf86-input-synaptics))
|
||||||
|
|
||||||
|
(define (xorg-configuration-directory modules)
|
||||||
|
"Return a directory that contains the @code{.conf} files for X.org that
|
||||||
|
includes the @code{share/X11/xorg.conf.d} directories of each package listed
|
||||||
|
in @var{modules}."
|
||||||
|
(computed-file "xorg.conf.d"
|
||||||
|
#~(begin
|
||||||
|
(use-modules (guix build utils)
|
||||||
|
(srfi srfi-1))
|
||||||
|
|
||||||
|
(define files
|
||||||
|
(append-map (lambda (module)
|
||||||
|
(find-files (string-append
|
||||||
|
module
|
||||||
|
"/share/X11/xorg.conf.d")
|
||||||
|
"\\.conf$"))
|
||||||
|
(list #$@modules)))
|
||||||
|
|
||||||
|
(mkdir #$output)
|
||||||
|
(for-each (lambda (file)
|
||||||
|
(symlink file
|
||||||
|
(string-append #$output "/"
|
||||||
|
(basename file))))
|
||||||
|
files)
|
||||||
|
#t)
|
||||||
|
#:modules '((guix build utils))))
|
||||||
|
|
||||||
(define* (xorg-start-command #:key
|
(define* (xorg-start-command #:key
|
||||||
(guile (canonical-package guile-2.0))
|
(guile (canonical-package guile-2.0))
|
||||||
(configuration-file (xorg-configuration-file))
|
(configuration-file (xorg-configuration-file))
|
||||||
|
(modules %default-xorg-modules)
|
||||||
(xorg-server xorg-server))
|
(xorg-server xorg-server))
|
||||||
"Return a derivation that builds a @var{guile} script to start the X server
|
"Return a derivation that builds a @var{guile} script to start the X server
|
||||||
from @var{xorg-server}. @var{configuration-file} is the server configuration
|
from @var{xorg-server}. @var{configuration-file} is the server configuration
|
||||||
|
@ -158,6 +202,7 @@ Usually the X server is started by a login manager."
|
||||||
"-logverbose" "-verbose"
|
"-logverbose" "-verbose"
|
||||||
"-xkbdir" (string-append #$xkeyboard-config "/share/X11/xkb")
|
"-xkbdir" (string-append #$xkeyboard-config "/share/X11/xkb")
|
||||||
"-config" #$configuration-file
|
"-config" #$configuration-file
|
||||||
|
"-configdir" #$(xorg-configuration-directory modules)
|
||||||
"-nolisten" "tcp" "-terminate"
|
"-nolisten" "tcp" "-terminate"
|
||||||
|
|
||||||
;; Note: SLiM and other display managers add the
|
;; Note: SLiM and other display managers add the
|
||||||
|
|
Loading…
Reference in New Issue