diff options
| author | Ricardo Wurmus <rekado@elephly.net> | 2020-01-03 17:50:45 +0100 |
|---|---|---|
| committer | Ricardo Wurmus <rekado@elephly.net> | 2020-01-08 23:56:16 +0100 |
| commit | 25c8c8cd4f384f9da08ea277bc5da16ca26128de (patch) | |
| tree | ab2e23784cf99b0f5316fcc3d05a3ed7ceceac0f /gnu | |
| parent | ba1808d5e7342ec749b006276bece6499cfaa4ba (diff) | |
services: nfs: Allow pipefs-service-type to be extended.
* gnu/services/nfs.scm (pipefs-service-type): Rewrite using SERVICE-TYPE to
add ability to extend the service.
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/services/nfs.scm | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/gnu/services/nfs.scm b/gnu/services/nfs.scm index 0681e764ec3..1b5dcb0e974 100644 --- a/gnu/services/nfs.scm +++ b/gnu/services/nfs.scm | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #:use-module (gnu packages linux) | 24 | #:use-module (gnu packages linux) |
| 25 | #:use-module (guix) | 25 | #:use-module (guix) |
| 26 | #:use-module (guix records) | 26 | #:use-module (guix records) |
| 27 | #:use-module (srfi srfi-1) | ||
| 27 | #:use-module (ice-9 match) | 28 | #:use-module (ice-9 match) |
| 28 | #:use-module (gnu build file-systems) | 29 | #:use-module (gnu build file-systems) |
| 29 | #:export (rpcbind-service-type | 30 | #:export (rpcbind-service-type |
| @@ -96,23 +97,33 @@ | |||
| 96 | (default default-pipefs-directory))) | 97 | (default default-pipefs-directory))) |
| 97 | 98 | ||
| 98 | (define pipefs-service-type | 99 | (define pipefs-service-type |
| 99 | (shepherd-service-type | 100 | (let ((proc |
| 100 | 'pipefs | 101 | (lambda (config) |
| 101 | (lambda (config) | 102 | (define pipefs-directory (pipefs-configuration-mount-point config)) |
| 102 | (define pipefs-directory (pipefs-configuration-mount-point config)) | ||
| 103 | 103 | ||
| 104 | (shepherd-service | 104 | (shepherd-service |
| 105 | (documentation "Mount the pipefs pseudo file system.") | 105 | (documentation "Mount the pipefs pseudo file system.") |
| 106 | (provision '(rpc-pipefs)) | 106 | (provision '(rpc-pipefs)) |
| 107 | 107 | ||
| 108 | (start #~(lambda () | 108 | (start #~(lambda () |
| 109 | (mkdir-p #$pipefs-directory) | 109 | (mkdir-p #$pipefs-directory) |
| 110 | (mount "rpc_pipefs" #$pipefs-directory "rpc_pipefs") | 110 | (mount "rpc_pipefs" #$pipefs-directory "rpc_pipefs") |
| 111 | (member #$pipefs-directory (mount-points)))) | 111 | (member #$pipefs-directory (mount-points)))) |
| 112 | 112 | ||
| 113 | (stop #~(lambda (pid . args) | 113 | (stop #~(lambda (pid . args) |
| 114 | (umount #$pipefs-directory MNT_DETACH) | 114 | (umount #$pipefs-directory MNT_DETACH) |
| 115 | (not (member #$pipefs-directory (mount-points))))))))) | 115 | (not (member #$pipefs-directory (mount-points))))))))) |
| 116 | (service-type | ||
| 117 | (name 'pipefs) | ||
| 118 | (extensions | ||
| 119 | (list (service-extension shepherd-root-service-type | ||
| 120 | (compose list proc)))) | ||
| 121 | ;; We use the extensions feature to allow other services to automatically | ||
| 122 | ;; configure and start this service. Only one value can be provided. We | ||
| 123 | ;; override it with the value returned by the extending service. | ||
| 124 | (compose identity) | ||
| 125 | (extend (lambda (config values) (first values))) | ||
| 126 | (default-value (pipefs-configuration))))) | ||
| 116 | 127 | ||
| 117 | 128 | ||
| 118 | 129 | ||
