guix-commits
[Top][All Lists]
Advanced

[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))



reply via email to

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