#!/usr/bin/env bash set -euo pipefail # Set required experimental features export NIX_CONFIG="experimental-features = nix-command flakes" FLAKE_PATH="." # List systems and type: nixos or home-manager # Format: [hostname]=type:user declare -A SYSTEMS=( [t440p]="nixos:wieerwill" [steamdeck]="nixos:wieerwill" [xaorus]="home:wieerwill" [vps04_08]="home:wieerwill" ) echo "๐Ÿ” Checking Nix flake at: $FLAKE_PATH" echo # Check flake syntax and structure echo "๐Ÿงช Running: nix flake check" if nix flake check "$FLAKE_PATH" --show-trace; then echo "โœ… Flake syntax and outputs look good!" else echo "โŒ Flake check failed!" exit 1 fi echo # Check each system based on type for HOST in "${!SYSTEMS[@]}"; do IFS=":" read -r TYPE USER <<< "${SYSTEMS[$HOST]}" echo "๐Ÿ”Ž Checking $TYPE system: $USER@$HOST" if [[ "$TYPE" == "nixos" ]]; then ATTR="nixosConfigurations.${HOST}.config.system.build.toplevel" elif [[ "$TYPE" == "home" ]]; then ATTR="homeConfigurations.${HOST}.activationPackage" else echo "โŒ Unknown system type for $HOST. Skipping..." continue fi if OUTPUT=$(nix eval "$FLAKE_PATH"#"$ATTR" 2>&1); then echo "โœ… $HOST: $TYPE configuration is valid." else echo "โŒ $HOST: $TYPE configuration check failed!" echo "๐Ÿ” Error output:" echo "$OUTPUT" fi echo done