services: gdm: Make dependencies explicit.

This commit removes the remaining implicit dependencies that the GDM
service had on the GNOME Desktop service.

* gnu/services/xorg.scm (gdm-configuration): Add a gnome-shell-assets
field for specifying any icons or fonts that the GNOME Shell theme
needs.
(gdm-shepherd-service): Remove environment variables pointing to
'/run/current-system' and set XDG_DATA_DIRS so that it points to
'gnome-shell' and its assets.
(gdm-service-type): Extend 'profile-service-type' to ensure that
necessary fonts are installed in the system profile.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Timothy Sample 2019-02-13 14:22:20 -05:00 committed by Ludovic Courtès
parent 1f564c1573
commit 7e61419892
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -28,6 +28,7 @@ (define-module (gnu services xorg)
#:use-module ((gnu packages base) #:select (canonical-package)) #:use-module ((gnu packages base) #:select (canonical-package))
#:use-module (gnu packages guile) #:use-module (gnu packages guile)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (gnu packages fonts)
#:use-module (gnu packages gl) #:use-module (gnu packages gl)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages display-managers) #:use-module (gnu packages display-managers)
@ -642,6 +643,8 @@ (define-record-type* <gdm-configuration>
(auto-login? gdm-configuration-auto-login? (default #f)) (auto-login? gdm-configuration-auto-login? (default #f))
(dbus-daemon gdm-configuration-dbus-daemon (default dbus-daemon-wrapper)) (dbus-daemon gdm-configuration-dbus-daemon (default dbus-daemon-wrapper))
(default-user gdm-configuration-default-user (default #f)) (default-user gdm-configuration-default-user (default #f))
(gnome-shell-assets gdm-configuration-gnome-shell-assets
(default (list adwaita-icon-theme font-cantarell)))
(x-server gdm-configuration-x-server (x-server gdm-configuration-x-server
(default (xorg-wrapper)))) (default (xorg-wrapper))))
@ -714,13 +717,16 @@ (define (gdm-shepherd-service config)
(string-append (string-append
"GDM_X_SERVER=" "GDM_X_SERVER="
#$(gdm-configuration-x-server config)) #$(gdm-configuration-x-server config))
;; XXX: GDM requires access to a handful of (string-append
;; programs and components from Gnome (gnome-shell, "XDG_DATA_DIRS="
;; dbus, and gnome-session among others). The ((lambda (ls) (string-join ls ":"))
;; following variables only work provided Gnome is (map (lambda (path)
;; installed. (string-append path "/share"))
"XDG_DATA_DIRS=/run/current-system/profile/share" ;; XXX: Remove gnome-shell below when GDM
"PATH=/run/current-system/profile/bin")))) ;; can depend on GNOME Shell directly.
(cons #$gnome-shell
'#$(gdm-configuration-gnome-shell-assets
config)))))))))
(stop #~(make-kill-destructor)) (stop #~(make-kill-destructor))
(respawn? #t)))) (respawn? #t))))
@ -733,6 +739,8 @@ (define gdm-service-type
(const %gdm-accounts)) (const %gdm-accounts))
(service-extension pam-root-service-type (service-extension pam-root-service-type
gdm-pam-service) gdm-pam-service)
(service-extension profile-service-type
gdm-configuration-gnome-shell-assets)
(service-extension dbus-root-service-type (service-extension dbus-root-service-type
(compose list (compose list
gdm-configuration-gdm)))) gdm-configuration-gdm))))