Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at release-19.03 72 lines 1.6 kB view raw
1{ stdenv, ghc, pkgconfig, glibcLocales 2, cacert, stack, makeSetupHook, lib }@depArgs: 3 4{ buildInputs ? [] 5, extraArgs ? [] 6, LD_LIBRARY_PATH ? [] 7, ghc ? depArgs.ghc 8, stack ? depArgs.stack 9, ... 10}@args: 11 12let 13 14 stackCmd = "stack --internal-re-exec-version=${stack.version}"; 15 16 # Add all dependencies in buildInputs including propagated ones to 17 # STACK_IN_NIX_EXTRA_ARGS. 18 stackHook = makeSetupHook {} ./stack-hook.sh; 19 20in stdenv.mkDerivation (args // { 21 22 buildInputs = buildInputs 23 ++ lib.optional (stdenv.hostPlatform.libc == "glibc") glibcLocales; 24 25 nativeBuildInputs = [ ghc pkgconfig stack stackHook ]; 26 27 STACK_PLATFORM_VARIANT = "nix"; 28 STACK_IN_NIX_SHELL = 1; 29 STACK_IN_NIX_EXTRA_ARGS = extraArgs; 30 31 # XXX: workaround for https://ghc.haskell.org/trac/ghc/ticket/11042. 32 LD_LIBRARY_PATH = lib.makeLibraryPath (LD_LIBRARY_PATH ++ buildInputs); 33 # ^^^ Internally uses `getOutput "lib"` (equiv. to getLib) 34 35 # Non-NixOS git needs cert 36 GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt"; 37 38 # Fixes https://github.com/commercialhaskell/stack/issues/2358 39 LANG = "en_US.UTF-8"; 40 41 preferLocalBuild = true; 42 43 preConfigure = '' 44 export STACK_ROOT=$NIX_BUILD_TOP/.stack 45 ''; 46 47 buildPhase = args.buildPhase or '' 48 runHook preBuild 49 50 ${stackCmd} build 51 52 runHook postBuild 53 ''; 54 55 checkPhase = args.checkPhase or '' 56 runHook preCheck 57 58 ${stackCmd} test 59 60 runHook postCheck 61 ''; 62 63 doCheck = args.doCheck or true; 64 65 installPhase = args.installPhase or '' 66 runHook preInstall 67 68 ${stackCmd} --local-bin-path=$out/bin build --copy-bins 69 70 runHook postInstall 71 ''; 72})