aboutsummaryrefslogtreecommitdiffstats
path: root/oni/home/services/stumpwm.scm
diff options
context:
space:
mode:
Diffstat (limited to 'oni/home/services/stumpwm.scm')
-rw-r--r--oni/home/services/stumpwm.scm77
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.")))