shrub/nix/lib/boot-fake-ship.nix
Brendan Hay ce3cbf0857
build: rework all nix expressions to support hercules-ci builds
This also removes nixcrpkgs and OSX cross compilation in favour of
compiling on the target. x86_64/musl targets are still supported
on Linux.

All sources are now managed via niv (see nix/sources.json) and Haskell
package sets are provided/organised via IOHK's haskell.nix.

Some effort has been made to expose similar top-level attributes for
development, but in some cases there have been changes. Please see
the comments in the top-level default.nix and ci.nix files for usage.
2020-10-27 13:55:49 +01:00

58 lines
1.0 KiB
Nix

{ stdenvNoCC, cacert }:
{ urbit, herb, arvo ? null, pill, ship }:
stdenvNoCC.mkDerivation {
name = "fake-${ship}";
buildInputs = [ cacert urbit herb ];
phases = [ "buildPhase" "installPhase " ];
buildPhase = ''
set -xeuo pipefail
if ! [ -f "$SSL_CERT_FILE" ]; then
header "$SSL_CERT_FILE doesn't exist"
exit 1
fi
ARVO=${if arvo == null then "" else arvo}
PILL=${pill}
SHIP=${ship}
if [ -z "$ARVO" ]; then
urbit -d -F "$SHIP" -B "$PILL" ./pier
else
urbit -d -F "$SHIP" -A "$ARVO" -B "$PILL" ./pier
fi
cleanup () {
if [ -f ./pier/.vere.lock ]; then
kill $(< ./pier/.vere.lock) || true
fi
set +x
}
trap cleanup EXIT
check () {
[ 3 -eq "$(herb ./pier -d 3)" ]
}
if check && sleep 10 && check; then
header "boot success"
herb ./pier -p hood -d '+hood/exit'
else
header "boot failure"
kill $(< ./pier/.vere.lock) || true
exit 1
fi
'';
installPhase = ''
mv ./pier $out
'';
}