unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Roman Scherer <roman.scherer@burningswell.com>
To: 61458@debbugs.gnu.org
Subject: [bug#61458] [PATCH] services: xorg-wrapper: Support xorg server input
Date: Sun, 12 Feb 2023 19:52:40 +0100	[thread overview]
Message-ID: <86k00mvgmi.fsf@burningswell.com> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 1110 bytes --]


Hello Guix,

I would like to replace the Mesa package in my Xorg configuration. I
tried to do this with the following snippet:

```
(modify-services %desktop-services
  (slim-service-type config =>
                     (slim-configuration
                      (inherit config)
                      (xorg-configuration
                       (xorg-configuration
                        (server (replace-mesa xorg-server)))))))
```

But this unfortunately does not work, because the xorg-wrapper uses
static paths for the mesa, xkbcomp and xkeyboard-config packages in the
derivation.

The xserver starts now with the replaced mesa, but some paths still
point to the hard coded packages in Guix itself (and not the
replacement), which cause some things to not work.

This patch changes this to lookup the paths from the inputs of the
server field of the xorg-configuration instead. That way the correct
paths are setup in the xor-wrapper script. If those inputs are not found
for some reason it falls back to the current behavior, using the
packages from Guix.

Could you please review this?

Thanks, Roman.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-services-xorg-wrapper-Support-xorg-server-input-tran.patch --]
[-- Type: text/x-patch, Size: 2563 bytes --]

From d035c99ed4703da0e3e9b62299c390560c074a17 Mon Sep 17 00:00:00 2001
From: r0man <roman@burningswell.com>
Date: Sat, 11 Feb 2023 19:36:16 +0100
Subject: [PATCH] services: xorg-wrapper: Support xorg server input
 transformations.

* gnu/services/xorg.scm (xorg-wrapper): Support xorg server input transformations.
---
 gnu/services/xorg.scm | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 5f073d05d3..92735e6004 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -355,6 +355,21 @@ (define files
                                  files)
                        #t))))
 
+(define (xorg-configuration-append-input config input default-input path)
+  (let ((server (xorg-configuration-server config)))
+    (file-append (or (lookup-package-direct-input server input) default-input)
+                 path)))
+
+(define (xorg-configuration-dri-driver-path config)
+  (xorg-configuration-append-input config "mesa" mesa "/lib/dri"))
+
+(define (xorg-configuration-xkb-bin-dir config)
+  (xorg-configuration-append-input config "xkbcomp" xkbcomp "/bin"))
+
+(define (xorg-configuration-xkb-dir config)
+  (xorg-configuration-append-input config "xkeyboard-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
@@ -362,12 +377,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))
-- 
2.38.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 528 bytes --]

             reply	other threads:[~2023-02-12 19:17 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-12 18:52 Roman Scherer [this message]
2023-03-07  1:30 ` [bug#61458] [PATCH] services: xorg-wrapper: Support xorg server input 宋文武 via Guix-patches via
2023-03-10 15:32   ` Roman Scherer
2023-03-21 19:11 ` [bug#61458] [PATCH v2 0/1] Support xorg server input rewriting Roman Scherer
2023-03-21 19:11   ` [bug#61458] [PATCH v2 1/1] services: xorg-wrapper: " Roman Scherer
2023-03-25  2:11   ` bug#61458: [PATCH] services: xorg-wrapper: Support xorg server input 宋文武 via Guix-patches via
2023-03-25  7:56     ` [bug#61458] " Roman Scherer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86k00mvgmi.fsf@burningswell.com \
    --to=roman.scherer@burningswell.com \
    --cc=61458@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).