# Automate the setup and configuration of your Windows development environment

> Source: <https://github.com/microsoft/WindowsDeveloperConfig/>
> Published: 2026-10-31 19:43:33+00:00

Opinionated setups for Windows dev boxes. Idempotent. CI-tested.

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.

| You want... | Go to | 
|---|---|
| A full dev workstation: tools, Windows settings, WSL, and terminal. One command, one restart. | [Windows Dev Config](#%EF%B8%8F-windows-dev-config) | 
| A nicer WSL shell: zsh/bash, Starship, CLI tools, and a themed terminal profile. | [WSL Comfort](#-wsl-comfort) | 
| One language or toolchain. | [Workloads](#-workloads) | 
| Local AI: PyTorch for your GPU, plus Ollama, llama.cpp, or Foundry Local. | [AI tooling](#-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 | iex
irm 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](https://github.com/microsoft/WindowsDeveloperConfig/blob/main/src/windows-dev-config/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 | iex
```

Interactive 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))) -NonInteractive
```

Nothing 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 `open` shims (`pbcopy` ,`pbpaste` ,`open` ).
- Optional **Homebrew** .
- Optional Git defaults.
- A themed **Windows Terminal** profile using Cascadia Code Nerd Font.

Full details: [`wsl-comfort/readme.md`](https://github.com/microsoft/WindowsDeveloperConfig/blob/main/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](https://github.com/microsoft/WindowsDeveloperConfig/blob/main/src/windows-dev-config/workloads.md).

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](https://github.com/microsoft/WindowsDeveloperConfig/blob/main/src/windows-dev-config/ai-workloads.md).

## **"Unrecognized command: configure"**

Run `winget configure --enable`. If `winget configure` is still not recognized after that, [`Workloads/_common/assert-winget-configure.ps1`](https://github.com/microsoft/WindowsDeveloperConfig/blob/main/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`**

`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+.arm64
```

[`Workloads/_common/enable-winget-configure.ps1`](https://github.com/microsoft/WindowsDeveloperConfig/blob/main/Workloads/_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**

`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`](https://github.com/microsoft/WindowsDeveloperConfig/blob/main/src/windows-dev-config/README.md#troubleshooting).

## **Comfort Shell bootstrap fails because WSL is missing**

Run the [WSL Comfort one-liner](#-wsl-comfort) from PowerShell on the Windows side instead. It installs WSL first.

## **WSL install fails with `wsl --install ... failed with exit code -1`**

`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/microsoft/WindowsDeveloperConfig/issues](https://github.com/microsoft/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`](https://github.com/microsoft/WindowsDeveloperConfig/blob/main/CONTRIBUTING.md), then read [`src/docs/development.md`](https://github.com/microsoft/WindowsDeveloperConfig/blob/main/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/`](https://github.com/microsoft/WindowsDeveloperConfig/blob/main/src) tree is the source of truth. The top-level `windows-dev-config/`, `Workloads/`, and `wsl-comfort/` folders are Authenticode-signed release copies regenerated by the sign pipeline, so please don't edit them directly. Full details in [`src/docs/development.md`](https://github.com/microsoft/WindowsDeveloperConfig/blob/main/src/docs/development.md#repo-layout-signed-vs-source).

The single source of truth for every flow (paths, build/run commands, ids, language metadata) is [`src/manifest.yml`](https://github.com/microsoft/WindowsDeveloperConfig/blob/main/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.
