{ pkgs, prev, lib, ... }: let dirs = path: lib.attrNames (lib.filterAttrs (_: t: t == "directory") (builtins.readDir path)); packagesFromTree = base: callPackage: lib.foldl' ( acc: shorthand: let shorthandDir = base + "/${shorthand}"; names = dirs shorthandDir; addOne = name: let pkgDir = shorthandDir + "/${name}"; in if builtins.pathExists (pkgDir + "/default.nix") then { ${name} = callPackage pkgDir { }; } else { }; in acc // lib.foldl' (a: n: a // addOne n) { } names ) { } (dirs base); byNamePkgs = if builtins.pathExists ./by-name then packagesFromTree ./by-name pkgs.callPackage else { }; byCategoryPkgs = import ./by-category { inherit pkgs prev lib packagesFromTree ; }; in byNamePkgs // byCategoryPkgs