如何使用 nixos 中的属性集的默认值,并扩展它

How to use the default value for an attribute set in nixos, and extend it

programs.zsh.shellAliases 的默认值为

 { l = "ls -alh"; ll = "ls -l"; ls = "ls --color=tty"; }

这很好。

我想用

扩展属性集
{ xclip = "xclip -selection clipboard"; paste = "xclip -out"; }

我知道我可以将属性集与 // 合并,并且因为我知道默认值,所以我可以明确地写下我想要的属性集。

但是否可以保留默认值并像这样扩展它:

 programs.zsh.shellAliases = [default] // { ... };

?

默认值在 options.programs.zsh.shellAliases.default 中可用。

您可以在 nix-repl 中使用它:

nix-repl> (import <nixpkgs/nixos> { configuration = {lib, options, ...}: { config.programs.zsh.shellAliases = options.programs.zsh.shellAliases.default // { xclip = "xclip -selection clipboard"; paste = "xclip -out"; }; }; }).config.programs.zsh.shellAliases
{ l = "ls -alh"; ll = "ls -l"; ls = "ls --color=tty"; paste = "xclip -out"; xclip = "xclip -selection clipboard"; }