summary refs log tree commit diff
path: root/pkgs/development/haskell-modules
diff options
context:
space:
mode:
authorMathieu Boespflug <m@tweag.io>2016-01-17 20:59:20 +0100
committerMathieu Boespflug <m@tweag.io>2016-03-04 21:18:14 +0100
commitff9cba94f68428ebe31a057892ae32de85d76bfb (patch)
tree372f241cfe4a932a55ced7d4b740fbd3d6750579 /pkgs/development/haskell-modules
parentbe63be9d042839f1c85de7d75ca957c9cff6be57 (diff)
downloadnixlib-ff9cba94f68428ebe31a057892ae32de85d76bfb.tar
nixlib-ff9cba94f68428ebe31a057892ae32de85d76bfb.tar.gz
nixlib-ff9cba94f68428ebe31a057892ae32de85d76bfb.tar.bz2
nixlib-ff9cba94f68428ebe31a057892ae32de85d76bfb.tar.lz
nixlib-ff9cba94f68428ebe31a057892ae32de85d76bfb.tar.xz
nixlib-ff9cba94f68428ebe31a057892ae32de85d76bfb.tar.zst
nixlib-ff9cba94f68428ebe31a057892ae32de85d76bfb.zip
haskell: Rename file where buildStackProject is defined.
Diffstat (limited to 'pkgs/development/haskell-modules')
-rw-r--r--pkgs/development/haskell-modules/generic-stack-builder.nix40
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
+  '';
+})