{ lib }: { collectProfiles = set: let collectNestedProfiles = set: lib.mapAttrsToList (n: v: if builtins.isAttrs v then [ v.default or null ] ++ collectNestedProfiles v else null ) set; in builtins.filter (x: x != null) (lib.flatten (collectNestedProfiles set)); pathsIn = dir: let fullPath = name: "${toString dir}/${name}"; in map fullPath (lib.attrNames (lib.safeReadDir dir)); unifyOverlays = channels: map (o: if builtins.isFunction (o null null) then o channels else o); }