unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
blob 0fa613a569bb7a401eb33907d8f4d524d945b964 3667 bytes (raw)
name: gnu/services/nfs.scm 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
 
;;; 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 (gnu packages linux)
  #:use-module (guix)
  #:use-module (guix records)
  #:use-module (ice-9 match)
  #:use-module (gnu build file-systems)
  #:export (rpcbind-service-type
            rpcbind-configuration
            rpcbind-configuration?

            pipefs-service-type
            pipefs-configuration
            pipefs-configuration?

            gss-service-type
            gss-configuration
            gss-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))))))

\f

(define-record-type* <pipefs-configuration>
  pipefs-configuration make-pipefs-configuration
  pipefs-configuration?)

(define pipefs-service-type
  (shepherd-service-type
   'pipefs
   (lambda (config)
     (with-imported-modules '((gnu build file-systems)
                              (guix build bournish))
       (define pipefs-dir "/var/lib/nfs/rpc_pipefs")

       (shepherd-service
        (documentation "Mount the pipefs pseudo filesystem.")
        (provision '(rpc-pipefs))

        (start #~(lambda ()
                   (mkdir-p #$pipefs-dir)
                   (mount "rpc_pipefs" #$pipefs-dir "rpc_pipefs")))
        (stop #~(lambda (pid . args)
                  (umount #$pipefs-dir MNT_DETACH))))))))

\f

(define-record-type* <gss-configuration>
  gss-configuration make-gss-configuration
  gss-configuration?
  (nfs-utils             gss-configuration-gss
                         (default nfs-utils)))

(define gss-service-type
  (shepherd-service-type
   'gss
   (lambda (config)
     (define pkg
       (gss-configuration-gss config))

     (define gss-command
       #~(list (string-append #$pkg "/sbin/rpc.gssd") "-f"))

     (shepherd-service
      (documentation "Start the RPC GSS daemon.")
      (requirement '(rpcbind-daemon rpc-pipefs))
      (provision '(gss-daemon))

      (start #~(make-forkexec-constructor #$gss-command))
      (stop #~(make-kill-destructor))))))


debug log:

solving 0fa613a ...
found 0fa613a in https://yhetil.org/guix-devel/1473535083-5326-2-git-send-email-jmd@gnu.org/
found 82713d8 in https://git.savannah.gnu.org/cgit/guix.git
preparing index
index prepared:
100644 82713d81334cfd06fc9428e45f8064ab1968f7ba	gnu/services/nfs.scm

applying [1/1] https://yhetil.org/guix-devel/1473535083-5326-2-git-send-email-jmd@gnu.org/
diff --git a/gnu/services/nfs.scm b/gnu/services/nfs.scm
index 82713d8..0fa613a 100644

Checking patch gnu/services/nfs.scm...
1:83: new blank line at EOF.
+
Applied patch gnu/services/nfs.scm cleanly.
warning: 1 line adds whitespace errors.

index at:
100644 0fa613a569bb7a401eb33907d8f4d524d945b964	gnu/services/nfs.scm

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).