diff options
| author | outremonde <outremonde@vivaldi.net> | 2025-06-10 20:32:00 -0400 |
|---|---|---|
| committer | outremonde <outremonde@vivaldi.net> | 2025-06-10 20:32:00 -0400 |
| commit | 9786eb8672213344d8d1b7bdef12bc94510b20db (patch) | |
| tree | b7d79440800c92d32187ab32c636b0830c94a610 /lib/umport.nix | |
initialized repository
Former-commit-id: 84647f22b951a957b2b83885b612115d473f6626
Diffstat (limited to 'lib/umport.nix')
| -rwxr-xr-x | lib/umport.nix | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/umport.nix b/lib/umport.nix new file mode 100755 index 0000000..f076d85 --- /dev/null +++ b/lib/umport.nix @@ -0,0 +1,52 @@ +{lib, ...}: let + umport = inputs @ { + path ? null, + paths ? [], + include ? [], + exclude ? [], + recursive ? true, + }: + with lib; + with fileset; let + excludedFiles = filter (path: pathIsRegularFile path) exclude; + excludedDirs = filter (path: pathIsDirectory path) exclude; + isExcluded = path: + if (elem path excludedFiles) || (hasSuffix "flake.nix" path) || (hasSuffix "shell.nix" path) + then true + else (filter (excludedDir: lib.path.hasPrefix excludedDir path) excludedDirs) != []; + in + unique ( + ( + filter + (file: pathIsRegularFile file && hasSuffix ".nix" (builtins.toString file) && !isExcluded file) + (concatMap ( + _path: + if recursive + then toList _path + else + mapAttrsToList ( + name: type: + _path + + ( + if type == "directory" + then "/${name}/default.nix" + else "/${name}" + ) + ) + (builtins.readDir _path) + ) + (unique ( + if path == null + then paths + else [path] ++ paths + ))) + ) + ++ ( + if recursive + then concatMap (path: toList path) (unique include) + else unique include + ) + ); +in { + inherit umport; +} |
