nix-flakes/modules/mizukios/features/packages/nr.nix
2026-09-10 01:54:06 +09:00

59 lines
1.4 KiB
Nix

{ pkgs }:
pkgs.writeShellApplication {
name = "nr";
runtimeInputs = with pkgs; [
nix-output-monitor
openssh
coreutils
nix
attic-client
];
text = ''
set -euo pipefail
TARGET_NAME="$(hostname -s)"
FLAKE_PATH="."
UPLOAD_CACHE=false
MAX_JOBS="''${NIX_BUILD_MAX_JOBS:-4}"
while [[ $# -gt 0 ]]; do
case "$1" in
--upload) UPLOAD_CACHE=true ;;
--no-upload) UPLOAD_CACHE=false ;;
--help|-h)
echo ": nr [] [--upload|--no-upload]"
exit 0
;;
-*)
echo " : $1" >&2
exit 2
;;
*) TARGET_NAME="$1" ;;
esac
shift
done
BUILD_FLAGS=(--max-jobs "$MAX_JOBS")
if [ "$TARGET_NAME" = "kazusa" ]; then
BUILD_FLAGS+=("--max-substitution-jobs" "2")
fi
echo " ... $TARGET_NAME"
BUILD_PATH=$(nom build "$FLAKE_PATH#nixosConfigurations.$TARGET_NAME.config.system.build.toplevel" \
"''${BUILD_FLAGS[@]}" \
--print-out-paths --no-link)
echo " ..."
sudo nix-env --profile /nix/var/nix/profiles/system --set "$BUILD_PATH"
sudo "$BUILD_PATH/bin/switch-to-configuration" switch
if [ "$UPLOAD_CACHE" = true ]; then
echo " ..."
attic push imnyang "$BUILD_PATH" || echo " "
fi
echo " !"
'';
}