Subject: [PATCH 8/8] services: gdm: Allow for custom X session scripts.

From: Timothy Sample <[email-masked]>
Date: Wed, 13 Feb 2019 14:22:21 -0500

* gnu/packages/gnome.scm (gdm)[arguments]: Update pre-configure phase so
that GDM runs an X session script specified by the variable
GDM_X_SESSION; remove the '--enable-gdm-xsession' configuration
option.
* gnu/services/xorg.scm (<gdm-configuration>): Add 'x-session' field.
(gdm-shepherd-service): Set the GDM_X_SESSION variable.
---
 gnu/packages/gnome.scm | 9 ++++-----
 gnu/services/xorg.scm  | 7 ++++++-
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 3c09d6b30a..a4563617d9 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -5328,10 +5328,6 @@ libxml2.")
          ;; service for TTY 1 before starting GDM).
          "--with-initial-vt=7"
 
-         ;; By default, GDM expects distributions to install a custom Xsession
-         ;; script. It provides a generic one if --enable-gdm-xsession is set.
-         "--enable-gdm-xsession"
-
          ;; Use '/etc/environment' for locale settings instead of the
          ;; systemd-specific '/etc/locale.conf'.
          "--with-lang-file=/etc/environment"
@@ -5381,6 +5377,7 @@ libxml2.")
             (let ((propagate '("GDM_CUSTOM_CONF"
                                "GDM_DBUS_DAEMON"
                                "GDM_X_SERVER"
+                               "GDM_X_SESSION"
                                ;; XXX: Remove this once GNOME Shell is
                                ;; a dependency of GDM.
                                "XDG_DATA_DIRS")))
@@ -5408,7 +5405,9 @@ libxml2.")
               (("\"dbus-daemon\"")
                "g_getenv (\"GDM_DBUS_DAEMON\")")
               (("X_SERVER")
-               "g_getenv (\"GDM_X_SERVER\")"))
+               "g_getenv (\"GDM_X_SERVER\")")
+              (("GDMCONFDIR \"/Xsession\"")
+               "g_getenv (\"GDM_X_SESSION\")"))
             ;; Use an absolute path for GNOME Session.
             (substitute* "daemon/gdm-launch-environment.c"
               (("\"gnome-session\"")
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 4e6f5ad44f..f7d07b309e 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -646,7 +646,9 @@ makes the good ol' XlockMore usable."
   (gnome-shell-assets gdm-configuration-gnome-shell-assets
                       (default (list adwaita-icon-theme font-cantarell)))
   (x-server gdm-configuration-x-server
-            (default (xorg-wrapper))))
+            (default (xorg-wrapper)))
+  (x-session gdm-configuration-x-session
+             (default (xinitrc))))
 
 (define (gdm-configuration-file config)
   (mixed-text-file "gdm-custom.conf"
@@ -717,6 +719,9 @@ makes the good ol' XlockMore usable."
                            (string-append
                             "GDM_X_SERVER="
                             #$(gdm-configuration-x-server config))
+                           (string-append
+                            "GDM_X_SESSION="
+                            #$(gdm-configuration-x-session config))
                            (string-append
                             "XDG_DATA_DIRS="
                             ((lambda (ls) (string-join ls ":"))
-- 
2.20.1