summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/freedesktop.scm14
-rw-r--r--gnu/services/desktop.scm27
2 files changed, 19 insertions, 22 deletions
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 5252ddbd81..f75f5fd938 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2015 Andy Wingo <wingo@pobox.com>
-;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
@@ -169,7 +169,17 @@ the freedesktop.org XDG Base Directory specification.")
;; XXX: fail with:
;; src/shared/clean-ipc.c:315: undefined reference to `mq_unlink'
"LDFLAGS=-lrt")
- #:make-flags '("PKTTYAGENT=/run/current-system/profile/bin/pkttyagent")))
+ #:make-flags '("PKTTYAGENT=/run/current-system/profile/bin/pkttyagent")
+
+ #:phases (modify-phases %standard-phases
+ (add-before 'build 'fix-service-file
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Fix the file name of the 'elogind' binary in the D-Bus
+ ;; '.service' file.
+ (substitute* "src/login/org.freedesktop.login1.service"
+ (("^Exec=.*")
+ (string-append "Exec=" (assoc-ref %outputs "out")
+ "/libexec/elogind/elogind\n"))))))))
(native-inputs
`(("intltool" ,intltool)
("gettext" ,gnu-gettext)
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 02bcf1b19f..c20569ffde 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -647,22 +647,11 @@ include the @command{udisksctl} command, part of UDisks, and GNOME Disks."
("HybridSleepState" (sleep-list elogind-hybrid-sleep-state))
("HybridSleepMode" (sleep-list elogind-hybrid-sleep-mode))))
-(define (elogind-shepherd-service config)
- "Return a shepherd service for elogind, using @var{config}."
- ;; TODO: We could probably rely on service activation but the '.service'
- ;; file currently contains an erroneous 'Exec' line.
- (let ((config-file (elogind-configuration-file config))
- (elogind (elogind-package config)))
- (list (shepherd-service
- (documentation "Run the elogind login and seat management service.")
- (provision '(elogind))
- (requirement '(dbus-system))
-
- (start #~(make-forkexec-constructor
- (list (string-append #$elogind "/libexec/elogind/elogind"))
- #:environment-variables
- (list (string-append "ELOGIND_CONF_FILE=" #$config-file))))
- (stop #~(make-kill-destructor))))))
+(define (elogind-dbus-service config)
+ (list (wrapped-dbus-service (elogind-package config)
+ "libexec/elogind/elogind"
+ "ELOGIND_CONF_FILE"
+ (elogind-configuration-file config))))
(define (pam-extension-procedure config)
"Return an extension for PAM-ROOT-SERVICE-TYPE that ensures that all the PAM
@@ -683,10 +672,8 @@ seats.)"
(define elogind-service-type
(service-type (name 'elogind)
(extensions
- (list (service-extension shepherd-root-service-type
- elogind-shepherd-service)
- (service-extension dbus-root-service-type
- (compose list elogind-package))
+ (list (service-extension dbus-root-service-type
+ elogind-dbus-service)
(service-extension udev-service-type
(compose list elogind-package))
(service-extension polkit-service-type