mirror of
https://github.com/Jokiller230/puzzlevision.git
synced 2025-09-10 12:50: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
|
@ -5,5 +5,8 @@
|
|||
|
||||
# Automagically imports systems from "/systems/arch-classname/system-name".
|
||||
./systems.nix
|
||||
|
||||
# Automagically import custom packages defined in "/pkgs/pkg-name/default.nix"
|
||||
./packages.nix
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
11
modules/flake/packages.nix
Normal file
11
modules/flake/packages.nix
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
self,
|
||||
...
|
||||
}:
|
||||
{
|
||||
perSystem =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
packages = self.lib.dirToPkgAttrSet ../../pkgs pkgs { };
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue