aboutsummaryrefslogtreecommitdiff
path: root/gnu/services.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/services.scm')
-rw-r--r--gnu/services.scm8
1 files changed, 8 insertions, 0 deletions
diff --git a/gnu/services.scm b/gnu/services.scm
index 5479bfae19..7e322c50b0 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -50,6 +50,7 @@
service-kind
service-parameters
+ simple-service
modify-services
service-back-edges
fold-services
@@ -141,6 +142,13 @@
(type service-kind)
(parameters service-parameters))
+(define (simple-service name target value)
+ "Return a service that extends TARGET with VALUE. This works by creating a
+singleton service type NAME, of which the returned service is an instance."
+ (let* ((extension (service-extension target identity))
+ (type (service-type (name name)
+ (extensions (list extension)))))
+ (service type value)))
(define-syntax %modify-service
(syntax-rules (=>)