self: super: let lib = super.lib; in { lib = (super.lib or {}) // { findFiles = pattern: with builtins; let go = curr: let dir = readDir curr; in let files = lib.filterAttrs (name: type: type == "regular" && match pattern name != null) dir; in let dirs = lib.filterAttrs (name: type: type == "directory") dir; in map (name: "${curr}/${name}") (attrNames files) ++ lib.concatMap (name: go "${curr}/${name}") (attrNames dirs) ; in root: go (toPath root); }; }