# Windows 11 Development Setup
A complete, opinionated, modern setup for software development on **Windows 11**, working identically on **ARM64 (Snapdragon, Surface Pro 11, Windows Dev Kit 2023) and x64 (Intel/AMD)**. This is the Windows counterpart to the [[Mac Tahoe Development Setup]] and [[Ubuntu Linux Development Setup]] guides — same philosophy, same end result, adapted to Windows.
Windows is the only one of the three platforms where there's a real, useful choice in *how* you set up. Pick one of the two paths below.
## Choose your path
> [!tip] Not sure? Pick WSL2.
> If you've never used WSL2 before, it's almost certainly what you want. It gives you the full Ubuntu toolchain (which is closer to what most production servers and CI runners look like) while keeping Windows for everything outside the editor. You can always add a native-side guide later.
### Path A — [[WSL2 Windows Development Setup|WSL2 path]] (recommended)
Install a thin Windows host layer (winget, Windows Terminal, Git for Windows, VS Code, Claude Code), then run **Ubuntu inside WSL2** and use the existing [[Ubuntu Linux Development Setup|Ubuntu guides]] for everything language-specific. The Linux side is where you compile, test, and run; the Windows side is just the terminal, editor, and AI surface.
**Choose this if:**
- You want one set of language tooling that matches Linux servers, CI, and Docker images
- You're fine with two layers (host + WSL2) and want the smaller of the two to be Windows
- You ever cross-compile, ship Linux binaries, or work in Docker
- You like the [[Ubuntu Linux Development Setup|Ubuntu guides]] and want to reuse them verbatim
**Architecture note:** On an ARM64 Windows host, `wsl --install` pulls the **arm64 Ubuntu** image automatically — no cross-arch emulation. The Ubuntu guides work unchanged.
### Path B — [[Native Windows Development Setup|Native Windows path]]
Stay on Windows end-to-end: **winget** as the package manager, **Windows Terminal + PowerShell 7** as the terminal/shell, **Starship** as the prompt, **VS Code** as the editor, **Claude Code** as the AI, and per-language toolchains (uv, rustup, Go, MSVC Build Tools, RubyInstaller) installed natively.
**Choose this if:**
- You're building Windows software (WinUI, WPF, Win32, .NET, anything that needs MSVC)
- You don't want a Linux layer at all
- You're targeting native ARM64 Windows apps specifically
- You want everything in one filesystem, no `\\wsl.localhost\` paths
**Architecture note:** Every native tool below has been verified to ship Windows ARM64 builds in 2026. A handful (notably Python's `tkinter` and Ruby's MSYS2 helpers) still have ARM64 gaps — the Native general guide flags them.
### You can do both
Nothing stops you from following both. A common shape is the WSL2 path for Linux-flavored work (Python, Ruby, Go, C) and the native path's bare-bones layer (winget + Windows Terminal + VS Code + Claude Code) for Windows-only tasks. The two share no state that conflicts.
## What you'll end up with
Either way: a fast, modern terminal-first toolchain. **Windows Terminal** as the terminal with a **Starship** prompt, **winget** managing system packages, per-language version managers instead of system interpreters, **VS Code** wired up with the right extensions per language, **Git + GitHub CLI** with SSH configured, and **Claude Code** available in both the terminal and the editor. Each language guide ends with a small calculator/demo project, unit tests, and a GUI example so you can confirm the toolchain end to end.
## Why not Ghostty here?
The Mac and Ubuntu guides both use [Ghostty](https://ghostty.org/). Ghostty has **no official Windows build** as of June 2026 — only two unofficial community ports exist. Windows Terminal is Microsoft's first-party, modern, ARM64-native equivalent and is what this guide standardizes on. If Ghostty ever ships Windows support, swapping it in is a one-line change in any of the terminal configs below.
## On Mac or Linux instead?
- [[Mac Tahoe Development Setup]] — the Apple Silicon counterpart
- [[Ubuntu Linux Development Setup]] — the Linux counterpart (which the WSL2 path piggybacks on)
- [[Software Development Home]] — index of all platform setups