From 7b79203f54853733d4fae88943829d0e24e6e49f Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Sun, 7 Jan 2024 12:00:08 -0500 Subject: massive overhaul --- lib.nix | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 lib.nix (limited to 'lib.nix') diff --git a/lib.nix b/lib.nix new file mode 100644 index 0000000..4ef3ed5 --- /dev/null +++ b/lib.nix @@ -0,0 +1,39 @@ +# functions to map a function over modules +# used to import all modules at once +# from hlissner +lib: rec { + mapModules = dir: func: + lib.filterAttrs (_: v: v != null) (lib.mapAttrs' + (n: v: let + path = "${toString dir}/${n}"; + in + if v == "directory" && builtins.pathExists "${path}/default.nix" + then lib.nameValuePair n (func path) + else if v == "regular" && n != "default.nix" && lib.hasSuffix ".nix" n + then lib.nameValuePair (lib.removeSuffix ".nix" n) (func path) + else lib.nameValuePair "" null) + (builtins.readDir dir)); + + mapModules' = dir: func: builtins.attrValues (mapModules dir func); + + mapModulesRec = dir: func: + lib.filterAttrs (_: v: v != null) (lib.mapAttrs' + (n: v: let + path = "${toString dir}/${n}"; + in + if v == "directory" + then lib.nameValuePair n (mapModulesRec path func) + else if v == "regular" && n != "default.nix" && lib.hasSuffix ".nix" n + then lib.nameValuePair (lib.removeSuffix ".nix" n) (func path) + else lib.nameValuePair "" null) + (builtins.readDir dir)); + + mapModulesRec' = dir: func: let + dirs = + lib.mapAttrsToList (k: _: "${dir}/${k}") + (lib.filterAttrs (_: v: v == "directory") (builtins.readDir dir)); + files = builtins.attrValues (mapModules dir lib.id); + paths = files ++ builtins.concatLists (builtins.map (d: mapModulesRec' d lib.id) dirs); + in + builtins.map func paths; +} -- cgit v1.2.3