on iko/ghcjs-patch-master help sign in
add cabal-generator logic
04d1e36Moritz Angermann
compat/driver.nix+33−30
@@ -48,33 +48,36 @@ with rec {
48let expr = expr0 flags;
48let expr = expr0 flags;
49 pname = expr.package.identifier.name;
49 pname = expr.package.identifier.name;
50 pversion = expr.package.identifier.version;
50 pversion = expr.package.identifier.version;
51−in mkDerivation ({
51+ builderArgs = {
52− inherit pname;
52+ inherit pname;
53− version = pversion;
53+ version = pversion;
54− sha256 = hackage.hashes.${pname}.${pversion} or null;
54+ sha256 = hackage.hashes.${pname}.${pversion} or null;
55−
55+
56− isLibrary = builtins.hasAttr pname expr.components;
56+ isLibrary = builtins.hasAttr pname expr.components;
57− isExecutable = builtins.hasAttr "exes" expr.components;
57+ isExecutable = builtins.hasAttr "exes" expr.components;
58−
58+
59− homepage = expr.package.homepage;
59+ homepage = expr.package.homepage;
60− description = expr.package.synopsis;
60+ description = expr.package.synopsis;
61− license = resolve.license stdenv expr.package.license;
61+ license = resolve.license stdenv expr.package.license;
62−
62+
63− configureFlags = pkgs.lib.mapAttrsToList (flag: enabled: (if enabled then "-f" else "-f-") + flag) expr.flags;
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) {
64+ } // pkgs.lib.optionalAttrs (builtins.hasAttr pname expr.components) {
65− libraryHaskellDepends = expr.components.${pname}.depends or [];
65+ libraryHaskellDepends = expr.components.${pname}.depends or [];
66− libraryPkgconfigDepends = expr.components.${pname}.pkgconfig or [];
66+ libraryPkgconfigDepends = expr.components.${pname}.pkgconfig or [];
67− librarySystemDepends = expr.components.${pname}.libs or [];
67+ librarySystemDepends = expr.components.${pname}.libs or [];
68− libraryToolDepends = expr.components.${pname}.build-tools or [];
68+ libraryToolDepends = expr.components.${pname}.build-tools or [];
69−} // pkgs.lib.optionalAttrs (builtins.hasAttr "exes" expr.components) {
69+ } // pkgs.lib.optionalAttrs (builtins.hasAttr "exes" expr.components) {
70− executableHaskellDepends = collectAttr "depends" expr.components.exes;
70+ executableHaskellDepends = collectAttr "depends" expr.components.exes;
71− executableToolDepends = collectAttr "build-tools" expr.components.exes;
71+ executableToolDepends = collectAttr "build-tools" expr.components.exes;
72−} // pkgs.lib.optionalAttrs (builtins.hasAttr "tests" expr.components) {
72+ } // pkgs.lib.optionalAttrs (builtins.hasAttr "tests" expr.components) {
73− testHaskellDepends = collectAttr "depends" expr.components.tests;
73+ testHaskellDepends = collectAttr "depends" expr.components.tests;
74−} // pkgs.lib.optionalAttrs (builtins.hasAttr "benchmarks" expr.components) {
74+ } // pkgs.lib.optionalAttrs (builtins.hasAttr "benchmarks" expr.components) {
75− benchmarkHaskellDepends = collectAttr "depends" expr.components.benchmarks;
75+ benchmarkHaskellDepends = collectAttr "depends" expr.components.benchmarks;
76−} // pkgs.lib.optionalAttrs (builtins.hasAttr "src" expr) {
76+ } // pkgs.lib.optionalAttrs (builtins.hasAttr "src" expr) {
77− inherit (expr) src;
77+ inherit (expr) src;
78−} // pkgs.lib.optionalAttrs (builtins.hasAttr "postUnpack" expr) {
78+ } // pkgs.lib.optionalAttrs (builtins.hasAttr "postUnpack" expr) {
79− inherit (expr) postUnpack;
79+ inherit (expr) postUnpack;
80−} // builtins.removeAttrs args [ "mkDerivation" "stdenv" "flags" ])
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 ]; })