guix-channel

A channel for the Guix package manager

git clone https://git.8pit.net/guix-channel.git

 1(define-module (nmeum services web)
 2  #:use-module (nmeum packages misc)
 3  #:use-module (guix gexp)
 4  #:use-module (gnu packages admin)
 5  #:use-module (gnu services)
 6  #:use-module (gnu services base)
 7  #:use-module (gnu services shepherd)
 8  #:use-module (gnu system accounts)
 9  #:use-module (gnu system shadow)
10  #:use-module (srfi srfi-1)
11  #:use-module (srfi srfi-26))
12
13(define (webdav-server-shepherd-service args)
14  (list (shepherd-service
15          (documentation "webdav-server daemon.")
16          (provision '(webdav-server))
17          ;; webdav-server may be bound to a particular IP address, hence
18          ;; only start it after the networking service has started.
19          (requirement '(user-processes networking))
20          (start #~(make-forkexec-constructor
21                     (list (string-append #$webdav-server "/bin/webdav-server")
22                           #$@args)
23                     #:user "webdav-server" #:group "webdav-server"))
24          (stop #~(make-kill-destructor)))))
25
26(define webdav-server-account-service
27  (list (user-group (name "webdav-server") (system? #t))
28        (user-account
29         (name "webdav-server")
30         (group "webdav-server")
31         (system? #t)
32         (comment "webdav-server daemon user")
33         (home-directory "/var/empty")
34         (shell (file-append shadow "/sbin/nologin")))))
35
36(define-public webdav-server-service-type
37  (service-type (name 'webdav-server)
38                (description "Run the WebDAV server.")
39                (extensions
40                  (list (service-extension account-service-type
41                                           (const webdav-server-account-service))
42                        (service-extension shepherd-root-service-type
43                                           webdav-server-shepherd-service)))
44                (compose concatenate)
45                (default-value '())))