aboutsummaryrefslogtreecommitdiffstats
path: root/oni/home/services/zsh.scm
diff options
context:
space:
mode:
Diffstat (limited to 'oni/home/services/zsh.scm')
-rw-r--r--oni/home/services/zsh.scm36
1 files changed, 35 insertions, 1 deletions
diff --git a/oni/home/services/zsh.scm b/oni/home/services/zsh.scm
index e8b6a14..6e4ee07 100644
--- a/oni/home/services/zsh.scm
+++ b/oni/home/services/zsh.scm
@@ -22,7 +22,9 @@
home-zsh-atuin-service-type
home-zsh-atuin-configuration
home-zsh-completions-service-type
- home-zsh-completions-configuration))
+ home-zsh-completions-configuration
+ home-zsh-direnv-service-type
+ home-zsh-direnv-configuration))
(define-maybe string)
@@ -276,3 +278,35 @@ statistics. For example, consider kubectl get rather than just kubectl.")
(compose identity)
(default-value (home-zsh-completions-configuration))
(description "Install and configure zsh-completions.")))
+
+(define-configuration home-zsh-direnv-configuration
+ (package
+ (package direnv)
+ "Package to use for setting direnv."))
+
+(define (add-zsh-direnv-packages config)
+ (list (home-zsh-direnv-configuration-package config)))
+
+(define (add-zsh-direnv config)
+ (home-zsh-extension
+ (zshrc
+ (list
+ (mixed-text-file
+ "zshrc"
+ "eval \"$("
+ (home-zsh-direnv-configuration-package config)
+ "/bin/direnv hook zsh)\"")))))
+
+(define home-zsh-direnv-service-type
+ (service-type
+ (name 'home-zsh-direnv)
+ (extensions
+ (list (service-extension
+ home-profile-service-type
+ add-zsh-direnv-packages)
+ (service-extension
+ home-zsh-service-type
+ add-zsh-direnv)))
+ (compose identity)
+ (default-value (home-zsh-direnv-configuration))
+ (description "Install and configure direnv.")))