mirror of
https://github.com/Jokiller230/puzzlevision.git
synced 2025-09-09 20:30:05 +00:00
✨ Add custom packages support through pkgs directory
This commit is contained in:
parent
f6058e8547
commit
6c0cc52a3c
10 changed files with 46 additions and 32 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue