Opinionated setups for Windows dev boxes. Idempotent. CI-tested.
Windows Dev Config Β· CPaT Dev Config Β· CPaT Test Config Β· WSL Comfort Β· Workloads Β· AI tooling Β· Troubleshooting
Set up a new Windows dev box in minutes, not hours. Pick a setup, run one command, get back to building. Everything here is safe to re-run.
Before running a CPaT profile or a clone-based WinGet workload, prepare your machine once. The one-line Windows Dev Config and WSL Comfort launchers below do not require these steps.
- Enable
winget configure:
winget configure --enable- Install Git:
winget install --id Git.Git --source winget --accept-source-agreements --accept-package-agreements- Clone the repo:
git clone https://github.com/CPaT-Global/WindowsDeveloperConfig.git
cd WindowsDeveloperConfigImportant
If winget is being invoked from a non-elevated environment, the Microsoft Visual C++ Redistributable (aka.ms/vcredist) must also be installed β without it winget configure fails with an internal error. Install it once with the command for your machine's architecture:
# x64:
winget install Microsoft.VCRedist.2015+.x64# ARM64:
winget install Microsoft.VCRedist.2015+.arm64If that fails or winget configure is still not recognized, see Troubleshooting.
Pick the setup that matches what you want:
| You want... | Go to |
|---|---|
| A complete dev workstation: tools, OS settings, WSL, and terminal. One command, may reboot. | Windows Dev Config |
| A CPaT-focused developer workstation with Cloud PC parity, including Docker Desktop, ABP Studio, and WSL + Ubuntu. | CPaT Dev Config |
| A CPaT-focused QA workstation optimized for Playwright and desktop tooling, without WSL, Docker Desktop, or ABP Studio. | CPaT Test Config |
| A polished WSL shell: zsh/bash, Starship, CLI tools, and a themed terminal profile. Interactive or unattended. | WSL Comfort |
| A single language toolchain or desktop workload. | Workloads |
| Local AI: PyTorch for your GPU, plus Ollama, llama.cpp, or Foundry Local. | AI tooling |
Installs dev tools, applies opinionated Windows settings, and sets up WSL + Ubuntu β restart included. Nothing to clone, nothing to install first.
Open any PowerShell window β elevated or not β and run:
What you get
- Dev tools: Windows Terminal, PowerShell 7, Git, GitHub CLI, GitHub Copilot CLI, VS Code, .NET SDK 10, Python 3.14 + uv, Node.js LTS + nvm, Coreutils for Windows, Windows App CLI, Oh My Posh, and PowerToys.
- Terminal: PowerShell 7 as the default profile, Oh My Posh in your prompt, Cascadia Mono NF as the default font, and a GitHub Copilot profile in the dropdown.
- Windows settings: Dark theme, long paths, File Explorer defaults, Start/Search settings, and Do Not Disturb
- WSL: WSL platform + Ubuntu, including the restart and the automatic resume afterwards.
- Everything from standard
- Windows settings: Developer Mode, Sudo, widgets off, and Edge policies, additional Start/Search/System Tray settings
- Remote Desktop: Enabled and firewall settings set
irm https://aka.ms/devconfig/standard/setup.ps1 | iexirm https://aka.ms/devconfig/full/setup.ps1 | iex
β οΈ Heads up β it may restart your PC. WSL needs virtualization turned on, so save your work first. Setup picks up where it left off after the reboot.
Every tool and setting, how to undo them, and troubleshooting: Windows Dev Config README.
A CPaT-curated full developer workstation profile with Cloud PC parity.
Set up the Microsoft baseline first, then apply CPaT-only additions such as Docker Desktop, ABP Studio, WireGuard, and developer tooling.
Step 1: Microsoft Full baseline (pinned, Microsoft-signed):
.\cpat-dev-config\setup-baseline.ps1
β οΈ May reboot. Save your work. After signing back in, accept Microsoft's resume prompt and let its setup finish before step 2.
Step 2: CPaT additions:
.\Start-CPaTConfig.ps1 -Profile DevAlternatively, run .\cpat-dev-config\install.ps1. The CPaT step does not rerun
Microsoft setup. Running .\Start-CPaTConfig.ps1 without a profile still lets you
choose Dev or QA; QA remains standalone and should not receive the Full baseline.
Full details: cpat-dev-config/README.md.
A CPaT QA-focused workstation profile for test automation and validation workflows.
This profile is based on CPaT Dev Config but intentionally excludes WSL + Ubuntu, Docker Desktop, ABP Studio, and winappcli. It keeps core desktop/dev tooling and adds Playwright QA setup support.
winget configure -f .\cpat-test-config\dev-config.winget --accept-configuration-agreements --disable-interactivityFull details: cpat-test-config/README.md, plus the end-to-end QA onboarding guide: QA-SETUP-README.md.
Also known as Comfort Shell. A polished Windows + WSL shell setup β zsh/bash, Starship prompt, modern CLI tools, themed terminal.
Open any PowerShell window and run:
irm https://aka.ms/devconfig/wsl-comfort/setup.ps1 | iexInteractive by default β pick and choose components as it runs. For unattended installs, pass -NonInteractive:
& ([scriptblock]::Create((irm https://aka.ms/devconfig/wsl-comfort/setup.ps1))) -NonInteractiveNothing to clone: it downloads the signed scripts, verifies them, and installs WSL first if it's missing. Already have a clone? .\wsl-comfort\install.ps1 works too. The Linux half (comfort-shell-bootstrap.sh) is standalone, so you can also copy it onto any Ubuntu host and run it directly.
What you can pick
- Your choice of shell: zsh or bash.
- Optional Starship prompt.
- Optional modern CLI tools:
fzf,rg,fd,bat,eza,zoxide,jq. - Optional clipboard and
openshims (pbcopy,pbpaste,open). - Optional Homebrew.
- Optional Git defaults.
- A themed Windows Terminal profile using Cascadia Code Nerd Font.
Full details: wsl-comfort/readme.md.
Just want one toolchain? Each of these is a single command.
| Workload | Run via IRM Powershell call |
|---|---|
| WinUI 3 | irm https://aka.ms/devconfig/winui/setup.ps1 | iex |
| WinForms | irm https://aka.ms/devconfig/winforms/setup.ps1 | iex |
| WinAppCLI | irm https://aka.ms/devconfig/winappcli/setup.ps1 | iex |
| .NET | irm https://aka.ms/devconfig/dotnet/setup.ps1 | iex |
| Go | irm https://aka.ms/devconfig/go/setup.ps1 | iex |
| Rust | irm https://aka.ms/devconfig/rust/setup.ps1 | iex |
| Workload | Run via Winget configure |
|---|---|
| TypeScript | winget configure -f .\Workloads\typescript\configuration.winget --accept-configuration-agreements --disable-interactivity |
| Java | winget configure -f .\Workloads\java\configuration.winget --accept-configuration-agreements --disable-interactivity |
| Python | winget configure -f .\Workloads\python\configuration.winget --accept-configuration-agreements --disable-interactivity |
| SQL | winget configure -f .\Workloads\sql\configuration.winget --accept-configuration-agreements --disable-interactivity |
| PowerShell | winget configure -f .\Workloads\powershell\configuration.winget --accept-configuration-agreements --disable-interactivity |
The winget configure will soon move to one-line style. Currently, to run them from a clone of this repo. What each one installs: Workloads.
Detects your GPU, installs the matching PyTorch build (CUDA, ROCm, Intel XPU, or CPU), and proves it works. Add a local model runtime if you want one.
| Workload | Run |
|---|---|
| Local AI (PyTorch for your hardware) | irm https://aka.ms/devconfig/local-ai/setup.ps1 | iex |
| Local AI + Ollama | irm https://aka.ms/devconfig/local-ai/ollama/setup.ps1 | iex |
| Local AI + llama.cpp | irm https://aka.ms/devconfig/local-ai/llama.cpp/setup.ps1 | iex |
| Local AI + Foundry Local | irm https://aka.ms/devconfig/local-ai/foundry/setup.ps1 | iex |
Individual pieces (CUDA, ROCm, Intel AI, PyTorch, llama.cpp, Ollama, Foundry Local), hardware support, and options: AI tooling workloads.
"Unrecognized command: configure"
Run winget configure --enable. If winget configure is still not recognized after that, Workloads/_common/assert-winget-configure.ps1 tells you whether App Installer is too old, policy has disabled configuration, or something else needs fixing.
winget configure fails with "internal error" / error code -2146233079
The Visual C++ Redistributable is missing. Install it, then re-run:
# x64:
winget install Microsoft.VCRedist.2015+.x64
# ARM64:
winget install Microsoft.VCRedist.2015+.arm64Workloads/_common/enable-winget-configure.ps1 installs it automatically as part of enabling winget configure.
A workload says it succeeded but python / node / the tool isn't on PATH
Open a new terminal, or run the matching install.ps1 shim to refresh PATH in the current session.
Windows Dev Config rebooted the machine and looks stuck
A scheduled task resumes the run about 30 seconds after you sign back in and finishes the WSL setup. Nothing after a couple of minutes? Run the one-liner again β it's safe to re-run and skips everything already done. More detail in windows-dev-config/README.md.
Comfort Shell bootstrap fails because WSL is missing
Run the WSL Comfort one-liner from PowerShell on the Windows side instead. It installs WSL first.
WSL install fails with wsl --install ... failed with exit code -1
WSL needs hardware virtualization available to the OS. Two common root causes:
-
On bare metal: virtualization (VT-x / AMD-V) is disabled in BIOS/UEFI. Reboot into firmware settings, enable it, save, and reboot back into Windows. The exact label varies by vendor β check your motherboard or laptop manufacturer's documentation if you can't find it.
-
Inside a VM: the host hasn't exposed nested virtualization to the guest. For a Hyper-V host, run this from an elevated PowerShell session on the host (with the guest VM powered off):
Set-VMProcessor -VMName <VM_NAME> -ExposeVirtualizationExtensions $true
Other hypervisors have their own equivalent settings β check your hypervisor's documentation.
Hit a bug, a stale doc, or a setup that fails on your machine? Open an issue at github.com/CPaT-Global/WindowsDeveloperConfig/issues. Include your Windows build (winver), the exact command you ran, and the failing output. This helps us triage faster.
Contributions of all kinds are welcome: bug reports, doc fixes, new workloads, voice-and-tone tweaks. Start with CONTRIBUTING.md, then read src/docs/development.md for the CI matrix, the "how to add a language" walkthrough, and how the sign pipeline works.
Note on the repo layout: the
src/tree is the source of truth. The top-levelwindows-dev-config/,Workloads/, andwsl-comfort/folders are Authenticode-signed release copies regenerated by the sign pipeline, so please don't edit them directly. Full details insrc/docs/development.md.
The single source of truth for every flow (paths, build/run commands, ids, language metadata) is src/manifest.yml. The Command Palette extension, the CI harness, and the per-flow shims all read from it, so keep it in sync when you add or rename a flow.