diff --git a/lib/sources.nix b/lib/sources.nix index f41abe1e1eae..8f312a9db5c4 100644 --- a/lib/sources.nix +++ b/lib/sources.nix @@ -26,6 +26,12 @@ rec { cleanSource = builtins.filterSource cleanSourceFilter; + # Filter sources by a list of regular expressions. + # + # E.g. `src = sourceByRegex ./my-subproject [".*\.py$" "^database.sql$"]` + sourceByRegex = src: regexes: builtins.filterSource (path: type: + let relPath = lib.removePrefix (toString src + "/") (toString path); + in lib.any (re: builtins.match re relPath != null) regexes) src; # Get all files ending with the specified suffices from the given # directory or its descendants. E.g. `sourceFilesBySuffices ./dir