burrow/Scripts/ci/resolve-nix-bin.sh
Conrad Kramer 002bd382e9
Some checks failed
Cache: Publish Nix / Publish Nix Cache (push) Waiting to run
Build Rust / Cargo Test (push) Successful in 4m14s
Build Site / Next.js Build (push) Failing after 6s
Infra: OpenTofu / OpenTofu (grafana) (push) Successful in 5s
Lint Governance / BEP Metadata (push) Successful in 0s
Build: Android / Android Rust Core Stub (push) Failing after 23s
Wire Forge-native release infrastructure
2026-06-07 05:51:12 -07:00

56 lines
1.4 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
find_nix_bin() {
local candidate
for candidate in \
"${NIX_BIN:-}" \
"$(command -v nix 2>/dev/null || true)" \
"${HOME:-}/.nix-profile/bin/nix" \
"${HOME:-}/.local/state/nix/profile/bin/nix" \
"/nix/var/nix/profiles/per-user/${USER:-runner}/profile/bin/nix" \
/nix/var/nix/profiles/default/bin/nix \
/run/current-system/sw/bin/nix \
/etc/profiles/per-user/runner/bin/nix \
/Users/runner/.nix-profile/bin/nix \
/Users/runner/.local/state/nix/profile/bin/nix \
/home/runner/.nix-profile/bin/nix \
/home/runner/.local/state/nix/profile/bin/nix \
/nix/profile/bin/nix; do
if [[ -n "$candidate" && -x "$candidate" ]]; then
printf '%s\n' "$candidate"
return 0
fi
done
candidate="$(
find \
"${HOME:-/nonexistent}" \
/Users/runner \
/home/runner \
/nix/var/nix/profiles \
/etc/profiles/per-user \
-path '*/bin/nix' -type f 2>/dev/null | head -n 1 || true
)"
if [[ -n "$candidate" && -x "$candidate" ]]; then
printf '%s\n' "$candidate"
return 0
fi
return 1
}
if nix_bin="$(find_nix_bin)"; then
printf '%s\n' "$nix_bin"
exit 0
fi
if bash Scripts/ci/ensure-nix.sh >/dev/null 2>&1; then
if nix_bin="$(find_nix_bin)"; then
printf '%s\n' "$nix_bin"
exit 0
fi
fi
echo "::error ::nix is required but is not on PATH and no standard install path exists" >&2
exit 1