diff mbox series

[bug#61458] services: xorg-wrapper: Support xorg server input

Message ID 86k00mvgmi.fsf@burningswell.com
State New
Headers show
Series [bug#61458] services: xorg-wrapper: Support xorg server input | expand

Commit Message

Roman Scherer Feb. 12, 2023, 6:52 p.m. UTC
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.

Comments

宋文武 March 7, 2023, 1:30 a.m. UTC | #1
Roman Scherer <roman.scherer@burningswell.com> writes:

> 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.

Sorry for a long deley..
>
> 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.

I think it's better add some explaination to commit message like:
The xorg-wrapper uses [...]
This patch [...]

Should be good.
>
> * 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)))
I'm not sure about the procedure name, maybe add a docstring explain
it's function?


Otherwise, look good to me, thank you!
Roman Scherer March 10, 2023, 3:32 p.m. UTC | #2
Hi 宋文武,

thanks for taking a look. I messed up my system, but will update the
patch once I got everyting working again.

Roman

宋文武 <iyzsong@envs.net> writes:

> Roman Scherer <roman.scherer@burningswell.com> writes:
>
>> 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.
>
> Sorry for a long deley..
>>
>> 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.
>
> I think it's better add some explaination to commit message like:
> The xorg-wrapper uses [...]
> This patch [...]
>
> Should be good.
>>
>> * 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)))
> I'm not sure about the procedure name, maybe add a docstring explain
> it's function?
>
>
> Otherwise, look good to me, thank you!
宋文武 March 25, 2023, 2:11 a.m. UTC | #3
Roman Scherer <roman@burningswell.com> writes:

>   services: xorg-wrapper: Support xorg server input rewriting.

Pushed with some commit description added:

    * 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.

Thank you!
Roman Scherer March 25, 2023, 7:56 a.m. UTC | #4
Thank you 宋文武!

宋文武 <iyzsong@envs.net> writes:

> Roman Scherer <roman@burningswell.com> writes:
>
>>   services: xorg-wrapper: Support xorg server input rewriting.
>
> Pushed with some commit description added:
>
>     * 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.
>
> Thank you!
diff mbox series

Patch

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