mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-23 21:17:11 -05:00
services: xorg-wrapper: Support xorg server input rewriting.
This patch adds support for proper xorg server input rewriting. It uses the lookup-package-direct-input procedure to configure the X server paths dynamically, instead of always using the hard coded package. Something like this is now possible: (define other-mesa (package-input-rewriting/spec `(("mesa" . ,(const other-mesa))))) (xorg-configuration (xorg-configuration (server (other-mesa xorg-server)))) Without this patch the X server would still be configured with mesa (causing version issues), and not with other-mesa (as per the input rewrite). * gnu/services/xorg.scm (xorg-configuration-server-package-path) (xorg-configuration-dri-driver-path, xorg-configuration-xkb-bin-dir) (xorg-configuration-xkb-dir): New procedures. (xorg-wrapper): Use them for dri and xkb paths. Signed-off-by: 宋文武 <iyzsong@member.fsf.org>
This commit is contained in:
parent
ff476daa57
commit
a7f118d062
1 changed files with 20 additions and 3 deletions
|
@ -358,6 +358,22 @@ (define files
|
|||
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 @@ (define* (xorg-wrapper #:optional (config (xorg-configuration)))
|
|||
(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))
|
||||
|
|
Loading…
Reference in a new issue