如何使用 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"; }
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"; }