diff options
Diffstat (limited to 'pkgs/development')
-rw-r--r-- | pkgs/development/haskell-modules/generic-builder.nix | 7 | ||||
-rw-r--r-- | pkgs/development/haskell-modules/lib.nix | 10 |
2 files changed, 16 insertions, 1 deletions
diff --git a/pkgs/development/haskell-modules/generic-builder.nix b/pkgs/development/haskell-modules/generic-builder.nix index faf80da0c7d..2f9127e30f3 100644 --- a/pkgs/development/haskell-modules/generic-builder.nix +++ b/pkgs/development/haskell-modules/generic-builder.nix @@ -464,7 +464,12 @@ stdenv.mkDerivation ({ installPhase = '' runHook preInstall - ${if !isLibrary then "${setupCommand} install" else '' + ${if !isLibrary && buildTarget == "" then "${setupCommand} install" + # ^^ if the project is not a library, and no build target is specified, we can just use "install". + else if !isLibrary then "${setupCommand} copy ${buildTarget}" + # ^^ if the project is not a library, and we have a build target, then use "copy" to install + # just the target specified; "install" will error here, since not all targets have been built. + else '' ${setupCommand} copy local packageConfDir="$out/lib/${ghc.name}/package.conf.d" local packageConfFile="$packageConfDir/${pname}-${version}.conf" diff --git a/pkgs/development/haskell-modules/lib.nix b/pkgs/development/haskell-modules/lib.nix index 1537cd6466c..682953c3ce9 100644 --- a/pkgs/development/haskell-modules/lib.nix +++ b/pkgs/development/haskell-modules/lib.nix @@ -196,6 +196,16 @@ rec { appendPatch = drv: x: appendPatches drv [x]; appendPatches = drv: xs: overrideCabal drv (drv: { patches = (drv.patches or []) ++ xs; }); + /* Set a specific build target instead of compiling all targets in the package. + * For example, imagine we have a .cabal file with a library, and 2 executables "dev" and "server". + * We can build only "server" and not wait on the compilation of "dev" by useing setBuildTarget as follows: + * + * setBuildTarget (callCabal2nix "thePackageName" thePackageSrc {}) "server" + * + */ + setBuildTargets = drv: xs: overrideCabal drv (drv: { buildTarget = lib.concatStringsSep " " xs; }); + setBuildTarget = drv: x: setBuildTargets drv [x]; + doHyperlinkSource = drv: overrideCabal drv (drv: { hyperlinkSource = true; }); dontHyperlinkSource = drv: overrideCabal drv (drv: { hyperlinkSource = false; }); |