1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-11-08 19:46:05 +01:00
home-manager/modules/lib/zsh.nix
Austin Horstman 2b03dc82bb lib/zsh: revert escapeShellArg in toZshValue
Causes variables to be generated with single ticks breaking shell
expansion.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-09-28 14:44:14 -05:00

42 lines
1.2 KiB
Nix

{ 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
let
shell = import ./shell.nix { inherit lib; };
in
"(${shell.formatShellArrayContent (map toString 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:
{
indent ? "",
}:
let
separator = if indent == "" then "\n" else "\n" + indent;
in
lib.concatStringsSep separator (lib.mapAttrsToList export vars);
}