diff --git a/default.nix b/default.nix index af5ac49c..ca28016d 100644 --- a/default.nix +++ b/default.nix @@ -18,7 +18,7 @@ let filterAttrNamesToList = filter: set: lib.foldl' (a: b: a ++ b) [ ] (map (e: if (filter e set.${e}) then [ e ] else [ ]) (lib.attrNames set)); - depotNames = lib.unique ((filterAttrNamesToList (name: type: name != "trusted" && type == "directory") (builtins.readDir ./depot)) ++ (filterAttrNamesToList (name: type: name != "pkgs" && type == "directory") (builtins.readDir ./depot/trusted))); + depotNames = lib.unique ((lib.folderList ./depot ["trusted"]) ++ (lib.folderList ./depot/trusted ["pkgs"])); depot = lib.mapListToAttrs (folder: lib.nameValuePair folder (lib.domainMerge { inherit folder; })) depotNames; /* diff --git a/depot/users/kat/default.nix b/depot/users/kat/default.nix index dff6c79b..7a2c9a6b 100644 --- a/depot/users/kat/default.nix +++ b/depot/users/kat/default.nix @@ -9,10 +9,7 @@ let katUser = { lib }: let (./. + "/${profile}") ]; }; -}; filterAttrNamesToList = filter: set: - lib.foldl' (a: b: a ++ b) [ ] - (map (e: if (filter e set.${e}) then [ e ] else [ ]) (lib.attrNames set)); -profileNames = (filterAttrNamesToList (name: type: name != "base" && type == "directory") (builtins.readDir ./.)); +}; profileNames = lib.folderList ./. ["base"]; userProfiles = with userProfiles; lib.genAttrs profileNames userImport // { base = { imports = [ ./nixos.nix (userImport "base") trustedImport ]; }; diff --git a/pkgs/lib/default.nix b/pkgs/lib/default.nix index e1342adc..c05625f2 100644 --- a/pkgs/lib/default.nix +++ b/pkgs/lib/default.nix @@ -15,4 +15,5 @@ domainMerge = import ./domain-merge.nix { inherit lib; }; modListMerge = import ./intersect-merge.nix { inherit lib; }; modList = import ./module-list.nix { inherit lib; }; + folderList = import ./folder-list.nix { inherit lib; }; }; in katlib diff --git a/pkgs/lib/folder-list.nix b/pkgs/lib/folder-list.nix new file mode 100644 index 00000000..2c50ed6e --- /dev/null +++ b/pkgs/lib/folder-list.nix @@ -0,0 +1,5 @@ +{ lib }: path: excludes: let +filterAttrNamesToList = filter: set: + lib.foldl' (a: b: a ++ b) [ ] + (map (e: if (filter e set.${e}) then [ e ] else [ ]) (lib.attrNames set)); +in (filterAttrNamesToList (name: type: ! (builtins.elem name excludes) && type == "directory") (builtins.readDir path))