57 lines
1.3 KiB
Bash
Executable File
57 lines
1.3 KiB
Bash
Executable File
#!/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
|