diff --git a/.chezmoiscripts/run_once_linux_configure-shell.sh b/.chezmoiscripts/run_once_linux_configure-shell.sh index 7a1a51f..1d0825c 100644 --- a/.chezmoiscripts/run_once_linux_configure-shell.sh +++ b/.chezmoiscripts/run_once_linux_configure-shell.sh @@ -9,12 +9,14 @@ echo "==> Configuring shell environment (Linux)..." # --- Set zsh as default shell --- ZSH_PATH=$(which zsh 2>/dev/null || echo "") + if [ -z "$ZSH_PATH" ]; then echo " ERROR: zsh is not installed. Run the package install script first." exit 1 fi CURRENT_SHELL=$(getent passwd "$USER" | cut -d: -f7) + if [ "$CURRENT_SHELL" != "$ZSH_PATH" ]; then echo " Setting zsh as default shell..." chsh -s "$ZSH_PATH" @@ -25,9 +27,11 @@ fi # --- Set up Rust (cargo) in environment --- CARGO_ENV="$HOME/.cargo/env" + if [ -f "$CARGO_ENV" ]; then RUST_ZSHENV_LINE='. "$HOME/.cargo/env"' ZSHENV="$HOME/.zshenv" + if ! grep -qF "$RUST_ZSHENV_LINE" "$ZSHENV" 2>/dev/null; then echo "$RUST_ZSHENV_LINE" >> "$ZSHENV" echo " Added Rust cargo env to .zshenv" @@ -38,6 +42,7 @@ fi if [ -d "/usr/local/go" ]; then GO_ZSHENV_LINE='export PATH=$PATH:/usr/local/go/bin' ZSHENV="$HOME/.zshenv" + if ! grep -qF "go/bin" "$ZSHENV" 2>/dev/null; then echo "$GO_ZSHENV_LINE" >> "$ZSHENV" echo " Added Go to PATH in .zshenv" diff --git a/.chezmoiscripts/run_once_windows_configure-shell.ps1 b/.chezmoiscripts/run_once_windows_configure-shell.ps1 index bc50653..3831b4c 100644 --- a/.chezmoiscripts/run_once_windows_configure-shell.ps1 +++ b/.chezmoiscripts/run_once_windows_configure-shell.ps1 @@ -22,6 +22,7 @@ foreach ($module in $modules) { # --- Set PowerShell execution policy --- $policy = Get-ExecutionPolicy -Scope CurrentUser + if ($policy -ne "RemoteSigned" -and $policy -ne "Unrestricted") { Write-Host " Setting execution policy to RemoteSigned for CurrentUser..." -ForegroundColor Yellow Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force @@ -29,6 +30,7 @@ if ($policy -ne "RemoteSigned" -and $policy -ne "Unrestricted") { # --- Ensure profile directory exists --- $profileDir = Split-Path $PROFILE -Parent + if (-not (Test-Path $profileDir)) { New-Item -ItemType Directory -Path $profileDir -Force | Out-Null Write-Host " Created profile directory: $profileDir" -ForegroundColor Green diff --git a/.chezmoiscripts/run_onchange_linux_install-packages.sh.tmpl b/.chezmoiscripts/run_onchange_linux_install-packages.sh.tmpl index 1c46d7d..deffe54 100644 --- a/.chezmoiscripts/run_onchange_linux_install-packages.sh.tmpl +++ b/.chezmoiscripts/run_onchange_linux_install-packages.sh.tmpl @@ -176,6 +176,22 @@ else echo "==> uv already installed" fi +# --- Antigravity CLI --- +if ! command -v antigravity &>/dev/null; then + echo "==> Installing Antigravity CLI..." + curl -fsSL https://antigravity.google/cli/install.sh | bash +else + echo "==> Antigravity CLI already installed" +fi + +# --- termato --- +if ! command -v termato &>/dev/null; then + echo "==> Installing termato..." + curl --proto '=https' --tlsv1.2 -LsSf https://github.com/StevanFreeborn/termato/releases/latest/download/termato-installer.sh | sh +else + echo "==> termato already installed" +fi + # --- Docker --- if ! command -v docker &>/dev/null; then echo "==> Installing Docker..." diff --git a/.chezmoiscripts/run_onchange_windows_install-packages.ps1.tmpl b/.chezmoiscripts/run_onchange_windows_install-packages.ps1.tmpl index 9a1b6a3..e254a4e 100644 --- a/.chezmoiscripts/run_onchange_windows_install-packages.ps1.tmpl +++ b/.chezmoiscripts/run_onchange_windows_install-packages.ps1.tmpl @@ -33,6 +33,7 @@ foreach ($pkg in $packages) { # Check if already installed $check = winget list --id $id --exact --accept-source-agreements 2>$null | Select-String $id + if ($check) { Write-Host " already installed" -ForegroundColor DarkGray $skipped++ @@ -42,6 +43,7 @@ foreach ($pkg in $packages) { # Install Write-Host " installing..." -NoNewline $result = winget install --id $id --exact --silent --accept-package-agreements --accept-source-agreements 2>&1 + if ($LASTEXITCODE -eq 0) { Write-Host " done" -ForegroundColor Green $installed++ @@ -59,12 +61,14 @@ Write-Host "==> Package install complete: $installed installed, $skipped already # ============================================================================= $LocalBin = Join-Path $env:USERPROFILE ".local\bin" + if (-not (Test-Path $LocalBin)) { New-Item -ItemType Directory -Force $LocalBin | Out-Null } # Ensure ~/.local/bin is in the user PATH $userPath = [System.Environment]::GetEnvironmentVariable("PATH", "User") + if ($userPath -notlike "*$LocalBin*") { [System.Environment]::SetEnvironmentVariable("PATH", "$userPath;$LocalBin", "User") $env:PATH = "$env:PATH;$LocalBin" @@ -110,3 +114,29 @@ Write-Host "==> Installing manual (non-winget) packages..." -ForegroundColor Cya # watchexec — https://github.com/watchexec/watchexec Install-GitHubBinary -Name "watchexec" -Repo "watchexec/watchexec" -AssetPattern "*x86_64-pc-windows-msvc.zip" + +# Antigravity CLI — https://antigravity.google/cli/ +if (-not (Get-Command antigravity -ErrorAction SilentlyContinue)) { + Write-Host " Installing Antigravity CLI..." -NoNewline + try { + irm https://antigravity.google/cli/install.ps1 | iex + Write-Host " done" -ForegroundColor Green + } catch { + Write-Host " FAILED: $_" -ForegroundColor Red + } +} else { + Write-Host " Antigravity CLI already installed" -ForegroundColor DarkGray +} + +# termato — https://github.com/StevanFreeborn/termato +if (-not (Get-Command termato -ErrorAction SilentlyContinue)) { + Write-Host " Installing termato..." -NoNewline + try { + irm https://github.com/StevanFreeborn/termato/releases/latest/download/termato-installer.ps1 | iex + Write-Host " done" -ForegroundColor Green + } catch { + Write-Host " FAILED: $_" -ForegroundColor Red + } +} else { + Write-Host " termato already installed" -ForegroundColor DarkGray +}