diff options
Diffstat (limited to 'px/services/ntp.scm')
-rw-r--r-- | px/services/ntp.scm | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/px/services/ntp.scm b/px/services/ntp.scm new file mode 100644 index 0000000..bbba3c6 --- /dev/null +++ b/px/services/ntp.scm @@ -0,0 +1,73 @@ +(define-module (px services ntp) + #:use-module (gnu) + #:use-module (gnu packages admin) + #:use-module (gnu packages base) + #:use-module (gnu packages linux) + #:use-module (gnu packages ntp) + #:use-module (gnu packages screen) + #:use-module (gnu services admin) + #:use-module (gnu services shepherd) + #:use-module (gnu system) + #:use-module (gnu system shadow) + #:use-module (guix gexp) + #:use-module (guix records) + #:use-module (ice-9 match) + #:use-module (ice-9 pretty-print) + #:use-module (srfi srfi-1) + + #:export (chrony-service-configuration + chrony-service-type)) + +;; +;; Chrony SERVICE +;; + +(define-record-type* <chrony-service-configuration> + chrony-service-configuration make-chrony-service-configuration + chrony-service-configuration? + (package chrony-service-configuration-package + (default chrony)) + (user chrony-service-configuration-user + (default "root")) + (config chrony-service-configuration-config + (default "server 0.pool.ntp.org iburst +server 1.pool.ntp.org iburst +server 2.pool.ntp.org iburst +server 3.pool.ntp.org iburst +driftfile /var/lib/chrony/drift +makestep 1.0 3 +rtcsync +logdir /var/log/chrony"))) + +(define (chrony-service-config-file config) + "Return the chorny configuration file corresponding to CONFIG." + (computed-file "chrony.conf" + (with-imported-modules + '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + (call-with-output-file #$output + (lambda (port) + (format port + #$config))))))) + +(define chrony-shepherd-service + (match-lambda + (($ <chrony-service-configuration> package user config) + (list (shepherd-service + (provision '(chrony)) + (documentation "Run chrony as a daemon") + (requirement '(networking)) + (start #~(make-forkexec-constructor + (list (string-append #$package "/sbin/chronyd") + "-n" "-u" #$user + "-f" #$(chrony-service-config-file config)))) + (stop #~(make-kill-destructor))))))) + +(define chrony-service-type + (service-type + (name "chrony") + (description "Chrony service") + (extensions (list (service-extension shepherd-root-service-type + chrony-shepherd-service))) + (default-value (chrony-service-configuration))))
\ No newline at end of file |