1{ stdenv, ghc, pkgconfig, glibcLocales, cacert }@depArgs:
2
3with stdenv.lib;
4
5{ buildInputs ? []
6, extraArgs ? []
7, LD_LIBRARY_PATH ? []
8, ghc ? depArgs.ghc
9, ...
10}@args:
11
12stdenv.mkDerivation (args // {
13
14 buildInputs =
15 buildInputs ++
16 optional stdenv.isLinux glibcLocales ++
17 [ ghc pkgconfig ];
18
19 STACK_PLATFORM_VARIANT="nix";
20 STACK_IN_NIX_SHELL=1;
21 STACK_IN_NIX_EXTRA_ARGS =
22 concatMap (pkg: ["--extra-lib-dirs=${getLib pkg}/lib"
23 "--extra-include-dirs=${getDev pkg}/include"]) buildInputs ++
24 extraArgs;
25
26 # XXX: workaround for https://ghc.haskell.org/trac/ghc/ticket/11042.
27 LD_LIBRARY_PATH = makeLibraryPath (LD_LIBRARY_PATH ++ buildInputs);
28 # ^^^ Internally uses `getOutput "lib"` (equiv. to getLib)
29
30 # Non-NixOS git needs cert
31 GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt";
32
33 # Fixes https://github.com/commercialhaskell/stack/issues/2358
34 LANG = "en_US.UTF-8";
35
36 preferLocalBuild = true;
37
38 configurePhase = args.configurePhase or ''
39 export STACK_ROOT=$NIX_BUILD_TOP/.stack
40 '';
41
42 buildPhase = args.buildPhase or "stack build";
43
44 checkPhase = args.checkPhase or "stack test";
45
46 doCheck = args.doCheck or true;
47
48 installPhase = args.installPhase or ''
49 stack --local-bin-path=$out/bin build --copy-bins
50 '';
51})