Nix, как я могу ссылаться на имя пользователя из users.extraUsers? - PullRequest
1 голос
/ 19 июня 2020

Я хотел бы сослаться на пользователя в каком-нибудь выражении nix. Однако вместо того, чтобы просто устанавливать для него строковое значение, например bob, я хочу сослаться на пользователя, который уже определен в users.extraUsers, поэтому я предполагаю что-то вроде users.extraUsers.bob.userName. Это возможно?

Причина в том, что это дает мне некоторую дополнительную c гарантию того, что я ссылаюсь на пользователя, который будет существовать.

1 Ответ

1 голос
/ 20 июня 2020

Вы можете убедиться, что пользователь определен, посмотрев его.

$ 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 `${bob}' which was not defined."
error: You referenced a user `bob' which was not defined.

Обратите внимание, что extraUsers - это просто псевдоним для users.

...