@@ -48,33 +48,36 @@ with rec {
4848let expr = expr0 flags;
4949 pname = expr.package.identifier.name;
5050 pversion = expr.package.identifier.version;
51−in mkDerivation ({
52− inherit pname;
53− version = pversion;
54− sha256 = hackage.hashes.${pname}.${pversion} or null;
55−
56− isLibrary = builtins.hasAttr pname expr.components;
57− isExecutable = builtins.hasAttr "exes" expr.components;
58−
59− homepage = expr.package.homepage;
60− description = expr.package.synopsis;
61− license = resolve.license stdenv expr.package.license;
62−
63− configureFlags = pkgs.lib.mapAttrsToList (flag: enabled: (if enabled then "-f" else "-f-") + flag) expr.flags;
64−} // pkgs.lib.optionalAttrs (builtins.hasAttr pname expr.components) {
65− libraryHaskellDepends = expr.components.${pname}.depends or [];
66− libraryPkgconfigDepends = expr.components.${pname}.pkgconfig or [];
67− librarySystemDepends = expr.components.${pname}.libs or [];
68− libraryToolDepends = expr.components.${pname}.build-tools or [];
69−} // pkgs.lib.optionalAttrs (builtins.hasAttr "exes" expr.components) {
70− executableHaskellDepends = collectAttr "depends" expr.components.exes;
71− executableToolDepends = collectAttr "build-tools" expr.components.exes;
72−} // pkgs.lib.optionalAttrs (builtins.hasAttr "tests" expr.components) {
73− testHaskellDepends = collectAttr "depends" expr.components.tests;
74−} // pkgs.lib.optionalAttrs (builtins.hasAttr "benchmarks" expr.components) {
75− benchmarkHaskellDepends = collectAttr "depends" expr.components.benchmarks;
76−} // pkgs.lib.optionalAttrs (builtins.hasAttr "src" expr) {
77− inherit (expr) src;
78−} // pkgs.lib.optionalAttrs (builtins.hasAttr "postUnpack" expr) {
79− inherit (expr) postUnpack;
80−} // builtins.removeAttrs args [ "mkDerivation" "stdenv" "flags" ])
51+ builderArgs = {
52+ inherit pname;
53+ version = pversion;
54+ sha256 = hackage.hashes.${pname}.${pversion} or null;
55+
56+ isLibrary = builtins.hasAttr pname expr.components;
57+ isExecutable = builtins.hasAttr "exes" expr.components;
58+
59+ homepage = expr.package.homepage;
60+ description = expr.package.synopsis;
61+ license = resolve.license stdenv expr.package.license;
62+
63+ configureFlags = pkgs.lib.mapAttrsToList (flag: enabled: (if enabled then "-f" else "-f-") + flag) expr.flags;
64+ } // pkgs.lib.optionalAttrs (builtins.hasAttr pname expr.components) {
65+ libraryHaskellDepends = expr.components.${pname}.depends or [];
66+ libraryPkgconfigDepends = expr.components.${pname}.pkgconfig or [];
67+ librarySystemDepends = expr.components.${pname}.libs or [];
68+ libraryToolDepends = expr.components.${pname}.build-tools or [];
69+ } // pkgs.lib.optionalAttrs (builtins.hasAttr "exes" expr.components) {
70+ executableHaskellDepends = collectAttr "depends" expr.components.exes;
71+ executableToolDepends = collectAttr "build-tools" expr.components.exes;
72+ } // pkgs.lib.optionalAttrs (builtins.hasAttr "tests" expr.components) {
73+ testHaskellDepends = collectAttr "depends" expr.components.tests;
74+ } // pkgs.lib.optionalAttrs (builtins.hasAttr "benchmarks" expr.components) {
75+ benchmarkHaskellDepends = collectAttr "depends" expr.components.benchmarks;
76+ } // pkgs.lib.optionalAttrs (builtins.hasAttr "src" expr) {
77+ inherit (expr) src;
78+ } // pkgs.lib.optionalAttrs (builtins.hasAttr "postUnpack" expr) {
79+ inherit (expr) postUnpack;
80+ } // builtins.removeAttrs args [ "mkDerivation" "stdenv" "flags" ];
81+in mkDerivation (builderArgs // pkgs.lib.optionalAttrs (expr.cabal-generator or "" == "hpack")
82+ { preConfigure = "hpack;" + (builderArgs.preConfigure or "");
83+ libraryToolDepends = builderArgs.libraryToolDepends ++ [ pkgs.haskellPackages.hpack ]; })