#!/usr/bin/env bash set -euo pipefail RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' print_info() { echo -e "${BLUE}📘${NC} $1" } print_success() { echo -e "${GREEN}✅${NC} $1" } print_error() { echo -e "${RED}❌${NC} $1" } print_warning() { echo -e "${YELLOW}⚡${NC} $1" } HOSTNAME="${1:-$(scutil --get LocalHostName 2>/dev/null || hostname -s)}" print_info "Building and switching configuration for $HOSTNAME" # Build print_info "Building configuration..." if ! nix build ".#darwinConfigurations.$HOSTNAME.system" --show-trace "${@:2}"; then print_error "Build failed" exit 1 fi print_success "Build completed" # Switch print_info "Switching to new configuration..." sudo ./result/sw/bin/darwin-rebuild switch --flake ".#$HOSTNAME" "${@:2}" if [[ -L ./result ]]; then unlink ./result fi print_success "Build and switch completed successfully"