mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 20:39:18 -08:00
85 lines
1.7 KiB
Bash
85 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
|
set -eu
|
|
|
|
if [[ ${GITHUB_ACTIONS-} = true && ${RUNNER_NAME-} = "Github Actions"* ]]; then
|
|
# low disk space available on public runners...
|
|
echo "enabled GC between builds due to restricted disk space..." >&2
|
|
export NF_ACTIONS_TEST_GC=1
|
|
fi
|
|
|
|
NIX_BUILD_ARGS=(
|
|
--show-trace
|
|
)
|
|
NIX_BUILD_ARGS_ASYNC=()
|
|
|
|
init_nfargs() {
|
|
nflinksuffix="$1"
|
|
shift
|
|
|
|
nfargs=(
|
|
"${NIX_BUILD_ARGS[@]}"
|
|
)
|
|
|
|
if [[ -n "${NF_ACTIONS_TEST_OUTLINK-}" || -n "${NF_UPDATE_CACHIX_PUSH-}" ]]; then
|
|
nfargs+=(
|
|
-o "${NF_ACTIONS_TEST_OUTLINK-result}$nflinksuffix"
|
|
)
|
|
else
|
|
nfargs+=(
|
|
--no-link
|
|
)
|
|
fi
|
|
}
|
|
|
|
nfgc() {
|
|
if [[ -n ${NF_ACTIONS_TEST_GC-} ]]; then
|
|
if [[ -n ${NF_UPDATE_CACHIX_PUSH-} ]]; then
|
|
cachix push gensokyo-infrastructure "./${NF_ACTIONS_TEST_OUTLINK-result}$nflinksuffix"*/
|
|
rm -f "./${NF_ACTIONS_TEST_OUTLINK-result}$nflinksuffix"*
|
|
fi
|
|
nix-collect-garbage -d
|
|
fi
|
|
}
|
|
|
|
for nfsystem in "${NF_NIX_SYSTEMS[@]}"; do
|
|
nfinstallable="${NF_CONFIG_ROOT}#nixosConfigurations.${nfsystem}.config.system.build.toplevel"
|
|
init_nfargs "-$nfsystem"
|
|
|
|
nfwarn=
|
|
if [[ " ${NF_NIX_SYSTEMS_WARN[*]} " = *" $nfsystem "* ]]; then
|
|
nfwarn=1
|
|
fi
|
|
|
|
if [[ -n ${NF_ACTIONS_TEST_ASYNC-} && -z $nfwarn ]]; then
|
|
NIX_BUILD_ARGS_ASYNC+=("$nfinstallable")
|
|
continue
|
|
fi
|
|
|
|
echo "building ${nfsystem}..." >&2
|
|
echo >&2
|
|
|
|
nfbuildexit=0
|
|
nix build "$nfinstallable" \
|
|
"${nfargs[@]}" \
|
|
"$@" || nfbuildexit=$?
|
|
|
|
if [[ $nfbuildexit -ne 0 ]]; then
|
|
if [[ -n $nfwarn ]]; then
|
|
echo "build failure allowed for ${nfsystem}, ignoring..." >&2
|
|
continue
|
|
fi
|
|
exit $nfbuildexit
|
|
fi
|
|
|
|
nfgc
|
|
done
|
|
|
|
if [[ -n ${NF_ACTIONS_TEST_ASYNC-} ]]; then
|
|
init_nfargs ""
|
|
nix build \
|
|
"${nfargs[@]}" \
|
|
"${NIX_BUILD_ARGS_ASYNC[@]}" \
|
|
"$@"
|
|
|
|
nfgc
|
|
fi
|