From 36176f647c135cb16cb009f5b4410f6f6ea65775 Mon Sep 17 00:00:00 2001 From: Gerg-L Date: Sun, 3 Dec 2023 21:55:37 -0500 Subject: [PATCH] mkPackages 2.0 --- lib/default.nix | 46 ++++++++++++++++--- packages/{images.nix => images/package.nix} | 0 packages/{papermc.nix => papermc/package.nix} | 0 3 files changed, 39 insertions(+), 7 deletions(-) rename packages/{images.nix => images/package.nix} (100%) rename packages/{papermc.nix => papermc/package.nix} (100%) diff --git a/lib/default.nix b/lib/default.nix index 10111c7..8f6661b 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -105,17 +105,49 @@ rec { names ); + /* / -> packages named by directory + //call.nix -> callPackage override imported via import pkgs + call.nix example + pkgs: { + inherit (pkgs.python3Packages) callPackage; + args = {}; + } + + //package.nix -> the package itself + */ mkPackages = path: pkgs: lib.pipe path [ - listNixFilesRecursive - (map ( - x: { - name = lib.removeSuffix ".nix" (builtins.baseNameOf x); - value = pkgs.callPackage x { }; - } + builtins.readDir + (lib.filterAttrs (_: v: v == "directory")) + (lib.mapAttrs ( + n: _: + let + addArgs = + x: + lib.setFunctionArgs x ( + lib.mapAttrs + ( + n: v: + { + inherit inputs self; + #sources = import ../npins; + } + .${n} or v + ) + (lib.functionArgs x) + ); + in + + if builtins.pathExists "${path}/${n}/call.nix" then + let + x = import "${path}/${n}/call.nix" pkgs; + in + (addArgs x.callPackage "${path}/${n}/package.nix") x.args + else + (addArgs pkgs.callPackage "${path}/${n}/package.nix") {} + )) - builtins.listToAttrs ]; _file = ./default.nix; } diff --git a/packages/images.nix b/packages/images/package.nix similarity index 100% rename from packages/images.nix rename to packages/images/package.nix diff --git a/packages/papermc.nix b/packages/papermc/package.nix similarity index 100% rename from packages/papermc.nix rename to packages/papermc/package.nix