diff options
author | Tom Willemse | 2022-07-22 12:36:36 -0700 |
---|---|---|
committer | Tom Willemse | 2022-07-22 12:36:36 -0700 |
commit | 7957b236de1638fdcc1c9d16780c463defd8f961 (patch) | |
tree | 6ca8488a5b6f84d7389350eaae4e0ebcebfbdc81 /oni/home/services | |
parent | 892a409184d8abba2dcb660615b753abb9906220 (diff) | |
download | new-dotfiles-7957b236de1638fdcc1c9d16780c463defd8f961.tar.gz new-dotfiles-7957b236de1638fdcc1c9d16780c463defd8f961.zip |
Add guile configuration
Diffstat (limited to 'oni/home/services')
-rw-r--r-- | oni/home/services/guile.scm | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/oni/home/services/guile.scm b/oni/home/services/guile.scm new file mode 100644 index 0000000..a8b17f5 --- /dev/null +++ b/oni/home/services/guile.scm @@ -0,0 +1,66 @@ +(define-module (oni home services guile) + #:use-module (ice-9 match) + #:use-module (gnu home services) + #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) + #:use-module (gnu services configuration) + #:use-module (guix packages) + #:use-module (guix gexp) + + #:export (home-guile-service-type + home-guile-configuration)) + +(define (serialize-boolean field value) + (match field + ('use-readline + (if value + "(use-modules (ice-9 readline)) +(activate-readline)\n" + "")) + ('use-colorized + (if value + "(use-modules (ice-9 colorized)) +(activate-colorized)\n" + "")))) + +(define-configuration home-guile-configuration + (package + (package guile-3.0-latest) + "Package to use for setting Guile") + (use-readline + (boolean #f) + "Should readline be initialized in Guile?") + (use-colorized + (boolean #f) + "Should the colorized module be initialized in Guile?")) + +(define (add-guile-packages config) + (let ((package-list (append (list (home-guile-configuration-package config)) + (if (home-guile-configuration-use-readline config) (list guile-readline) '()) + (if (home-guile-configuration-use-colorized config) (list guile-colorized) '())))) + (display package-list) + package-list)) + +(define (serialize-guile-configuration config) + (serialize-configuration config home-guile-configuration-fields)) + +(define (home-guile-config-file config) + (computed-file "guile" + #~(call-with-output-file #$output + (lambda (port) + (display #$(serialize-guile-configuration config) port))))) + +(define (home-guile-config-files config) + `((".guile" ,(home-guile-config-file config)))) + +(define home-guile-service-type + (service-type (name 'home-guile) + (extensions + (list (service-extension + home-files-service-type + home-guile-config-files) + (service-extension + home-profile-service-type + add-guile-packages))) + (default-value (home-guile-configuration)) + (description "Configure guile"))) |