Nix:将键列表映射到属性集成员

问题描述 投票:0回答:1

我正在尝试将属性名称列表映射到 Nix 中的属性集,其中列表包含用于创建新属性集成员的某些键。我简化的高级目标是我想将配置行

users.users.myuser.packages = [pkgs.curl];
应用于没有代码重复的用户列表。

我试过这样的事情:

> userList = ["foo" "bar]
> users = { users = {}; } 
> builtins.map (u: users.users."${u}" = {}) userList

这失败了,因为有一个意想不到的

=
。我有一种感觉,使用
map
是错误的操作,但我不知道我想在这里执行的功能操作的名称是什么

functional-programming nix
1个回答
0
投票

您必须创建一个属性集列表,然后您可以将其转换为真实的属性集:

    let
        users = ["foo" "bar"];
        wantedPackages = [ "curl" ];
    in
        builtins.listToAttrs (builtins.map(u: { name = u; value = { packages = wantedPackages;}; }) users);
© www.soinside.com 2019 - 2024. All rights reserved.