From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Darrington Subject: [PATCH] gnu: Add rpc-daemon service Date: Tue, 6 Sep 2016 18:50:56 +0200 Message-ID: <1473180656-14742-1-git-send-email-jmd@gnu.org> References: <8737levzyr.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:36503) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bhJaY-0001Ds-5j for guix-devel@gnu.org; Tue, 06 Sep 2016 12:51:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bhJaT-0007ee-1U for guix-devel@gnu.org; Tue, 06 Sep 2016 12:51:09 -0400 In-Reply-To: <8737levzyr.fsf@gnu.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org Cc: John Darrington I think this patch does what you want. Perhaps you can take another look= before I push. If I might be allowed to give my opinion though ... I think this way of= documenting=20 things is of limited help to potential users. It does nothing more than = repeat what is written in the code. If that is what we want, then we could use some = kind of literate programming tool to do it. That would be less maintenence and a= voids the possibility of code and documentation becoming out of sync. However, what is really needed from documentation IMO, is not only a API = reference, but also a tutorial on how to use the thing. I think this form of docume= ntation will only leave the newcommer scratching his head. * gnu/services/nfs.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. --- doc/guix.texi | 26 +++++++++++++++++++++++++ gnu/local.mk | 1 + gnu/services/nfs.scm | 54 ++++++++++++++++++++++++++++++++++++++++++++++= ++++++ 3 files changed, 81 insertions(+) create mode 100644 gnu/services/nfs.scm diff --git a/doc/guix.texi b/doc/guix.texi index 59bc5d8..cff61d0 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -25,6 +25,7 @@ Copyright @copyright{} 2015, 2016 Ricardo Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{} 2016 Chris Marusich@* Copyright @copyright{} 2016 Efraim Flashner@* +Copyright @copyright{} 2016 John Darrington@* Copyright @copyright{} 2016 ng0 =20 Permission is granted to copy, distribute and/or modify this document @@ -10089,6 +10090,31 @@ directories are created when the service is acti= vated. @node Various Services @subsubsection Various Services =20 + +@subsubheading RPC Bind Service +@cindex rpcbind + +The @code{(gnu services nfs)} module provides the following: + +@defvr {Scheme Variable} rpcbind-service-type +A service type for the RPC portmapper daemon. +@end defvr + + +@deftp {Data Type} rpcbind-configuration +Data type representing the configuration of the RPC Bind Service. +This type has the following parameters: +@table @asis +@item @code{rpcbind} (default: @code{rpcbind}) +The rpcbind package to use. + +@item @code{warm-start?} +If this parameter is @code{#t} (the default), then the daemon will read = a +state file on startup thus reloading state information saved by a previo= us +instance. +@end table +@end deftp + @cindex lirc @subsubheading Lirc Service =20 diff --git a/gnu/local.mk b/gnu/local.mk index 0a9b831..f337a2a 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -389,6 +389,7 @@ GNU_SYSTEM_MODULES =3D \ %D%/services/mail.scm \ %D%/services/mcron.scm \ %D%/services/networking.scm \ + %D%/services/nfs.scm \ %D%/services/shepherd.scm \ %D%/services/herd.scm \ %D%/services/sddm.scm \ diff --git a/gnu/services/nfs.scm b/gnu/services/nfs.scm new file mode 100644 index 0000000..82713d8 --- /dev/null +++ b/gnu/services/nfs.scm @@ -0,0 +1,54 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright =C2=A9 2016 John Darrington +;;; +;;; 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 (a= t +;;; 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 . + +(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 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)))))) --=20 2.1.4