diff options
author | Ricardo Wurmus <rekado@elephly.net> | 2020-01-03 18:16:13 +0100 |
---|---|---|
committer | Ricardo Wurmus <rekado@elephly.net> | 2020-01-08 23:56:16 +0100 |
commit | a6bdca6b9b7a5de8244b46d0e16047f6deb31272 (patch) | |
tree | f291883589b12ca51f3e8390e3b480628f77034a | |
parent | 2a23942e3fbda98a9457304785481dd54302714a (diff) | |
download | guix-a6bdca6b9b7a5de8244b46d0e16047f6deb31272.tar.gz |
services: nfs: Allow gss-service-type to be extended.
* gnu/services/nfs.scm (gss-service-type): Rewrite using SERVICE-TYPE to add ability to extend the service.
-rw-r--r-- | gnu/services/nfs.scm | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/gnu/services/nfs.scm b/gnu/services/nfs.scm index 054dad08b6..cd7e8fab01 100644 --- a/gnu/services/nfs.scm +++ b/gnu/services/nfs.scm @@ -136,26 +136,39 @@ (default nfs-utils))) (define gss-service-type - (shepherd-service-type - 'gss - (lambda (config) - (define nfs-utils - (gss-configuration-gss config)) - - (define pipefs-directory - (gss-configuration-pipefs-directory config)) - - (define gss-command - #~(list (string-append #$nfs-utils "/sbin/rpc.gssd") "-f" - "-p" #$pipefs-directory)) - - (shepherd-service - (documentation "Start the RPC GSS daemon.") - (requirement '(rpcbind-daemon rpc-pipefs)) - (provision '(gss-daemon)) - - (start #~(make-forkexec-constructor #$gss-command)) - (stop #~(make-kill-destructor)))))) + (let ((proc + (lambda (config) + (define nfs-utils + (gss-configuration-gss config)) + + (define pipefs-directory + (gss-configuration-pipefs-directory config)) + + (define gss-command + #~(list (string-append #$nfs-utils "/sbin/rpc.gssd") "-f" + "-p" #$pipefs-directory)) + + (shepherd-service + (documentation "Start the RPC GSS daemon.") + (requirement '(rpcbind-daemon rpc-pipefs)) + (provision '(gss-daemon)) + + (start #~(make-forkexec-constructor #$gss-command)) + (stop #~(make-kill-destructor)))))) + (service-type + (name 'gss) + (extensions + (list (service-extension shepherd-root-service-type + (compose list proc)))) + ;; We use the extensions feature to allow other services to automatically + ;; configure and start this service. Only one value can be provided. We + ;; override it with the value returned by the extending service. + (compose identity) + (extend (lambda (config values) + (match values + ((first . rest) first) + (_ config)))) + (default-value (gss-configuration))))) |