Skip to content

Instantly share code, notes, and snippets.

@bluntspoon
Last active July 16, 2026 20:02
Show Gist options
  • Select an option

  • Save bluntspoon/d3c73088b2d9fd33033a8e8cef2296e8 to your computer and use it in GitHub Desktop.

Select an option

Save bluntspoon/d3c73088b2d9fd33033a8e8cef2296e8 to your computer and use it in GitHub Desktop.
Basic Dev Machine Setup using WinGet
# =====================================================================
# New-laptop dev environment setup (Windows 11 / PowerShell)
# Installs core apps via winget (official source only).
# WinGet bootstrap intentionally omitted - App Installer ships with Win11.
# Usage: pwsh -File .\setup-apps.ps1
# =====================================================================
Write-Host "-=Installing Apps=-" -ForegroundColor Black -BackgroundColor White
$apps = @(
@{id = "Microsoft.WindowsTerminal"; source = "winget" }
@{id = "Starship.Starship"; source = "winget" } # prompt engine (replaces Oh My Posh)
@{id = "DEVCOM.JetBrainsMonoNerdFont"; source = "winget" } # Nerd Font for prompt/file glyphs
@{id = "ajeetdsouza.zoxide"; source = "winget" } # smart directory jumping
@{id = "Microsoft.VisualStudioCode"; source = "winget" }
@{id = "Microsoft.AzureCLI"; source = "winget" }
@{id = "Microsoft.PowerShell"; source = "winget" }
@{id = "Microsoft.PowerToys"; source = "winget" }
@{id = "Git.Git"; source = "winget" }
@{id = "GitHub.cli"; source = "winget" }
@{id = "SUSE.RancherDesktop"; source = "winget" }
@{id = "Microsoft.DotNet.SDK.10"; source = "winget" }
@{id = "CoreyButler.NVMforWindows"; source = "winget" } # Node version manager
@{id = "Oven-sh.Bun"; source = "winget" } # fast JS runtime / package manager
)
Foreach ($app in $apps) {
$listApp = winget list --exact -q $app.id --accept-source-agreements
if (![String]::Join("", $listApp).Contains($app.id)) {
Write-Host "Installing:" $app.id -ForegroundColor Green
winget install --exact --silent --id $app.id --source $app.source --accept-package-agreements --accept-source-agreements
}
else {
Write-Host "Already Installed (will try upgrade): " $app.id -ForegroundColor Yellow
winget upgrade --silent --id $app.id --source $app.source --accept-package-agreements --accept-source-agreements
}
}
Write-Host "-=Installation and Upgrades Complete=-" -ForegroundColor Black -BackgroundColor White
# --- Post-install follow-ups (run manually after the batch) ---------
# Install-Module Terminal-Icons -Scope CurrentUser # from official PowerShell Gallery
# nvm install lts ; nvm use lts # Node LTS (needs a fresh shell)
# Add to $PROFILE: Invoke-Expression (&starship init powershell)
# Import-Module Terminal-Icons
# Invoke-Expression (& { (zoxide init powershell | Out-String) })
# Set "JetBrainsMono Nerd Font" as the font in Windows Terminal settings.json
# git config --global user.name "Andrew Bevan"
# git config --global user.email "Andrew.Bevan@derivco.co.za"
@bluntspoon

Copy link
Copy Markdown
Author

if you have issues with... "Data required by the source is missing" be sure to update the App Installer in windows.

@bluntspoon

Copy link
Copy Markdown
Author

0x8a15005e : The server certificate did not match any of the expected values.
winget settings --enable BypassCertificatePinningForMicrosoftStore

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment