#!/bin/bash # Source .env file if [ -f ".env" ]; then source .env else echo "Error: No .env file found. Copy example.env to .env and set your NIXOS_HOST" exit 1 fi if [ -z "$NIXOS_HOST" ]; then echo "Error: NIXOS_HOST not set in .env file" exit 1 fi # Validate that the host configuration exists AVAILABLE_HOSTS=$(nix flake show --json 2>/dev/null | jq -r '.nixosConfigurations | keys[]' 2>/dev/null) if [ $? -ne 0 ] || [ -z "$AVAILABLE_HOSTS" ]; then echo "Warning: Could not validate host configuration. Proceeding anyway..." else if ! echo "$AVAILABLE_HOSTS" | grep -q "^$NIXOS_HOST$"; then echo "Error: Host '$NIXOS_HOST' not found in flake.nix" echo "Available hosts: $(echo $AVAILABLE_HOSTS | tr '\n' ' ')" exit 1 fi fi echo "Building configuration for host: $NIXOS_HOST" # First, run a check to see if the flake is valid nix flake check # Rebuild the system sudo nixos-rebuild switch --flake ./#$NIXOS_HOST # Clean up old generations older than 180 days sudo nix-collect-garbage --delete-older-than 180d