git.iko.soy/typeable/nixpkgs-stackage
on lts-13.21/fix-store help sign in
62 lines 1.7 kB history raw
1{ nixpkgs ? import ./nixpkgs.nix {}
2, cacheVersion ? "0" }:
4with nixpkgs; let
5 lib = callPackage ./stackage2nix/lib.nix { inherit cacheVersion; };
6in stdenv.mkDerivation rec {
7 name = "nixpkgs-typeable-update-script";
9 buildCommand = ''
10 echo "Update failed"
11 exit 1
12 '';
14 # generate missing stackage/lts-xx packages
15 updateLtsSh = ''
16 pushd stackage
17 # iterate through stackage-lts configs
18 for conf in $(find ${lib.stackage-lts} -type f -name '*.yaml' | sort --version-sort); do
19 resolver=$(basename --suffix='.yaml' $conf)
20 if [ ! -d $resolver ]; then
21 mkdir $resolver
22 pushd $resolver
23 # generate stackage release
24 (set -x; time ${stackage2nixWrapper}/bin/stackage2nix --resolver $resolver)
25 # update supported releases
26 popd
27 echo $resolver >> ../supported-stackage-releases.txt
28 fi
29 done
30 popd # stackage
32 sort --version-sort -o supported-stackage-releases.txt supported-stackage-releases.txt
33 '';
35 # update stackage/default.nix
36 updateStackageSh = ''
37 pushd stackage
38 echo '{ callPackage }:' > default.nix
39 echo '{' >> default.nix
40 for dir in $(find . -mindepth 1 -type d | sort --version-sort); do
41 resolver=$(basename $dir)
42 echo " ''${resolver//.} = callPackage $dir {};" >> default.nix
43 done
44 echo '}' >> default.nix
45 popd
46 '';
48 shellHook = ''
49 echo 'Start ${name}'
50 echo 'Start update-lts-sh'
51 ${updateLtsSh}
52 echo 'Start update-stackage-sh'
53 ${updateStackageSh}
54 EXIT_CODE=$?
55 if [ "$EXIT_CODE" != "0" ]; then
56 echo 'ERROR: update-script'
57 exit $EXIT_CODE
58 fi
59 echo 'OK: ${name}'
60 exit 0
61 '';