on iko/ghcjs-patch-master help sign in
Revert "Drop def-pkg-overlay"
5f56d93Moritz Angermann
@@ -18,5 +18,7 @@ hackage: let haskell = {
18 # The *new* pkg set is one that build components.
18 # The *new* pkg set is one that build components.
19 # This also uses the module system for much greater extensibility.
19 # This also uses the module system for much greater extensibility.
20 # To make extend and override things, pass a modules argument to new-package-set.nix
20 # To make extend and override things, pass a modules argument to new-package-set.nix
21+ mkNewPkgSet
22+ = { pkgs, pkg-def, pkg-def-overlays ? [], modules ? [] }@args:
21− mkNewPkgSet = { pkgs, pkg-def, modules ? [] }@args: import ./new-package-set.nix (args // { inherit hackage; pkg-def = strip-pkg-def pkgs pkg-def; });
23+ import ./new-package-set.nix (args // { inherit hackage; pkg-def = strip-pkg-def pkgs pkg-def; });
22}; in haskell
24}; in haskell
new-package-set.nix+13−3
@@ -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;
23
23
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`.
28+ #
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
32+ (pkg-def hackage)
33+ (map (p: p hackage) pkg-def-overlays)
34+ ;
35+
26 })
36 })
27
37
28 # Supplies metadata
38 # Supplies metadata