Nix 如何引用 users.extraUsers 中的用户名?
Nix how can I reference a username from users.extraUsers?
我想在某些 nix 表达式中引用用户。然而,我不想将它设置为像 bob
这样的字符串值,而是想引用一个已经在 users.extraUsers
中定义的用户,所以我假设像 users.extraUsers.bob.userName
这样的东西。这可能吗?
这样做的原因是,它为我提供了一些额外的静态保证,即我正在引用一个将存在的用户。
您可以通过查找来确保定义了用户。
$ nix repl '<nixpkgs/nixos>'
Welcome to Nix version 2.3.4. Type :? for help.
Loading '<nixpkgs/nixos>'...
Added 6 variables.
nix-repl> config.users.users.${"root"}.name
"root"
nix-repl> user = "bob"
nix-repl> config.users.users.${user}.name
error: attribute 'bob' missing, at (string):1:1
nix-repl> config.users.users.${user}.name or builtins.throw "You referenced a user `${user}' which was not defined."
error: You referenced a user `bob' which was not defined.
请注意 extraUsers
只是 users
的别名。
从 Nix 不进行超出有限范围检查的静态检查的意义上说,它不是静态的,但我希望它能有所帮助。
我想在某些 nix 表达式中引用用户。然而,我不想将它设置为像 bob
这样的字符串值,而是想引用一个已经在 users.extraUsers
中定义的用户,所以我假设像 users.extraUsers.bob.userName
这样的东西。这可能吗?
这样做的原因是,它为我提供了一些额外的静态保证,即我正在引用一个将存在的用户。
您可以通过查找来确保定义了用户。
$ nix repl '<nixpkgs/nixos>'
Welcome to Nix version 2.3.4. Type :? for help.
Loading '<nixpkgs/nixos>'...
Added 6 variables.
nix-repl> config.users.users.${"root"}.name
"root"
nix-repl> user = "bob"
nix-repl> config.users.users.${user}.name
error: attribute 'bob' missing, at (string):1:1
nix-repl> config.users.users.${user}.name or builtins.throw "You referenced a user `${user}' which was not defined."
error: You referenced a user `bob' which was not defined.
请注意 extraUsers
只是 users
的别名。
从 Nix 不进行超出有限范围检查的静态检查的意义上说,它不是静态的,但我希望它能有所帮助。