summaryrefslogtreecommitdiff
path: root/gnu/services
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/services')
-rw-r--r--gnu/services/xorg.scm23
1 files changed, 20 insertions, 3 deletions
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index c4745cecf5..7295a45b59 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -358,6 +358,22 @@ in @var{modules}."
files)
#t))))
+(define (xorg-configuration-server-package-path config input path)
+ "Lookup the direct @var{input} in the xorg server package of @var{config}
+and append @var{path} to it."
+ (let* ((server (xorg-configuration-server config))
+ (package (lookup-package-direct-input server input)))
+ (when package (file-append package path))))
+
+(define (xorg-configuration-dri-driver-path config)
+ (xorg-configuration-server-package-path config "mesa" "/lib/dri"))
+
+(define (xorg-configuration-xkb-bin-dir config)
+ (xorg-configuration-server-package-path config "xkbcomp" "/bin"))
+
+(define (xorg-configuration-xkb-dir config)
+ (xorg-configuration-server-package-path config "xkeyboard-config" "/share/X11/xkb"))
+
(define* (xorg-wrapper #:optional (config (xorg-configuration)))
"Return a derivation that builds a script to start the X server with the
given @var{config}. The resulting script should be used in place of
@@ -365,12 +381,13 @@ given @var{config}. The resulting script should be used in place of
(define exp
;; Write a small wrapper around the X server.
#~(begin
- (setenv "XORG_DRI_DRIVER_PATH" (string-append #$mesa "/lib/dri"))
- (setenv "XKB_BINDIR" (string-append #$xkbcomp "/bin"))
+ (setenv "XORG_DRI_DRIVER_PATH"
+ #$(xorg-configuration-dri-driver-path config))
+ (setenv "XKB_BINDIR" #$(xorg-configuration-xkb-bin-dir config))
(let ((X (string-append #$(xorg-configuration-server config) "/bin/X")))
(apply execl X X
- "-xkbdir" (string-append #$xkeyboard-config "/share/X11/xkb")
+ "-xkbdir" #$(xorg-configuration-xkb-dir config)
"-config" #$(xorg-configuration->file config)
"-configdir" #$(xorg-configuration-directory
(xorg-configuration-modules config))