@@ -4,6 +4,7 @@
;;; Copyright © 2018 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,6 +22,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu services shepherd)
+ #:use-module (guix diagnostics)
#:use-module (guix ui)
#:use-module (guix sets)
#:use-module (guix gexp)
@@ -186,12 +188,21 @@ (define %default-modules
((guix build utils) #:hide (delete))
(guix build syscalls)))
+(define (sanitize-shepherd-service-provision expr)
+ (match expr
+ (((? symbol?) ..1) expr)
+ (_
+ (raise
+ (formatted-message
+ (G_ "'provision' must be a non-empty list of symbols"))))))
+
(define-record-type* <shepherd-service>
shepherd-service make-shepherd-service
shepherd-service?
(documentation shepherd-service-documentation ;string
(default "[No documentation.]"))
- (provision shepherd-service-provision) ;list of symbols
+ (provision shepherd-service-provision ;list of symbols
+ (sanitize sanitize-shepherd-service-provision))
(requirement shepherd-service-requirement ;list of symbols
(default '()))
(one-shot? shepherd-service-one-shot? ;Boolean