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

From: 宋文武 <[email-masked]>
Date: Tue, 07 Mar 2023 09:30:01 +0800

Roman Scherer <[email-masked]> 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 <[email-masked]>
> 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!