#!/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