@@ -14,12 +14,14 @@ with rec {
14 # cabal os, arch and compilers.
14 # cabal os, arch and compilers.
15 cabal = import ./cabal-os-arch-comp.nix;
15 cabal = import ./cabal-os-arch-comp.nix;
17− expr0 = flags: let e = cabalexpr {
17+ expr0 = flags: extraHsPkgs: let e = cabalexpr {
18 inherit flags;
18 inherit flags;
19 # null out self references. Tests, Benchmarks, ...
19 # null out self references. Tests, Benchmarks, ...
20 # naturally depend on the package (as a library), but
20 # naturally depend on the package (as a library), but
21 # we don't want those dependencies.
21 # we don't want those dependencies.
22+ hsPkgs = pkgs.haskellPackages
22− hsPkgs = pkgs.haskellPackages // { ${e.package.identifier.name} = null; };
23+ // { ${e.package.identifier.name} = null; }
23 # We also need to do some system pkgs -> haskell pkgs
25 # We also need to do some system pkgs -> haskell pkgs
24 # resolution.
26 # resolution.
25 pkgs = pkgs
27 pkgs = pkgs
@@ -72,8 +74,8 @@ with rec {
72# These are the keys that <pkg>.override can override.
74# These are the keys that <pkg>.override can override.
73# the ... is used to allow to override all potential
75# the ... is used to allow to override all potential
74# other keys, that the builder understands.
76# other keys, that the builder understands.
75−{ mkDerivation, stdenv, flags ? {}, ... }@args:
77+{ mkDerivation, stdenv, flags ? {}, hsPkgs ? {}, ... }@args:
76−let expr = expr0 flags;
78+let expr = expr0 flags hsPkgs;
77 pname = expr.package.identifier.name;
79 pname = expr.package.identifier.name;
78 pversion = expr.package.identifier.version;
80 pversion = expr.package.identifier.version;
79 builderArgs = {
81 builderArgs = {
@@ -105,7 +107,7 @@ let expr = expr0 flags;
105 inherit (expr) src;
107 inherit (expr) src;
106 } // pkgs.lib.optionalAttrs (builtins.hasAttr "postUnpack" expr) {
108 } // pkgs.lib.optionalAttrs (builtins.hasAttr "postUnpack" expr) {
107 inherit (expr) postUnpack;
109 inherit (expr) postUnpack;
108− } // builtins.removeAttrs args [ "mkDerivation" "stdenv" "flags" ];
110+ } // builtins.removeAttrs args [ "mkDerivation" "stdenv" "flags" "hsPkgs" ];
109in mkDerivation (builderArgs // pkgs.lib.optionalAttrs (expr.cabal-generator or "" == "hpack")
111in mkDerivation (builderArgs // pkgs.lib.optionalAttrs (expr.cabal-generator or "" == "hpack")
110 { preConfigure = "hpack;" + (builderArgs.preConfigure or "");
112 { preConfigure = "hpack;" + (builderArgs.preConfigure or "");
111 libraryToolDepends = builderArgs.libraryToolDepends ++ [ pkgs.haskellPackages.hpack ]; })
113 libraryToolDepends = builderArgs.libraryToolDepends ++ [ pkgs.haskellPackages.hpack ]; })