profiles: Add fast path for 'xdg-mime-database' hook.
[jackhill/guix/guix.git] / gnu / services / nfs.scm
index cbaa97b..859097e 100644 (file)
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   nfs-configuration?
   (nfs-utils           nfs-configuration-nfs-utils
                        (default nfs-utils))
-  (nfs-version         nfs-configuration-nfs-version
-                       (default #f)) ; string
+  (nfs-versions        nfs-configuration-nfs-versions
+                       (default '("4.2" "4.1" "4.0")))
   (exports             nfs-configuration-exports
                        (default '()))
   (rpcmountd-port      nfs-configuration-rpcmountd-port
                        (default 2049))
   (nfsd-threads        nfs-configuration-nfsd-threads
                        (default 8))
+  (nfsd-tcp?           nfs-configuration-nfsd-tcp?
+                       (default #t))
+  (nfsd-udp?           nfs-configuration-nfsd-udp?
+                       (default #f))
   (pipefs-directory    nfs-configuration-pipefs-directory
                        (default default-pipefs-directory))
   ;; List of modules to debug; any of nfsd, nfs, rpc, idmap, statd, or mountd.
 (define (nfs-shepherd-services config)
   "Return a list of <shepherd-service> for the NFS daemons with CONFIG."
   (match-record config <nfs-configuration>
-    (nfs-utils nfs-version exports
+    (nfs-utils nfs-versions exports
                rpcmountd-port rpcstatd-port nfsd-port nfsd-threads
+               nfsd-tcp? nfsd-udp?
                pipefs-directory debug)
     (list (shepherd-service
            (documentation "Mount the nfsd pseudo file system.")
            (requirement '(/proc/fs/nfsd rpc.statd networking))
            (start
             #~(lambda _
-                (zero? (system* #$(file-append nfs-utils "/sbin/rpc.nfsd")
-                                #$@(if (member 'nfsd debug)
-                                       '("--debug")
-                                       '())
-                                "--port" #$(number->string nfsd-port)
-                                #$@(if nfs-version
-                                       '("--nfs-version" nfs-version)
-                                       '())
-                                #$(number->string nfsd-threads)))))
+                (zero? (apply system* #$(file-append nfs-utils "/sbin/rpc.nfsd")
+                              (list
+                               #$@(if (member 'nfsd debug)
+                                      '("--debug")
+                                      '())
+                               "--port" #$(number->string nfsd-port)
+                               #$@(map (lambda (version)
+                                         (string-append "--nfs-version=" version))
+                                       nfs-versions)
+                               #$(number->string nfsd-threads)
+                               #$(if nfsd-tcp?
+                                     "--tcp"
+                                     "--no-tcp")
+                               #$(if nfsd-udp?
+                                     "--udp"
+                                     "--no-udp"))))))
            (stop
             #~(lambda _
                 (zero?