@@ -1,5 +1,5 @@
1−let f = { hackage, pkgs, pkg-def, modules ? [] }: let
1+let f = { hackage, pkgs, pkg-def, pkg-def-overlays ? [], modules ? [] }: let
2− buildModules = f { inherit hackage pkg-def modules; pkgs = pkgs.buildPackages; };
2+ buildModules = f { inherit hackage pkg-def pkg-def-overlays modules; pkgs = pkgs.buildPackages; };
3in pkgs.lib.evalModules {
3in pkgs.lib.evalModules {
4 modules = modules ++ [
4 modules = modules ++ [
5 ({ lib, ... }: {
5 ({ lib, ... }: {
@@ -22,7 +22,17 @@ in pkgs.lib.evalModules {
22 hackage.db = hackage;
22 hackage.db = hackage;
24 # Set the plan for modules/plan.nix
24 # Set the plan for modules/plan.nix
25− plan.pkg-def = pkg-def;
25+ plan.pkg-def = hackage: with builtins;
26+ # fold any potential `pkg-def-overlays`
27+ # onto the `pkg-def`.
29+ # This means you can have a base definition (e.g. stackage)
30+ # and augment it with custom packages to your liking.
31+ foldl' lib.recursiveUpdate
33+ (map (p: p hackage) pkg-def-overlays)
28 # Supplies metadata
38 # Supplies metadata