pkgs: let getPackages = dir: let entries = builtins.readDir dir; procEntry = name: type: let path = dir + "/${name}"; in if type == "directory" then (if builtins.pathExists (path + "/default.nix") then [ path ] else [ ]) else [ ]; in builtins.concatLists (builtins.attrValues (builtins.mapAttrs procEntry entries)); buildPackage = path: { name = builtins.baseNameOf (toString path); value = pkgs.callPackage (path + "/default.nix") { }; }; in builtins.listToAttrs (builtins.map buildPackage (getPackages ../packages))