summaryrefslogtreecommitdiff
path: root/suweren/trezor.scm
blob: 496fd72b756d2e6b2cc00e9b675b375c6a77b377 (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
(define-module (suweren trezor)
  #:use-module (gnu packages finance)
  #:use-module (gnu services)
  #:use-module (gnu services base)
  #:use-module (gnu services shepherd)
  #:use-module (guix gexp))

(define-public trezor-bridge
  (let*
    ( (service-executable (file-append trezord
                                       "/bin/trezord-go"))

      (start-command #~ (list #$ service-executable))

      (shepherd-symbols (list 'trezor-bridge))
      (start-process    #~ (make-forkexec-constructor #$ start-command))
      (stop-process     #~ (make-kill-destructor))

      (profile-extension (list trezord))
      (shepherd-extension
        (shepherd-service
          (provision   shepherd-symbols)
          (requirement (list 'user-processes))
          (start       start-process)
          (stop        stop-process)))

      (shepherd-extension* (list shepherd-extension))

      (profile-service   (simple-service 'trezor-bridge-profile
                                         profile-service-type
                                         profile-extension))
      (shepherd-service* (simple-service 'trezor-bridge-shepherd
                                         shepherd-root-service-type
                                         shepherd-extension*))
      (udev-service*     (udev-rules-service 'trezor-bridge-udev
                                             trezord-udev-rules)))
    (list profile-service
          udev-service*
          shepherd-service*)))