Refactor loadImports function to add recursive capability of import

This commit is contained in:
ulic-youthlic 2025-07-12 03:53:16 +08:00
parent 2c997cddce
commit b54be83fd7
Signed by: youthlic
GPG key ID: 63E86C3C14A0D721
7 changed files with 31 additions and 28 deletions

View file

@ -1,3 +0,0 @@
{lib, ...}: {
imports = lib.youthlic.loadImports ./.;
}

View file

@ -1,3 +0,0 @@
{lib, ...}: {
imports = lib.youthlic.loadImports ./.;
}

View file

@ -1,17 +1,35 @@
final: _prev: {
youthlic = {
loadImports' = dir: f:
if (builtins.pathExists dir && (builtins.readFileType dir) == "directory")
then
with final;
pipe dir [
builtins.readDir
attrNames
(filter (name: name != "default.nix"))
f
(map (name: dir + "/${name}"))
]
else [];
loadImports = with final; flip youthlic.loadImports' (x: x);
final.pipe dir [
final.youthlic.loadImports
f
];
loadImports = dir:
with final;
if !(pathExists dir && builtins.readFileType dir == "directory")
then []
else let
items = pipe dir [builtins.readDir attrNames];
in
pipe items [
(concatMap
(name: let
path = dir + "/${name}";
type = builtins.readFileType path;
in
if type == "directory"
then
if pathExists (path + "/default.nix")
then [path]
else youthlic.loadImports path
else if type == "regular"
then
if hasSuffix ".nix" name
then [path]
else []
else []))
(filter (name: !hasSuffix "/default.nix" (toString name)))
];
};
}

View file

@ -1,3 +0,0 @@
{lib, ...}: {
imports = lib.youthlic.loadImports ./.;
}

View file

@ -1,3 +1,3 @@
{lib, ...}: {
imports = with lib; youthlic.loadImports' ./. (filter (name: name != "top-level"));
imports = with lib; youthlic.loadImports' ./. (filter (name: !hasSuffix "/top-level" (toString name)));
}

View file

@ -1,3 +0,0 @@
{lib, ...}: {
imports = lib.youthlic.loadImports ./.;
}

View file

@ -1,3 +0,0 @@
{lib, ...}: {
imports = lib.youthlic.loadImports ./.;
}