nixpkgs-extension/pkgs/default.nix

43 lines
921 B
Nix

{
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