(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 home-brightnessctl-service-type)) (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 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))))