guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: services: gdm: Include user profile in D-Bus paths.


From: guix-commits
Subject: 01/01: services: gdm: Include user profile in D-Bus paths.
Date: Sat, 11 May 2019 13:42:15 -0400 (EDT)

samplet pushed a commit to branch master
in repository guix.

commit dcb3a0fe0a086b4762a721e9b1da64826d5160d0
Author: Timothy Sample <address@hidden>
Date:   Wed May 8 09:13:14 2019 -0400

    services: gdm: Include user profile in D-Bus paths.
    
    This partially addresses <https://bugs.gnu.org/35267>.
    
    * gnu/services/xorg.scm (dbus-daemon-wrapper): When available, include
    directories from '~/.guix-profile' in the search paths of the D-Bus
    daemon.
---
 gnu/services/xorg.scm | 40 ++++++++++++++++++++++++++++++++--------
 1 file changed, 32 insertions(+), 8 deletions(-)

diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 3a9fa53..0a38b40 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -774,14 +774,38 @@ the GNOME desktop environment.")
          (shell (file-append shadow "/sbin/nologin")))))
 
 (define dbus-daemon-wrapper
-  (program-file "gdm-dbus-wrapper"
-                #~(begin
-                    (setenv "XDG_CONFIG_DIRS"
-                            "/run/current-system/profile/etc/xdg")
-                    (setenv "XDG_DATA_DIRS"
-                            "/run/current-system/profile/share")
-                    (apply execl (string-append #$dbus "/bin/dbus-daemon")
-                           (program-arguments)))))
+  (program-file
+   "gdm-dbus-wrapper"
+   #~(begin
+       (use-modules (srfi srfi-26))
+
+       (define system-profile
+         "/run/current-system/profile")
+
+       (define user-profile
+         (and=> (getpw (getuid))
+                (lambda (pw)
+                  (string-append (passwd:dir pw) "/.guix-profile"))))
+
+       ;; If we are able to find the user's profile, we can add it to
+       ;; the search paths set below.  We need to do this so that D-Bus
+       ;; can start services installed by the user.  This allows
+       ;; applications that require session D-Bus services (e.g,
+       ;; 'evolution') to work even if those services are only available
+       ;; in the user's profile.  See <https://bugs.gnu.org/35267>.
+       (define profiles
+         (if user-profile
+             (list user-profile system-profile)
+             (list system-profile)))
+
+       (setenv "XDG_CONFIG_DIRS"
+               (string-join (map (cut string-append <> "/etc/xdg") profiles)
+                            ":"))
+       (setenv "XDG_DATA_DIRS"
+               (string-join (map (cut string-append <> "/share") profiles)
+                            ":"))
+       (apply execl (string-append #$dbus "/bin/dbus-daemon")
+              (program-arguments)))))
 
 (define-record-type* <gdm-configuration>
   gdm-configuration make-gdm-configuration



reply via email to

[Prev in Thread] Current Thread [Next in Thread]