blob: 9475d3108d9e04dbebe0cbf73e1cd922b9ca002e (
plain)
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
|
(define-module (gn services monitoring)
#:use-module (gnu)
#:use-module (gnu services shepherd)
#:use-module (gnu services databases)
#:use-module ((gn packages guile) #:select (guile-sheepdog))
#:use-module (guix gexp)
#:use-module (guix records)
#:use-module (ice-9 match)
#:export (guile-sheepdog-configuration
guile-sheepdog-configuration?
guile-sheepdog-configuration-settings-file
guile-sheepdog-configuration-package
guile-sheepdog-service-type))
(define-record-type* <guile-sheepdog-configuration>
guile-sheepdog-configuration
make-guile-sheepdog-configuration
guile-sheepdog-configuration?
(settings-file guile-sheepdog-configuration-settings-file
(default "/etc/conn.scm"))
(package guile-sheepdog-configuration-package (default guile-sheepdog)))
(define (guile-sheepdog-gexp config)
(match-record config <guile-sheepdog-configuration> (settings-file package)
(program-file
"guile-sheepdog"
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils))
(invoke #$(file-append package "/bin/guile-sheepdog") #$settings-file))))))
(define (guile-sheepdog-shepherd-service config)
(shepherd-service
(documentation "Run Sheepdog")
(provision '(guile-sheepdog))
(requirement '(networking redis))
(start #~(make-forkexec-constructor
(list #$(guile-sheepdog-gexp config))
#:log-file "/var/log/sheepdog.log"))
(stop #~(make-kill-destructor))))
(define guile-sheepdog-service-type
(service-type
(name 'guile-sheepdog)
(description "Run sheepdog monitor")
(extensions
(list (service-extension shepherd-root-service-type
(compose list guile-sheepdog-shepherd-service))))
(default-value (guile-sheepdog-configuration))))
|