This commit is contained in:
Giel van Schijndel 2024-05-01 00:15:23 +02:00 committed by GitHub
commit 74bbf6e939
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 55 additions and 2 deletions

View File

@ -9,11 +9,20 @@ rec {
''"${v}"''
else if builtins.isList v then
"(${lib.concatStringsSep " " (map toZshValue v)})"
else if builtins.isAttrs v then
"(${
lib.concatStringsSep " "
(lib.mapAttrsToList (n: v: "[${lib.escapeShellArg n}]=${toZshValue v}")
v)
})"
else
''"${toString v}"'';
# Produces a Zsh shell like definition statement
define = n: v: "${n}=${toZshValue v}";
define = n: v:
"${lib.optionalString (builtins.isAttrs v) "typeset -A "}${n}=${
toZshValue v
}";
# Given an attribute set containing shell variable names and their
# assignments, this function produces a string containing a definition

View File

@ -501,7 +501,10 @@ in
localVariables = mkOption {
type = types.attrs;
default = {};
example = { POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=["dir" "vcs"]; };
example = {
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=["dir" "vcs"];
ZSH_HIGHLIGHT_STYLES={unknown-token="bg=red,fg=white,bold";};
};
description = ''
Extra local variables defined at the top of {file}`.zshrc`.
'';

View File

@ -1,4 +1,5 @@
{
zsh-local-variables = ./local-variables.nix;
zsh-session-variables = ./session-variables.nix;
zsh-history-path-new-default = ./history-path-new-default.nix;
zsh-history-path-new-custom = ./history-path-new-custom.nix;

View File

@ -0,0 +1,40 @@
{ lib, ... }:
with lib;
{
config = {
programs.zsh = {
enable = true;
localVariables = rec {
V1 = true;
V2 = false;
V3 = "some-string";
V4 = 42;
V5 = builtins.attrValues V6;
V6 = {
a = V1;
b = V2;
c = V3;
d = V4;
};
};
};
test.stubs.zsh = { };
nmt.script = ''
assertFileExists home-files/.zshrc
assertFileRegex home-files/.zshrc '^V1=true$'
assertFileRegex home-files/.zshrc '^V2=false$'
assertFileRegex home-files/.zshrc '^V3="some-string"$'
assertFileRegex home-files/.zshrc '^V4="42"$'
assertFileRegex home-files/.zshrc '^V5=[(]true false "some-string" "42"[)]$'
assertFileContains home-files/.zshrc ${
lib.escapeShellArg ''
typeset -A V6=(['a']=true ['b']=false ['c']="some-string" ['d']="42")''
}
'';
};
}