#!/bin/sh exec >&2 [ "${NIXREDO_ROOT-x}" != x ] || { 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 --show-trace build ${NIXREDO_ROOT:+--store "$NIXREDO_ROOT"} \ --option auto-optimise-store true --option substituters daemon \ --impure --json --no-link \ --expr "import @buildernix@ { cwd = \"$PWD/\"; rargs = [ \"$1\" \"$1\" ];} \"$f\"" | @jq@ -r '.[0].outputs.out') [ -n "$out" ] || exit 127 rm -rf "$3" ln -s "${NIXREDO_ROOT+$NIXREDO_ROOT}$out" "$3" # 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