diff options
Diffstat (limited to 'pkgs/development/haskell-modules')
-rw-r--r-- | pkgs/development/haskell-modules/generic-stack-builder.nix | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/pkgs/development/haskell-modules/generic-stack-builder.nix b/pkgs/development/haskell-modules/generic-stack-builder.nix new file mode 100644 index 000000000000..80b702039557 --- /dev/null +++ b/pkgs/development/haskell-modules/generic-stack-builder.nix @@ -0,0 +1,40 @@ +{ stdenv, ghc, pkgconfig, glibcLocales }: + +with stdenv.lib; + +{ buildInputs ? [] +, extraArgs ? [] +, LD_LIBRARY_PATH ? "" +, ... +}@args: + +stdenv.mkDerivation (args // { + + buildInputs = + buildInputs ++ + optional stdenv.isLinux glibcLocales ++ + [ ghc pkgconfig ]; + + STACK_IN_NIX_SHELL=1; + STACK_IN_NIX_EXTRA_ARGS = + concatMap (pkg: ["--extra-lib-dirs=${pkg}/lib" + "--extra-include-dirs=${pkg}/include"]) buildInputs ++ + extraArgs; + + # XXX: workaround for https://ghc.haskell.org/trac/ghc/ticket/11042. + LD_LIBRARY_PATH = "${makeLibraryPath buildInputs}:${LD_LIBRARY_PATH}"; + + preferLocalBuild = true; + + configurePhase = args.configurePhase or "stack setup"; + + buildPhase = args.buildPhase or "stack build"; + + checkPhase = args.checkPhase or "stack test"; + + doCheck = args.doCheck or true; + + installPhase = args.installPhase or '' + stack --local-bin-path=$out/bin build --copy-bins + ''; +}) |