1{ lib, writeText, haskellPackages, cabal-install }:
2
3(haskellPackages.shellFor {
4 packages = p: [ p.constraints p.linear ];
5 extraDependencies = p: { libraryHaskellDepends = [ p.releaser ]; };
6 nativeBuildInputs = [ cabal-install ];
7 phases = [ "unpackPhase" "buildPhase" "installPhase" ];
8 unpackPhase = ''
9 sourceRoot=$(pwd)/scratch
10 mkdir -p "$sourceRoot"
11 cd "$sourceRoot"
12 tar -xf ${haskellPackages.constraints.src}
13 tar -xf ${haskellPackages.linear.src}
14 cp ${writeText "cabal.project" "packages: constraints* linear*"} cabal.project
15 '';
16 buildPhase = ''
17 export HOME=$(mktemp -d)
18 mkdir -p $HOME/.cabal
19 touch $HOME/.cabal/config
20
21 # Check extraDependencies.libraryHaskellDepends arg
22 ghci <<EOF
23 :m + Releaser.Primitives
24 :m + System.IO
25 writeFile "done" "done"
26 EOF
27 [[ done == $(cat done) ]]
28
29 # Check packages arg
30 cabal v2-build --offline --verbose constraints linear --ghc-options="-O0 -j$NIX_BUILD_CORES"
31 '';
32 installPhase = ''
33 touch $out
34 '';
35}).overrideAttrs (oldAttrs: {
36 meta =
37 let
38 oldMeta = oldAttrs.meta or {};
39 oldMaintainers = oldMeta.maintainers or [];
40 additionalMaintainers = with lib.maintainers; [ cdepillabout ];
41 allMaintainers = oldMaintainers ++ additionalMaintainers;
42 in
43 oldMeta // {
44 maintainers = allMaintainers;
45 inherit (cabal-install.meta) platforms;
46 };
47})