diff options
Diffstat (limited to 'oni/home/services/stumpwm.scm')
-rw-r--r-- | oni/home/services/stumpwm.scm | 77 |
1 files changed, 65 insertions, 12 deletions
diff --git a/oni/home/services/stumpwm.scm b/oni/home/services/stumpwm.scm index 13e948e..66db596 100644 --- a/oni/home/services/stumpwm.scm +++ b/oni/home/services/stumpwm.scm @@ -1,7 +1,11 @@ (define-module (oni home services stumpwm) + #:use-module ((srfi srfi-1) #:select (every)) #:use-module ((gnu services configuration) #:select (serialize-package - define-configuration)) + define-configuration + define-configuration/no-serialization + text-config? + serialize-text-config)) #:use-module ((gnu packages lisp) #:select (sbcl)) #:use-module ((gnu packages wm) @@ -17,33 +21,52 @@ #:use-module ((guix gexp) #:select (local-file gexp - file-append)) + file-append + mixed-text-file)) #:use-module ((guix packages) #:select (package?)) #:export (home-stumpwm-service-type - home-stumpwm-configuration)) + home-stumpwm-configuration + home-stumpwm-extension + + home-stumpwm-gaps-service-type + home-stumpwm-gaps-configuration)) + +(define-configuration/no-serialization home-stumpwm-extension + (configurations + (text-config '()) + "The configuration for the extension.")) (define-configuration home-stumpwm-configuration (package (package stumpwm) "Package to use for setting Stumpwm") - (gaps-package - (package sbcl-stumpwm-swm-gaps) - "Package to use for setting Stumpwm Gaps") + (configurations + (text-config '()) + "The configuration to apply.") (stumpish-package (package stumpish) "Package to use for setting Stumpish")) (define (add-stumpwm-packages config) - (list sbcl - (home-stumpwm-configuration-package config) - (list stumpwm "lib") - (home-stumpwm-configuration-stumpish-package config) - (home-stumpwm-configuration-gaps-package config))) + (append (list sbcl + (home-stumpwm-configuration-package config) + (list stumpwm "lib") + (home-stumpwm-configuration-stumpish-package config)))) + +(define (home-stumpwm-extensions original-config extension-configs) + (home-stumpwm-configuration + (inherit original-config) + (configurations + (apply append (home-stumpwm-configuration-configurations original-config) + (map home-stumpwm-extension-configurations extension-configs))))) (define (home-stumpwm-config-files config) - `(("stumpwm/config" ,(local-file "stumpwm/config")))) + `(("stumpwm/config" + ,(mixed-text-file + "config" + (serialize-text-config config (home-stumpwm-configuration-configurations config)))))) (define (reload-stumpwm-config-gexp _) `(("files/.config/stumpwm/config" @@ -63,5 +86,35 @@ home-run-on-change-service-type reload-stumpwm-config-gexp))) (compose identity) + (extend home-stumpwm-extensions) (default-value (home-stumpwm-configuration)) (description "Install and configure stumpwm."))) + +(define-configuration/no-serialization home-stumpwm-gaps-configuration + (package + (package sbcl-stumpwm-swm-gaps) + "Package to use for setting stumpwm-gaps.") + (configurations + (text-config '()) + "Configuration for stumpwm gaps")) + +(define (add-stumpwm-gaps config) + (home-stumpwm-extension + (configurations (home-stumpwm-gaps-configuration-configurations config)))) + +(define (add-stumpwm-gaps-packages config) + (list (home-stumpwm-gaps-configuration-package config))) + +(define home-stumpwm-gaps-service-type + (service-type + (name 'home-stumpwm-gaps) + (extensions + (list (service-extension + home-stumpwm-service-type + add-stumpwm-gaps) + (service-extension + home-profile-service-type + add-stumpwm-gaps-packages))) + (compose identity) + (default-value (home-stumpwm-gaps-configuration)) + (description "Install and configure stumpwm-gaps."))) |