M gnu/services/desktop.scm => gnu/services/desktop.scm +14 -7
@@ 216,6 216,7 @@
seatd-configuration
seatd-service-type
+ login-manager-service-type-for-system
%desktop-services))
;;; Commentary:
@@ 2510,6 2511,18 @@ applications needing access to be root.")
(service-extension shepherd-root-service-type seatd-shepherd-service)))
(default-value (seatd-configuration))))
+(define* (login-manager-service-type-for-system
+ #:optional
+ (system (or (%current-target-system)
+ (%current-system))))
+ "Return a workable login-manager service type that is part of %desktop-services
+on the given SYSTEM."
+ ;; FIXME: Since GDM depends on more dependencies that do not build on i686,
+ ;; keep SDDM on it for the time being.
+ (if (target-64bit? system)
+ gdm-service-type
+ sddm-service-type))
+
;;;
;;; The default set of desktop services.
@@ 2520,13 2533,7 @@ applications needing access to be root.")
(%current-system))))
;; List of services typically useful for a "desktop" use case.
- ;; Since GDM depends on Rust and Rust is not available on all platforms,
- ;; use SDDM as the fall-back display manager.
- ;; TODO: Switch the condition to use (supported-package? "rust") and make
- ;; a news entry about the change.
- (cons* (if (string-prefix? "x86_64" system)
- (service gdm-service-type)
- (service sddm-service-type))
+ (cons* (service (login-manager-service-type-for-system))
;; Screen lockers are a pretty useful thing and these are small.
(service screen-locker-service-type
M gnu/services/xorg.scm => gnu/services/xorg.scm +2 -7
@@ 43,6 43,7 @@
#:use-module (gnu system privilege)
#:use-module (gnu services base)
#:use-module (gnu services dbus)
+ #:use-module (gnu services desktop)
#:use-module (gnu packages base)
#:use-module (gnu packages guile)
#:use-module (gnu packages xorg)
@@ 1379,16 1380,10 @@ polkit.addRule(function(action, subject) {
"Run the GNOME Desktop Manager (GDM), a program that allows
you to log in in a graphical session, whether or not you use GNOME."))))
-;; Since GDM depends on Rust and Rust is not available on all platforms,
-;; use SDDM as the fall-back display manager.
-;; TODO: Switch the condition to take into account if Rust is supported and
-;; match the configuration in desktop-services-for-system.
(define* (set-xorg-configuration config
#:optional
(login-manager-service-type
- (if (target-x86-64?)
- gdm-service-type
- sddm-service-type)))
+ (login-manager-service-type-for-system)))
"Tell the log-in manager (of type @var{login-manager-service-type}) to use
@var{config}, an <xorg-configuration> record."
(simple-service 'set-xorg-configuration
M gnu/system/examples/desktop.tmpl => gnu/system/examples/desktop.tmpl +10 -8
@@ 3,7 3,8 @@
;; for a "desktop" setup with GNOME and Xfce where the
;; root partition is encrypted with LUKS, and a swap file.
-(use-modules (gnu) (gnu system nss) (guix utils))
+(use-modules (gnu) (gnu system nss) (guix utils)
+ (guix packages))
(use-service-modules desktop sddm xorg)
(use-package-modules gnome)
@@ 73,7 74,10 @@
;; by clicking the gear. Use the "desktop" services, which
;; include the X11 log-in service, networking with
;; NetworkManager, and more.
- (services (if (target-x86-64?)
+ (services (if (supported-package? gnome
+ (or (and=> (%current-target-system)
+ gnu-triplet->nix-system)
+ (%current-system)))
(append (list (service gnome-desktop-service-type)
(service xfce-desktop-service-type)
(set-xorg-configuration
@@ 81,16 85,14 @@
(keyboard-layout keyboard-layout))))
%desktop-services)
- ;; FIXME: Since GDM depends on Rust (gdm -> gnome-shell -> gjs
- ;; -> mozjs -> rust) and Rust is currently unavailable on
- ;; non-x86_64 platforms, we use SDDM and Mate here instead of
- ;; GNOME and GDM.
+ ;; FIXME: Since Gnome depends on Rust and Rust is currently
+ ;; unavailable on some platforms, we use MATE here instead of
+ ;; GNOME.
(append (list (service mate-desktop-service-type)
(service xfce-desktop-service-type)
(set-xorg-configuration
(xorg-configuration
- (keyboard-layout keyboard-layout))
- sddm-service-type))
+ (keyboard-layout keyboard-layout))))
%desktop-services)))
;; Allow resolution of '.local' host names with mDNS.