diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 3a250eeaa8..6b26da7316 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -45,6 +45,7 @@ #:use-module (guix packages) #:use-module (guix utils) #:use-module (guix download) + #:use-module ((guix gexp) #:select (local-file)) #:use-module (guix git-download) #:use-module (guix build-system cmake) #:use-module (guix build-system emacs) @@ -192,6 +193,7 @@ and provides a \"top-like\" mode (monitoring).") (build-system gnu-build-system) (arguments '(#:configure-flags '("--localstatedir=/var"))) + (replacement shepherd-next) (native-inputs `(("pkg-config" ,pkg-config) @@ -214,6 +216,12 @@ interface and is based on GNU Guile.") (home-page "https://www.gnu.org/software/shepherd/") (properties '((ftp-server . "alpha.gnu.org"))))) +(define-public shepherd-next + (package + (inherit shepherd) + (version "0.5.1") + (source (local-file "/data/src/shepherd/shepherd-0.6.0-pre1.tar.gz")))) + (define-public daemontools (package (name "daemontools") diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 12d649f542..cf7e64a783 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2018 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2019 Ludovic Courtès ;;; Copyright © 2017 Clément Lassieur ;;; Copyright © 2018 Carlo Zancanaro ;;; @@ -44,6 +44,7 @@ shepherd-service-provision shepherd-service-canonical-name shepherd-service-requirement + shepherd-service-one-shot? shepherd-service-respawn? shepherd-service-start shepherd-service-stop @@ -149,6 +150,8 @@ DEFAULT is given, use it as the service's default value." (provision shepherd-service-provision) ;list of symbols (requirement shepherd-service-requirement ;list of symbols (default '())) + (one-shot? shepherd-service-one-shot? ;Boolean + (default #f)) (respawn? shepherd-service-respawn? ;Boolean (default #t)) (start shepherd-service-start) ;g-expression (procedure) @@ -238,6 +241,7 @@ stored." #:docstring '#$(shepherd-service-documentation service) #:provides '#$(shepherd-service-provision service) #:requires '#$(shepherd-service-requirement service) + #:one-shot? '#$(shepherd-service-one-shot? service) #:respawn? '#$(shepherd-service-respawn? service) #:start #$(shepherd-service-start service) #:stop #$(shepherd-service-stop service) diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm index 7dc36f4a45..13b8b14095 100644 --- a/gnu/system/shadow.scm +++ b/gnu/system/shadow.scm @@ -323,6 +323,7 @@ accounts among ACCOUNTS+GROUPS." (list (shepherd-service (requirement '(file-systems)) (provision '(user-homes)) + (one-shot? #t) (modules '((gnu build activation) (gnu system accounts))) (start (with-imported-modules (source-module-closure @@ -332,9 +333,7 @@ accounts among ACCOUNTS+GROUPS." (activate-user-home (map sexp->user-account (list #$@(map user-account->gexp accounts)))) - #f))) ;stop - (stop #~(const #f)) - (respawn? #f) + #t))) ;success (documentation "Create user home directories.")))) (define (shells-file shells)