|
3 | 3 | rootDir, |
4 | 4 | machinesDir, |
5 | 5 | ... |
6 | | -}: let |
| 6 | +}: |
| 7 | +let |
7 | 8 | inherit (import ./current-flake.nix) lib; |
8 | | - inherit (builtins) attrValues map filter concatLists length listToAttrs typeOf split tail; |
| 9 | + inherit (builtins) |
| 10 | + attrValues |
| 11 | + map |
| 12 | + filter |
| 13 | + concatLists |
| 14 | + length |
| 15 | + listToAttrs |
| 16 | + typeOf |
| 17 | + split |
| 18 | + tail |
| 19 | + ; |
9 | 20 | inherit (lib) pipe filterAttrs strings; |
10 | 21 | inherit (strings) concatStringsSep; |
11 | | -in rec { |
12 | | - isSubsetOf = needle: haystack: |
13 | | - length (lib.lists.intersectLists needle haystack) |
14 | | - == length needle; |
| 22 | +in |
| 23 | +rec { |
| 24 | + isSubsetOf = needle: haystack: length (lib.lists.intersectLists needle haystack) == length needle; |
15 | 25 |
|
16 | | - haveCommonElements = needle: haystack: |
17 | | - length (lib.lists.intersectLists needle haystack) |
18 | | - > 0; |
| 26 | + haveCommonElements = needle: haystack: length (lib.lists.intersectLists needle haystack) > 0; |
19 | 27 |
|
20 | 28 | allUsersMembersOfAllGroups = groups: allUsersMembersOfAllGroups' usersInfo groups; |
21 | | - allUsersMembersOfAllGroups' = users: groups: |
22 | | - if groups == [] |
23 | | - then {} |
| 29 | + allUsersMembersOfAllGroups' = |
| 30 | + users: groups: |
| 31 | + if groups == [ ] then |
| 32 | + { } |
24 | 33 | else |
25 | | - filterAttrs |
26 | | - (key: value: isSubsetOf groups (value.extraGroups or [])) |
27 | | - users; |
| 34 | + filterAttrs (key: value: isSubsetOf groups (value.extraGroups or [ ])) users; |
28 | 35 |
|
29 | 36 | allUsersMembersOfAnyGroup = groups: allUsersMembersOfAnyGroup' usersInfo groups; |
30 | | - allUsersMembersOfAnyGroup' = users: groups: |
31 | | - if groups == [] |
32 | | - then {} |
| 37 | + allUsersMembersOfAnyGroup' = |
| 38 | + users: groups: |
| 39 | + if groups == [ ] then |
| 40 | + { } |
33 | 41 | else |
34 | | - filterAttrs |
35 | | - (key: value: haveCommonElements groups (value.extraGroups or [])) |
36 | | - users; |
| 42 | + filterAttrs (key: value: haveCommonElements groups (value.extraGroups or [ ])) users; |
37 | 43 |
|
38 | | - missing = attrs: key: |
39 | | - !(attrs ? "${key}"); |
| 44 | + missing = attrs: key: !(attrs ? "${key}"); |
40 | 45 |
|
41 | 46 | allAssignedGroups = predefinedGroups: allAssignedGroups' usersInfo predefinedGroups; |
42 | | - allAssignedGroups' = users: predefinedGroups: |
| 47 | + allAssignedGroups' = |
| 48 | + users: predefinedGroups: |
43 | 49 | pipe users [ |
44 | 50 | attrValues |
45 | | - (map (u: u.extraGroups or [])) |
| 51 | + (map (u: u.extraGroups or [ ])) |
46 | 52 | concatLists |
47 | 53 | lib.lists.unique |
48 | 54 | (filter (g: missing predefinedGroups g)) |
49 | 55 | (map (g: { |
50 | 56 | name = g; |
51 | | - value = {}; |
| 57 | + value = { }; |
52 | 58 | })) |
53 | 59 | listToAttrs |
54 | 60 | ]; |
55 | 61 |
|
56 | 62 | allUserKeysForGroup = groups: allUserKeysForGroup' usersInfo groups; |
57 | | - allUserKeysForGroup' = users: groups: |
58 | | - concatLists |
59 | | - (map (value: value.openssh.authorizedKeys.keys or []) |
60 | | - (attrValues (allUsersMembersOfAnyGroup' users groups))); |
| 63 | + allUserKeysForGroup' = |
| 64 | + users: groups: |
| 65 | + concatLists ( |
| 66 | + map (value: value.openssh.authorizedKeys.keys or [ ]) ( |
| 67 | + attrValues (allUsersMembersOfAnyGroup' users groups) |
| 68 | + ) |
| 69 | + ); |
61 | 70 |
|
62 | | - zfsFileSystems = datasetList: let |
63 | | - zfsRoot = "zfs_root"; |
64 | | - splitPath = path: filter (x: (typeOf x) == "string") (split "/" path); |
65 | | - pathTail = path: concatStringsSep "/" (tail (splitPath path)); |
66 | | - makeZfs = zfsDataset: { |
67 | | - name = "/" + pathTail zfsDataset; |
68 | | - value = { |
69 | | - device = "${zfsRoot}/${zfsDataset}"; |
70 | | - fsType = "zfs"; |
71 | | - options = ["zfsutil"]; |
| 71 | + zfsFileSystems = |
| 72 | + datasetList: |
| 73 | + let |
| 74 | + zfsRoot = "zfs_root"; |
| 75 | + splitPath = path: filter (x: (typeOf x) == "string") (split "/" path); |
| 76 | + pathTail = path: concatStringsSep "/" (tail (splitPath path)); |
| 77 | + makeZfs = zfsDataset: { |
| 78 | + name = "/" + pathTail zfsDataset; |
| 79 | + value = { |
| 80 | + device = "${zfsRoot}/${zfsDataset}"; |
| 81 | + fsType = "zfs"; |
| 82 | + options = [ "zfsutil" ]; |
| 83 | + }; |
72 | 84 | }; |
73 | | - }; |
74 | | - in |
| 85 | + in |
75 | 86 | listToAttrs (map makeZfs datasetList); |
76 | 87 |
|
77 | 88 | allUsers = builtins.attrNames ( |
78 | | - lib.filterAttrs |
79 | | - (n: v: v == "directory") |
80 | | - (builtins.readDir "${usersDir}") |
| 89 | + lib.filterAttrs (n: v: v == "directory") (builtins.readDir "${usersDir}") |
81 | 90 | ); |
82 | 91 |
|
83 | 92 | readUserInfo = user: import "${usersDir}/${user}/user-info.nix"; |
|
0 commit comments