From 9f12e06bb3c84c148a28491a480c7b8f55a3c131 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 31 Mar 2020 10:50:46 +0200 Subject: gnu: Add chrony. * gnu/packages/ntp.scm (chrony): New public variable. --- gnu/packages/ntp.scm | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm index dfcdb58de4..c620019200 100644 --- a/gnu/packages/ntp.scm +++ b/gnu/packages/ntp.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2015, 2018 Ludovic Courtès ;;; Copyright © 2016, 2017, 2018 Efraim Flashner -;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice +;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice ;;; Copyright © 2019 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. @@ -28,7 +28,9 @@ #:use-module (gnu packages base) #:use-module (gnu packages libevent) #:use-module (gnu packages linux) + #:use-module (gnu packages nettle) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages readline) #:use-module (gnu packages tls) #:use-module (guix build-system gnu) #:use-module (guix download) @@ -38,6 +40,70 @@ #:use-module (guix utils) #:use-module (srfi srfi-1)) +(define-public chrony + (package + (name "chrony") + (version "3.5") + (source + (origin + (method url-fetch) + (uri (string-append "https://download.tuxfamily.org/chrony/" + "chrony-" version ".tar.gz")) + (sha256 + (base32 "1d9r2dhslll4kzdmxrj0qfgwq1b30d4l3s5cwr8yr93029dpj0jf")))) + (build-system gnu-build-system) + (arguments + `(#:modules ((srfi srfi-26) + (guix build utils) + (guix build gnu-build-system)) + #:configure-flags + (list "--enable-scfilter" + "--with-sendmail=sendmail" + "--with-user=chrony") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'stay-inside-out + ;; Simply setting CHRONYVARDIR to something nonsensical at install + ;; time would result in nonsense file names in man pages. + (lambda _ + (substitute* "Makefile.in" + (("mkdir -p \\$\\(DESTDIR\\)\\$\\(CHRONYVARDIR\\)") ":")) + #t)) + (add-after 'install 'install-more-documentation + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc/" ,name "-" ,version))) + (for-each (cut install-file <> doc) + (list "README" "FAQ")) + (copy-recursively "examples" (string-append doc "/examples")) + #t)))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libcap" ,libcap) + ("libseccomp" ,libseccomp) + ("nettle" ,nettle))) + (home-page "https://chrony.tuxfamily.org/") + (synopsis "System clock synchronisation service that speaks NTP") + (description + "Chrony keeps your system time accurate. It synchronises your computer's +clock with @acronym{NTP, Network Time Protocol} servers, reference clocks such +as GPS receivers, or even manual input of the correct time from a wristwatch. + +Chrony will determine the rate at which the computer gains or loses time, and +compensate for it. It can also operate as an NTPv4 (RFC 5905) server and peer +to tell time to other computers on the network. + +It's designed to perform well even under adverse conditions: congested +networks, unreliable clocks drifting with changes in temperature, and devices +or virtual machines that are frequently turned off and connect to the Internet +for only a few minutes at a time. + +Typical accuracy when synchronised over the Internet is several milliseconds. +On a local network this can reach tens of microseconds. With hardware +time-stamping or reference clock, sub-microsecond accuracy is possible.") + (license l:gpl2))) + (define-public ntp (package (name "ntp") -- cgit 1.4.1