blob: c1b04d634d7e4634e9f76a1f907f8f99fe3a5998 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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) || ("flake.nix" == (builtins.baseNameOf path)) || ("shell.nix" == (builtins.baseNameOf 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;
}
|