{ lib }: with builtins; with lib; rec { ifelse = a: b: c: if a then b else c; cwd = toString ./.; lst = { p ? cwd, t ? "regular", b ? false }: (lists.forEach (attrNames (filterAttrs (n: v: v == t) (readDir p))) (v: ((optionalString b "${p}/") + v))); lsf = p: (lst { p = p; }); lsd = p: (lst { p = p; t = "directory"; b = true; }); lsfRec = p: b: flatten ((map (np: lsfRec np b) (lsd p)) ++ (lst { p = p; b = b; })); }