Add custom packages support through pkgs directory

This commit is contained in:
Jo 2025-08-27 00:19:31 +02:00
parent f6058e8547
commit 6c0cc52a3c
10 changed files with 46 additions and 32 deletions

View file

@ -26,6 +26,18 @@ let
else
[ ];
filesystemEntityToPackage =
directory: pkgs: pkgArgs: name: type:
if type == "directory" then
dirToPkgAttrSet "${directory}/${name}" pkgs pkgArgs
else if name == "default.nix" then
{
${builtins.unsafeDiscardStringContext (builtins.baseNameOf directory)} =
pkgs.callPackage "${directory}/${name}" pkgArgs;
}
else
{ };
dirToModuleList =
directory:
let
@ -50,12 +62,25 @@ let
acc // (filesystemEntityToAttrSet directory importArgs name (builtins.getAttr name readDir))
) { } (builtins.attrNames readDir);
dirToPkgAttrSet =
directory: pkgs: pkgArgs:
let
# Read provided directory only once at the very start and save the result.
readDir = readDirectory directory;
in
builtins.foldl' (
acc: name:
acc // (filesystemEntityToPackage directory pkgs pkgArgs name (builtins.getAttr name readDir))
) { } (builtins.attrNames readDir);
puzzlelib = dirToAttrSet ../../lib { inherit lib self; } // {
inherit
dirToAttrSet
dirToPkgAttrSet
dirToModuleList
filesystemEntityToList
filesystemEntityToAttrSet
filesystemEntityToPackage
;
};
in