From 8f9c77878f8742a47d34a50748023d1b552cfbf1 Mon Sep 17 00:00:00 2001 From: mirenn Date: Mon, 21 Sep 2026 23:09:33 +0200 Subject: guix primer --- mirenn/home/services/timer.scm | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 mirenn/home/services/timer.scm (limited to 'mirenn/home/services/timer.scm') diff --git a/mirenn/home/services/timer.scm b/mirenn/home/services/timer.scm new file mode 100644 index 0000000..59e2fc8 --- /dev/null +++ b/mirenn/home/services/timer.scm @@ -0,0 +1,42 @@ +(define-module (mirenn home services timer) + #:use-module (guix gexp) + #:use-module (gnu services) + #:use-module (gnu services shepherd) + #:use-module (gnu services configuration) + #:use-module (gnu home services) + #:use-module (gnu home services shepherd) + + #:export (home-timer-configuration)) + +(define-configuration/no-serialization home-timer-configuration + (name + symbol + "Name of the timer.") + (script + local-file + "Script to run on timeout.") + (arguments + (list string) + "Arguments passed to the script.") + (delay + number + "Timer delay in seconds.")) + +(define (home-timer-shepherd-service config) + (list + (shepherd-service + (documentation "Run a periodic task") + (provision (list (home-timer-configuration-name config))) + (respawn? #t) + (respawn-delay (home-timer-configuration-delay config)) + (start #~(make-forkexec-constructor + (cons #$(home-timer-configuration-script config) + #$(home-timer-configuration-arguments config)))) + (stop #~(make-kill-destructor))))) + +(define-public home-timer-service-type + (service-type + (name 'home-timer') + (extensions + (list (service-extension home-shepherd-service-type home-timer-shepherd-service))) + (description "Runs a script periodically based on a respawn delay"))) -- cgit v1.2.3