Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
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})