[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/02: services: elogind: Start from the Shepherd.
From: |
Ludovic Courtès |
Subject: |
01/02: services: elogind: Start from the Shepherd. |
Date: |
Tue, 11 Jul 2017 05:11:57 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit 94a881178af9a9a918ce6de55641daa245c92e73
Author: Ludovic Courtès <address@hidden>
Date: Tue Jul 11 10:54:12 2017 +0200
services: elogind: Start from the Shepherd.
Fixes <http://bugs.gnu.org/27580>.
Reported by William <address@hidden>.
* gnu/services/desktop.scm (elogind-shepherd-service): New procedure.
(elogind-service-type): Extend SHEPHERD-ROOT-SERVICE-TYPE.
---
gnu/services/desktop.scm | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 3604958..50a561b 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <address@hidden>
+;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <address@hidden>
;;; Copyright © 2015 Andy Wingo <address@hidden>
;;; Copyright © 2015 Mark H Weaver <address@hidden>
;;; Copyright © 2016 Sou Bunnbu <address@hidden>
@@ -653,6 +653,20 @@ seats.)"
(inherit pam)
(session (cons pam-elogind (pam-service-session pam)))))))
+(define (elogind-shepherd-service config)
+ "Return a Shepherd service to start elogind according to @var{config}."
+ (list (shepherd-service
+ (requirement '(dbus-system))
+ (provision '(elogind))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append (elogind-package config)
+ "/libexec/elogind/elogind"))
+ #:environment-variables
+ (list (string-append "ELOGIND_CONF_FILE="
+ #$(elogind-configuration-file
+ config)))))
+ (stop #~(make-kill-destructor)))))
+
(define elogind-service-type
(service-type (name 'elogind)
(extensions
@@ -663,6 +677,12 @@ seats.)"
(service-extension polkit-service-type
(compose list elogind-package))
+ ;; Start elogind from the Shepherd rather than waiting
+ ;; for bus activation. This ensures that it can handle
+ ;; events like lid close, etc.
+ (service-extension shepherd-root-service-type
+ elogind-shepherd-service)
+
;; Provide the 'loginctl' command.
(service-extension profile-service-type
(compose list elogind-package))