diff options
author | John Darrington <jmd@gnu.org> | 2016-09-03 08:26:05 +0200 |
---|---|---|
committer | John Darrington <jmd@gnu.org> | 2016-09-07 20:26:11 +0200 |
commit | d6a07ee6751cdd414d702194dbeb0fd71f0781c9 (patch) | |
tree | b6524cdf35a09eb2472d00f1f47b446d07fe1182 /gnu/services | |
parent | 947a5d47a50252cb0b87b78a8f83f274dec593e2 (diff) | |
download | patches-d6a07ee6751cdd414d702194dbeb0fd71f0781c9.tar patches-d6a07ee6751cdd414d702194dbeb0fd71f0781c9.tar.gz |
gnu: Add rpc-daemon service
* gnu/services/nfs.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
Diffstat (limited to 'gnu/services')
-rw-r--r-- | gnu/services/nfs.scm | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/gnu/services/nfs.scm b/gnu/services/nfs.scm new file mode 100644 index 0000000000..82713d8133 --- /dev/null +++ b/gnu/services/nfs.scm @@ -0,0 +1,54 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 John Darrington <jmd@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu services nfs) + #:use-module (gnu) + #:use-module (gnu services shepherd) + #:use-module (gnu packages onc-rpc) + #:use-module (guix) + #:use-module (guix records) + #:export (rpcbind-service-type + rpcbind-configuration + rpcbind-configuration?)) + +(define-record-type* <rpcbind-configuration> + rpcbind-configuration make-rpcbind-configuration + rpcbind-configuration? + (rpcbind rpcbind-configuration-rpcbind + (default rpcbind)) + (warm-start? rpcbind-configuration-warm-start? + (default #t))) + +(define rpcbind-service-type + (shepherd-service-type + 'rpcbind + (lambda (config) + (define pkg + (rpcbind-configuration-rpcbind config)) + + (define rpcbind-command + #~(list (string-append #$pkg "/bin/rpcbind") "-f" + #$@(if (rpcbind-configuration-warm-start? config) '("-w") '()))) + + (shepherd-service + (documentation "Start the RPC bind daemon.") + (requirement '(networking)) + (provision '(rpcbind-daemon)) + + (start #~(make-forkexec-constructor #$rpcbind-command)) + (stop #~(make-kill-destructor)))))) |