1{ stdenv, ghc, pkgconfig, glibcLocales }:
2
3with stdenv.lib;
4
5{ buildInputs ? []
6, extraArgs ? []
7, LD_LIBRARY_PATH ? []
8, ghc ? 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 preferLocalBuild = true;
31
32 configurePhase = args.configurePhase or "stack setup";
33
34 buildPhase = args.buildPhase or "stack build";
35
36 checkPhase = args.checkPhase or "stack test";
37
38 doCheck = args.doCheck or true;
39
40 installPhase = args.installPhase or ''
41 stack --local-bin-path=$out/bin build --copy-bins
42 '';
43})