#! /usr/bin/env sh set -eu root="$(git rev-parse --show-toplevel)" wrong_arg=false use_dirty=true show_trace=false for arg in "$@"; do case "$arg" in --dirty) use_dirty=true ;; --clean) use_dirty=false ;; --show-trace) show_trace=true ;; *) echo "arg '$arg' is not known." wrong_arg=true ;; esac done if [ "$wrong_arg" = true ]; then exit 2 fi if [ "$use_dirty" = "false" ]; then tmp="$(mktemp -d -t "server_build_script_XXXXX")" trap 'rm -r "$tmp"' EXIT git archive --format=tar.gz HEAD | { cd "$tmp" tar -xz } cd "$tmp" fi for host in "server2" "server3"; do show_trace_arg="" if [ "$show_trace" = true ]; then show_trace_arg="--show-trace" fi nix build ".#nixosConfigurations.$host.config.system.build.toplevel" --print-out-paths --option max-jobs 1 $show_trace_arg result_file="$root/result-$host" if [ -L "$result_file" ]; then rm "$result_file" fi nix-store --add-root "$result_file" --realise "$(readlink -f ./result)" rm ./result done # vim: ft=sh