RepoMicrosoftMicrosoftpublished May 21, 2026seen 5d

microsoft/WindowsDeveloperConfig

PowerShell

Open original ↗

Captured source

source ↗
published May 21, 2026seen 5dcaptured 11hhttp 200method plain

microsoft/WindowsDeveloperConfig

Description: Automate the setup and configuration of your Windows development environment.

Language: PowerShell

License: MIT

Stars: 1036

Forks: 81

Open issues: 15

Created: 2026-05-21T15:13:35Z

Pushed: 2026-06-09T22:46:20Z

Default branch: main

Fork: no

Archived: no

README:

Windows Developer Config

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

Windows Dev Config · WSL Comfort · Workloads · Troubleshooting

---

Go from a fresh Windows install to a fully configured dev box in one command. These declarative, CI-tested configs set up your tools, settings, and shells the same way every time — so any machine can be your machine in minutes.

🎯 Pick your setup

Three developer setups live in this repo. Pick the one 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](#%EF%B8%8F-windows-dev-config) | | A polished WSL shell: zsh/bash, Starship, CLI tools, and a themed terminal profile. Interactive or unattended. | [WSL Comfort](#-wsl-comfort) | | A single language toolchain: Node, Python, .NET, Rust, Go, Java, PHP, WinForms, or WinUI 3. One command each. | [Workloads](#-single-language-workloads) |

Most of them use `winget configure`. If you've never used it before, enable it once:

winget configure --enable

> [!IMPORTANT] > 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: > > ``powershell > # x64: > winget install Microsoft.VCRedist.2015+.x64 > > # ARM64: > winget install Microsoft.VCRedist.2015+.arm64 >

If that fails or winget configure is still not recognized, see [Troubleshooting](#-troubleshooting).

🖥️ Windows Dev Config

*Turns a fresh Windows 11 box into a clean, distraction-free dev workstation in one shot.*

A single winget configuration file that installs dev tools, applies opinionated Windows settings, and bootstraps WSL + Ubuntu through the required reboot. Non-interactive. Idempotent. Safe to re-run on an existing machine.

First, get the files onto the box. The config is invoked from a local path, but the bootstrap itself is what installs Git — so on a clean Windows install you'll typically download the repo as a ZIP. If Git is already there, clone it:

# Git already installed:
git clone https://github.com/microsoft/WindowsDeveloperConfig.git
cd WindowsDeveloperConfig

# Otherwise, download and extract the ZIP:
Invoke-WebRequest -Uri https://github.com/microsoft/WindowsDeveloperConfig/archive/refs/heads/main.zip -OutFile WindowsDeveloperConfig.zip
Expand-Archive .\WindowsDeveloperConfig.zip -DestinationPath .
cd .\WindowsDeveloperConfig-main

Then apply the configuration:

winget configure -f .\windows-dev-config\dev-config.winget --accept-configuration-agreements --disable-interactivity

> ⚠️ May reboot. Enabling WSL needs a Windows optional feature that requires a restart. A RunOnce task picks the configuration back up after you sign in, installs Ubuntu, and finishes the run. Expect one hard reboot plus about a minute of post-login work. Save your work first.

What you get

  • Dev tools: PowerShell 7, Git, GitHub CLI, VS Code, .NET SDK 10, Python 3.14 + uv, Node.js, Oh My Posh, and PowerToys.
  • Terminal: PowerShell 7 is the default profile, Oh My Posh is enabled, and Cascadia Mono NF is set as the default font.
  • Windows settings: Dark theme, developer mode, long paths, File Explorer defaults, Start/Search cleanup, Edge policies, and other workstation defaults.
  • WSL: WSL platform + Ubuntu, including the reboot and the RunOnce resume step.

Full details: [windows-dev-config/README.md](./windows-dev-config/README.md).

🐧 WSL Comfort

*Also known as Comfort Shell. An interactive setup for a polished Windows + WSL shell environment.*

WSL Comfort stands apart. It supports both interactive and non-interactive modes, and lets you pick and choose individual components. The Windows side handles WSL, the distro, the Cascadia Code Nerd Font, and a themed Windows Terminal profile. The Linux side runs inside the distro and configures the shell itself.

.\wsl-comfort\install.ps1

Interactive by default. Use -NonInteractive for unattended runs; the bootstrap also takes --minimal for a smaller setup. The Linux half is standalone, so you can copy comfort-shell-bootstrap.sh 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](./wsl-comfort/readme.md).

🧪 Single-language workloads

Just want one toolchain? Pick a row. Each workload ships a configuration.winget file plus a matching install.ps1 shim that applies it and refreshes PATH in the current session.

| Workload | Installs | Run | | ---------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | TypeScript | Node.js LTS + global typescript | winget configure -f .\Workloads\typescript\configuration.winget --accept-configuration-agreements --disable-interactivity | | PHP | PHP 8.5 | winget configure -f .\Workloads\php\configuration.winget --accept-configuration-agreements --disable-interactivity | | .NET | .NET SDK 10 | winget configure -f .\Workloads\dotnet\configuration.winget --accept-configuration-agreements --disable-interactivity | | Go | Go (rolling) | winget configure -f .\Workloads\go\configuration.winget --accept-configuration-agreements --disable-interactivity | | Java | Microsoft Build of OpenJDK 25 LTS | `winget configure -f…

Excerpt shown — open the source for the full document.

Notability

notability 4.0/10

Routine repo from Microsoft, moderate traction.