guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

05/08: services: nfs: Allow idmap-service-type to be extended.


From: guix-commits
Subject: 05/08: services: nfs: Allow idmap-service-type to be extended.
Date: Wed, 8 Jan 2020 18:07:57 -0500 (EST)

rekado pushed a commit to branch master
in repository guix.

commit af32ea35830383deb3b1540ca1b829eb53c6fe0d
Author: Ricardo Wurmus <address@hidden>
AuthorDate: Fri Jan 3 18:13:38 2020 +0100

    services: nfs: Allow idmap-service-type to be extended.
    
    * gnu/services/nfs.scm (idmap-service-type): Rewrite using SERVICE-TYPE to 
add
    ability to extend the service.
---
 gnu/services/nfs.scm | 67 ++++++++++++++++++++++++++++++----------------------
 1 file changed, 39 insertions(+), 28 deletions(-)

diff --git a/gnu/services/nfs.scm b/gnu/services/nfs.scm
index 451020b..9fb95bd 100644
--- a/gnu/services/nfs.scm
+++ b/gnu/services/nfs.scm
@@ -170,37 +170,48 @@
                          (default nfs-utils)))
 
 (define idmap-service-type
-  (shepherd-service-type
-   'idmap
-   (lambda (config)
-
-     (define nfs-utils
-       (idmap-configuration-nfs-utils config))
+  (let ((proc
+         (lambda (config)
 
-     (define pipefs-directory
-       (idmap-configuration-pipefs-directory config))
+           (define nfs-utils
+             (idmap-configuration-nfs-utils config))
 
-     (define domain (idmap-configuration-domain config))
+           (define pipefs-directory
+             (idmap-configuration-pipefs-directory config))
 
-     (define (idmap-config-file config)
-       (plain-file "idmapd.conf"
-                   (string-append
-                    "\n[General]\n"
-                    (if domain
-                        (format #f "Domain = ~a\n" domain))
-                    "\n[Mapping]\n"
-                    "Nobody-User = nobody\n"
-                    "Nobody-Group = nogroup\n")))
+           (define domain (idmap-configuration-domain config))
 
-     (define idmap-command
-       #~(list (string-append #$nfs-utils "/sbin/rpc.idmapd") "-f"
-               "-p" #$pipefs-directory
-               "-c" #$(idmap-config-file config)))
+           (define (idmap-config-file config)
+             (plain-file "idmapd.conf"
+                         (string-append
+                          "\n[General]\n"
+                          (if domain
+                              (format #f "Domain = ~a\n" domain)
+                              "")
+                          "\n[Mapping]\n"
+                          "Nobody-User = nobody\n"
+                          "Nobody-Group = nogroup\n")))
 
-     (shepherd-service
-       (documentation "Start the RPC IDMAP daemon.")
-       (requirement '(rpcbind-daemon rpc-pipefs))
-       (provision '(idmap-daemon))
-       (start #~(make-forkexec-constructor #$idmap-command))
-       (stop #~(make-kill-destructor))))))
+           (define idmap-command
+             #~(list (string-append #$nfs-utils "/sbin/rpc.idmapd") "-f"
+                     "-p" #$pipefs-directory
+                     ;; TODO: this is deprecated
+                     "-c" #$(idmap-config-file config)))
 
+           (shepherd-service
+            (documentation "Start the RPC IDMAP daemon.")
+            (requirement '(rpcbind-daemon rpc-pipefs))
+            (provision '(idmap-daemon))
+            (start #~(make-forkexec-constructor #$idmap-command))
+            (stop #~(make-kill-destructor))))))
+    (service-type
+     (name 'idmap)
+     (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) (first values)))
+     (default-value (idmap-configuration)))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]