2025-01-30 14:48:17 -05:00
|
|
|
_final: prev:
|
|
|
|
|
2025-02-04 21:57:59 -05:00
|
|
|
let
|
2025-02-05 17:25:29 -05:00
|
|
|
listToAttrsByField =
|
|
|
|
field: list:
|
|
|
|
builtins.listToAttrs (
|
|
|
|
map (v: {
|
|
|
|
name = v.${field};
|
|
|
|
value = v;
|
|
|
|
}) list
|
|
|
|
);
|
2025-02-22 17:39:12 -05:00
|
|
|
|
|
|
|
listToAttrsByPnameOrName =
|
|
|
|
list:
|
|
|
|
builtins.listToAttrs (
|
|
|
|
map (v: {
|
2025-02-24 21:14:38 -05:00
|
|
|
name = v."pname" or v."name";
|
2025-02-22 17:39:12 -05:00
|
|
|
value = v;
|
|
|
|
}) list
|
|
|
|
);
|
2025-02-04 21:57:59 -05:00
|
|
|
lib = prev.lib;
|
2025-02-22 17:39:12 -05:00
|
|
|
# packagesDirectory = lib.filesystem.listFilesRecursive ../pkgs;
|
2025-02-24 21:14:38 -05:00
|
|
|
# [ package1/package.nix package2/package.nix package2/hello.sh ]
|
2025-02-22 17:39:12 -05:00
|
|
|
packages = lib.pipe (lib.filesystem.listFilesRecursive ../pkgs) [
|
2025-02-05 17:25:29 -05:00
|
|
|
# Get only files called package.nix
|
2025-02-24 21:14:38 -05:00
|
|
|
# [ package1/package.nix package2/package.nix ]
|
2025-02-22 17:39:12 -05:00
|
|
|
(builtins.filter (name: lib.hasSuffix "package.nix" name))
|
2025-02-24 21:14:38 -05:00
|
|
|
|
2025-02-05 17:25:29 -05:00
|
|
|
# Apply callPackage to create a derivation
|
2025-02-24 21:14:38 -05:00
|
|
|
# Must use final.callPackage to avoid infinite recursion
|
|
|
|
# [ package1.drv package2.drv ]
|
2025-02-22 17:39:12 -05:00
|
|
|
(builtins.map (name: prev.callPackage name { }))
|
2025-02-24 21:14:38 -05:00
|
|
|
|
2025-02-05 17:25:29 -05:00
|
|
|
# Convert the list to an attrset
|
2025-02-24 21:14:38 -05:00
|
|
|
# { package1 = package1.drv, package2 = package2.drv }
|
2025-02-22 17:39:12 -05:00
|
|
|
listToAttrsByPnameOrName
|
2025-02-04 21:57:59 -05:00
|
|
|
];
|
|
|
|
in
|
|
|
|
|
2025-02-24 21:14:38 -05:00
|
|
|
{
|
|
|
|
nmasur = packages;
|
|
|
|
}
|