aboutsummaryrefslogtreecommitdiff
path: root/mirenn/home/services
diff options
context:
space:
mode:
authormirenn <me@mirenn.dev>2026-09-21 23:09:33 +0200
committermirenn <me@mirenn.dev>2026-10-06 14:13:32 +0200
commit8f9c77878f8742a47d34a50748023d1b552cfbf1 (patch)
treef749dff061451ab8427100c452f8175de8e39c53 /mirenn/home/services
parent8501a38d7c3bbc2e99466e6658be134c72d4f47a (diff)
downloaddotfiles-8f9c77878f8742a47d34a50748023d1b552cfbf1.tar.gz
dotfiles-8f9c77878f8742a47d34a50748023d1b552cfbf1.zip
guix primer
Diffstat (limited to 'mirenn/home/services')
-rw-r--r--mirenn/home/services/brightnessctl.scm37
-rw-r--r--mirenn/home/services/timer.scm42
2 files changed, 79 insertions, 0 deletions
diff --git a/mirenn/home/services/brightnessctl.scm b/mirenn/home/services/brightnessctl.scm
new file mode 100644
index 0000000..b71e04a
--- /dev/null
+++ b/mirenn/home/services/brightnessctl.scm
@@ -0,0 +1,37 @@
+(define-module (mirenn home services brightnessctl)
+ #: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)
+ #:use-module (gnu packages linux)
+
+ #:export (home-brightnessctl-configuration))
+
+(define-configuration/no-serialization home-brightnessctl-configuration
+ (state-file
+ (string ".local/state/brightnessctl")
+ "The file which the brightness state is stored."))
+
+(define (home-brightnessctl-shepherd-service config)
+ (list
+ (shepherd-service
+ (provision '(brightnessctl))
+ (documentation "Save and restore brightness.")
+ (start #~(make-system-constructor
+ #$(string-append "brightnessctl set $(cat \"$HOME/"
+ (home-brightnessctl-configuration-state-file config)
+ "\")")))
+ (stop #~(make-system-destructor
+ #$(string-append "brightnessctl get > \"$HOME/"
+ (home-brightnessctl-configuration-state-file config)
+ "\""))))))
+
+(define-public home-brightnessctl-service-type
+ (service-type
+ (name 'home-brightnessctl)
+ (extensions
+ (list (service-extension home-shepherd-service-type home-brightnessctl-shepherd-service)))
+ (description "Save and restore brightness.")
+ (default-value (home-brightnessctl-configuration))))
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")))