diff --git a/gnu/services/herd.scm b/gnu/services/herd.scm index e16d51b9d..7614c7f9f 100644 --- a/gnu/services/herd.scm +++ b/gnu/services/herd.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Ludovic Courtès +;;; Copyright © 2016, 2017 Ludovic Courtès ;;; Copyright © 2017 Mathieu Othacehe ;;; ;;; This file is part of GNU Guix. @@ -186,7 +186,11 @@ of pairs." "Return the list of currently defined Shepherd services, represented as objects. Return #f if the list of services could not be obtained." - (with-shepherd-action 'root ('status) services + (with-shepherd-action 'root ('status) results + ;; We get a list of results, one for each service with the name 'root'. + ;; In practice there's only one such service though. + (match results + ((services _ ...) (match services ((('service ('version 0 _ ...) _ ...) ...) (map (lambda (service) @@ -194,22 +198,22 @@ obtained." (live-service provides requires running))) services)) (x - #f)))) + #f)))))) (define (unload-service service) "Unload SERVICE, a symbol name; return #t on success." (with-shepherd-action 'root ('unload (symbol->string service)) result - result)) + (first result))) (define (%load-file file) "Load FILE in the Shepherd." (with-shepherd-action 'root ('load file) result - result)) + (first result))) (define (eval-there exp) "Eval EXP in the Shepherd." (with-shepherd-action 'root ('eval (object->string exp)) result - result)) + (first result))) (define (load-services files) "Load and register the services from FILES, where FILES contain code that