~ruther/ruthless-guix

ref: 27a74de2721b2a55611dab408dedc3718a50e12e ruthless-guix/modules/ruther/services/netbird.scm -rw-r--r-- 1.5 KiB
27a74de2 — Rutherther feat: add netbird package and service 12 days ago
                                                                                
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
(define-module (ruther services netbird)
  #:use-module (gnu services)
  #:use-module (gnu services shepherd)
  #:use-module (gnu services configuration)
  #:use-module (guix gexp)
  #:use-module (guix records)
  #:use-module (ruther packages netbird)
  #:export (netbird-configuration
            netbird-configuration?
            netbird-configuration-netbird
            netbird-configuration-log-level

            netbird-service-type))

(define-configuration/no-serialization netbird-configuration
  (netbird (file-like netbird) "The netbird package to use.")
  (log-level (string "info") "Log level."))

(define (netbird-shepherd-service config)
  (let ((netbird (netbird-configuration-netbird config))
        (log-level (netbird-configuration-log-level config)))
    (list
     (shepherd-service
      (provision '(netbird))
      (requirement '(networking))
      (documentation "Run the NetBird client daemon.")
      (start #~(make-forkexec-constructor
                (list #$(file-append netbird "/bin/netbird")
                      "service" "run"
                      "--log-level" #$log-level)
                #:log-file "/var/log/netbird.log"))
      (stop #~(make-kill-destructor))))))

(define netbird-service-type
  (service-type
   (name 'netbird)
   (extensions
    (list (service-extension shepherd-root-service-type
                             netbird-shepherd-service)))
   (default-value (netbird-configuration))
   (description "Run the NetBird VPN client daemon.")))