services: %desktop-services: Use SDDM rather than GDM on non-x86_64.

This works around the fact that Rust is currently unavailable in Guix on
platforms other than x86_64-linux:

  https://lists.gnu.org/archive/html/guix-devel/2021-11/msg00197.html

* gnu/services/desktop.scm (desktop-services-for-system): New
procedure.
(%desktop-services): Turn into a macro.
This commit is contained in:
Ludovic Courtès 2021-12-08 15:41:00 +01:00
parent 24ead149db
commit 49599fab56
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014-2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com> ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
@ -40,6 +40,7 @@ (define-module (gnu services desktop)
#:use-module (gnu services sound) #:use-module (gnu services sound)
#:use-module ((gnu system file-systems) #:use-module ((gnu system file-systems)
#:select (%elogind-file-systems file-system)) #:select (%elogind-file-systems file-system))
#:autoload (gnu services sddm) (sddm-service-type)
#:use-module (gnu system) #:use-module (gnu system)
#:use-module (gnu system setuid) #:use-module (gnu system setuid)
#:use-module (gnu system shadow) #:use-module (gnu system shadow)
@ -1187,9 +1188,17 @@ (define polkit-wheel-service
;;; The default set of desktop services. ;;; The default set of desktop services.
;;; ;;;
(define %desktop-services (define* (desktop-services-for-system #:optional
(system (or (%current-target-system)
(%current-system))))
;; List of services typically useful for a "desktop" use case. ;; List of services typically useful for a "desktop" use case.
(cons* (service gdm-service-type)
;; Since GDM depends on Rust (gdm -> gnome-shell -> gjs -> mozjs -> rust)
;; and Rust is currently unavailable on non-x86_64 platforms, default to
;; SDDM there (FIXME).
(cons* (if (string-prefix? "x86_64" system)
(service gdm-service-type)
(service sddm-service-type))
;; Screen lockers are a pretty useful thing and these are small. ;; Screen lockers are a pretty useful thing and these are small.
(screen-locker-service slock) (screen-locker-service slock)
@ -1248,4 +1257,7 @@ (define %desktop-services
%base-services)) %base-services))
(define-syntax %desktop-services
(identifier-syntax (desktop-services-for-system)))
;;; desktop.scm ends here ;;; desktop.scm ends here