git.iko.soy/typeable/cabal2nix
on v2.3 help sign in
typeable/cabal2nix/update-nixpkgs.sh
53 lines 1.1 kB history raw
1#! /usr/bin/env bash
3set -eu -o pipefail
5exit_trap()
6{
7 local lc="$BASH_COMMAND" rc=$?
8 test $rc -eq 0 || echo "*** error $rc: $lc"
9}
11trap exit_trap EXIT
13cd "$(dirname "$0")"
14cabal2nix=$(git describe --dirty)
16cd nixpkgs
17git reset -q --hard
18git clean -dxf -q
19git pull -q
20export NIX_PATH=nixpkgs=$PWD
21nixpkgs=$(git rev-parse --verify HEAD)
22cd ..
24cd hackage
25git pull -q
26rm -f preferred-versions
27for n in */preferred-versions; do
28 cat >>preferred-versions "$n"
29 echo >>preferred-versions
30done
31DIR=$HOME/.cabal/packages/hackage.haskell.org
32TAR=$DIR/00-index.tar
33TARGZ=$TAR.gz
34mkdir -p "$DIR"
35rm -f "$TAR" "$TARGZ"
36git archive --format=tar -o "$TAR" HEAD
37gzip -k "$TAR"
38hackage=$(git rev-parse --verify HEAD)
39cd ..
41cabal run -v0 hackage2nix -- --nixpkgs="$PWD/nixpkgs" +RTS -M4G -RTS
43cd nixpkgs
44git add pkgs/development/haskell-modules
45if [ -n "$(git status --porcelain)" ]; then
46 cat <<EOF | git commit -q -F -
47hackage-packages.nix: automatic Haskell package set update
49This update was generated by hackage2nix $cabal2nix from Hackage revision
50https://github.com/commercialhaskell/all-cabal-hashes/commit/$hackage.
51EOF
52 git push -q
53fi