aboutsummaryrefslogtreecommitdiff
path: root/home-manager/modules/lib/zsh.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager/modules/lib/zsh.nix')
-rw-r--r--home-manager/modules/lib/zsh.nix28
1 files changed, 28 insertions, 0 deletions
diff --git a/home-manager/modules/lib/zsh.nix b/home-manager/modules/lib/zsh.nix
new file mode 100644
index 00000000000..1d3e96b54bb
--- /dev/null
+++ b/home-manager/modules/lib/zsh.nix
@@ -0,0 +1,28 @@
+{ lib }:
+
+rec {
+ # Produces a Zsh shell like value
+ toZshValue = v: if builtins.isBool v then
+ if v then "true" else "false"
+ else if builtins.isString v then
+ "\"${v}\""
+ else if builtins.isList v then
+ "(${lib.concatStringsSep " " (map toZshValue v)})"
+ else "\"${toString v}\"";
+
+ # Produces a Zsh shell like definition statement
+ define = n: v: "${n}=${toZshValue v}";
+
+ # Given an attribute set containing shell variable names and their
+ # assignments, this function produces a string containing a definition
+ # statement for each set entry.
+ defineAll = vars: lib.concatStringsSep "\n" (lib.mapAttrsToList define vars);
+
+ # Produces a Zsh shell like export statement
+ export = n: v: "export ${define n v}";
+
+ # Given an attribute set containing shell variable names and their
+ # assignments, this function produces a string containing an export
+ # statement for each set entry.
+ exportAll = vars: lib.concatStringsSep "\n" (lib.mapAttrsToList export vars);
+}