我正在尝试将属性名称列表映射到 Nix 中的属性集,其中列表包含用于创建新属性集成员的某些键。我简化的高级目标是我想将配置行
users.users.myuser.packages = [pkgs.curl];
应用于没有代码重复的用户列表。
我试过这样的事情:
> userList = ["foo" "bar]
> users = { users = {}; }
> builtins.map (u: users.users."${u}" = {}) userList
这失败了,因为有一个意想不到的
=
。我有一种感觉,使用map
是错误的操作,但我不知道我想在这里执行的功能操作的名称是什么
您必须创建一个属性集列表,然后您可以将其转换为真实的属性集:
let
users = ["foo" "bar"];
wantedPackages = [ "curl" ];
in
builtins.listToAttrs (builtins.map(u: { name = u; value = { packages = wantedPackages;}; }) users);