22 lines
712 B
Plaintext
22 lines
712 B
Plaintext
|
#!/bin/sh
|
||
|
exec >&2
|
||
|
[ -n "$NIXREDO_ROOT" ] || { printf "Set NIXREDO_ROOT. Set empty to use global nix store\n"; exit 127; }
|
||
|
if [ $# -eq 0 ]; then set -- all; fi
|
||
|
if [ -e "$1.nix" ]; then
|
||
|
set -e
|
||
|
set -- "$1" "$1" "$1.redo.tmp"
|
||
|
f=$(realpath "$1.nix")
|
||
|
out=$(nix -vL build ${NIXREDO_ROOT:+--store "$NIXREDO_ROOT"} --option auto-optimise-store true --impure --json --no-link --expr "import @buildernix@ { cwd = \"$PWD/\"; rargs = [ \"$1\" \"$1\" ];} \"$f\"" | @jq@ -r '.[0].outputs.out')
|
||
|
[ -n "$out" ] || exit 127
|
||
|
rm -rf "$1"
|
||
|
ln "${NIXREDO_ROOT+$NIXREDO_ROOT/}$out" "$3"
|
||
|
chmod +w "$3"
|
||
|
touch "$3"
|
||
|
mv "$3" "$1"
|
||
|
elif [ -e "$1" ]; then
|
||
|
:
|
||
|
else
|
||
|
printf "Error: No rule to build %s\n" "$1"
|
||
|
exit 127
|
||
|
fi
|