~ruther/guix-local

7d4db1a37c39019c0840fe074f90df0b7be3c120 — Ian Eure a month ago fc650ba
gnu: services: Fix xorg configuration merging.

A bug in #21 causes the default configuration to be omitted from the xorg
merging process.  This can cause users not using set-xorg-configuration or
service extensions to end up with a broken configuration.

Fixes #5267.

* tests/services/xorg.scm: Add a regression test.
* gnu/services/xorg.scm (handle-xorg-configuration): Include the
xorg-configuration record from config in merges.

Change-Id: I6bed8c109057cb9b5de36db68b78e3ccc88e6bcb
Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2 files changed, 40 insertions(+), 1 deletions(-)

M gnu/services/xorg.scm
M tests/services/xorg.scm
M gnu/services/xorg.scm => gnu/services/xorg.scm +5 -1
@@ 685,7 685,11 @@ a `service-extension', as used by `set-xorg-configuration'."
                 (configuration-record
                  (inherit config)
                  (xorg-configuration
                    (merge-xorg-configurations xorg-configurations)))))))))
                    (merge-xorg-configurations
                     (cons ((record-accessor (record-type-descriptor config)
                                             'xorg-configuration)
                            config)
                           xorg-configurations))))))))))

(define (xorg-server-profile-service config)
  ;; XXX: profile-service-type only accepts <package> objects.

M tests/services/xorg.scm => tests/services/xorg.scm +35 -0
@@ 24,6 24,8 @@
  #:use-module (gnu bootloader grub)
  #:use-module (gnu services)
  #:use-module (gnu services base)
  #:use-module (gnu services desktop)
  #:use-module (gnu services lightdm)
  #:use-module (gnu services xorg)
  #:use-module (gnu system)
  #:use-module (gnu system keyboard)


@@ 229,4 231,37 @@
     (xorg-configuration (drivers %drivers-custom-1))
     (xorg-configuration (drivers %drivers-custom-2))))))

;; regression tests.

;; https://codeberg.org/guix/guix/issues/5267
(test-equal "https://codeberg.org/guix/guix/issues/5267"
  (xorg-configuration-keyboard-layout %config-xorg-keyboard-layout-1)
  (let ((os (operating-system
              (host-name "test")
              (bootloader
                (bootloader-configuration
                  (bootloader grub-bootloader)
                  (targets '("/dev/sdX"))))
              (file-systems
               (cons
                (file-system
                  (device (file-system-label "my-root"))
                  (mount-point "/")
                  (type "ext4"))
                %base-file-systems))
              (services
               (cons*
                (service lightdm-service-type
                         (lightdm-configuration
                           (xorg-configuration
                             %config-xorg-keyboard-layout-1)))
                (modify-services %desktop-services
                  (delete gdm-service-type)))))))
    (xorg-configuration-keyboard-layout
     (lightdm-configuration-xorg-configuration
      (service-value
       (fold-services
        (operating-system-services os)
        #:target-type lightdm-service-type))))))

(test-end "merge-xorg-configurations")