services: Add btrbk-service-type.

* rosenthal/services/file-systems.scm: New file.
(<btrbk-configuration>): New data type.
(btrbk-etc-service,btrbk-mcron-jobs): New procedures.
(btrbk-service-type): New variable.
pull/6/head
Hilton Chain 9 months ago
parent 06eb07b022
commit c202ed2037
No known key found for this signature in database
GPG Key ID: ACC66D09CA528292
  1. 42
      rosenthal/services/file-systems.scm

@ -0,0 +1,42 @@
(define-module (rosenthal services file-systems)
#:use-module (guix gexp)
#:use-module (gnu packages backup)
#:use-module (gnu services)
#:use-module (gnu services configuration)
#:use-module (gnu services mcron)
#:export (btrbk-service-type
btrbk-configuration))
;;
;; Btrbk
;;
(define-configuration btrbk-configuration
(btrbk
(file-like btrbk)
"@code{btrbk} package to use.")
(config-file
(file-like (plain-file "empty" ""))
"File-like object for btrbk configuration, see also @code{btrbk.conf(5)}.")
(no-serialization))
(define (btrbk-etc-service config)
`(("btrbk/btrbk.conf" ,(btrbk-configuration-config-file config))))
(define (btrbk-mcron-jobs config)
(list #~(job next-hour-from
#$(file-append (btrbk-configuration-btrbk config)
"/bin/btrbk run --quiet"))))
(define btrbk-service-type
(service-type
(name 'btrbk)
(extensions
(list (service-extension etc-service-type
btrbk-etc-service)
(service-extension mcron-service-type
btrbk-mcron-jobs)))
(default-value (btrbk-configuration))
(description "Configure and run btrbk hourly.")))
Loading…
Cancel
Save