# Native Windows Development Setup A complete, opinionated, modern setup for software development on **Windows 11**, native end-to-end — no WSL2 involved. Every tool here is chosen to install and run identically on **both ARM64 (Snapdragon, Surface Pro 11, Windows Dev Kit 2023) and x64 (Intel/AMD)** Windows 11 machines. This is one of two Windows paths in the [[Windows 11 Development Setup]] index. The other is the [[WSL2 Windows Development Setup|WSL2 path]]; they can coexist on the same machine. > [!info] Why native? > The native path is the right choice when you're building Windows software (WinUI, WPF, MSIX, .NET, Win32, anything that needs MSVC), targeting Windows ARM64 specifically, or want a single filesystem with no `\\wsl.localhost\` paths. If your work is mostly Linux-flavored or matches a Linux production environment, the [[WSL2 Windows Development Setup|WSL2 path]] is usually the simpler choice. ## Where to start Everyone starts here: - [[General_Development_Windows_Native_Setup|General Setup]] — the foundation: winget, Git for Windows, GitHub CLI, Windows Terminal, PowerShell 7, Starship, VS Code, and Claude Code Then pick the language(s) you'll be working with: - [[Python_Development_Windows_Native_Setup|Python]] — uv, ruff, mypy, ipython - [[C_Development_Windows_Native_Setup|C]] — Visual Studio 2026 Build Tools (MSVC + clang-cl), CMake, Ninja, raylib - [[Ruby_Development_Windows_Native_Setup|Ruby]] — RubyInstaller (with rv as a version manager) - [[Go_Development_Windows_Native_Setup|Go]] — go, golangci-lint, gopls - [[Rust_Development_Windows_Native_Setup|Rust]] — rustup, cargo tooling ## What you'll end up with A fast, modern, terminal-first Windows toolchain: **Windows Terminal** as the terminal with a **Starship** prompt, **winget** managing system packages, **PowerShell 7** as the shell, 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. Every guide is independent once the general setup is done — they're peers, not a sequence, so jump straight to the language you need. > [!info] Why winget instead of Scoop or Chocolatey? > The Mac guide builds on Homebrew; Ubuntu builds on apt. For a fair Windows equivalent we use **winget** — Microsoft's official package manager, ships with every Windows 11 install (via App Installer), and has first-class native binaries for **both ARM64 and x64**. Scoop and Chocolatey are both popular, but neither has the architecture parity story that's important here. For the small handful of tools that aren't well-packaged in winget, we fall back to each project's own architecture-aware installer (Starship is a winget package; uv, rustup, Claude Code use official scripts that detect the CPU). ## ARM64 caveats up front Every recommended tool here works on ARM64, but a few have notes that the per-language guides cover in detail. Read these once now so nothing surprises you: | Tool | ARM64 gotcha | |------|--------------| | **Ghostty** | Not available on Windows at all (community ports exist but aren't upstream). Replaced by **Windows Terminal**. | | **WezTerm** | No official ARM64 build; would require x64 emulation. Skipped in favor of Windows Terminal. | | **Python `tkinter`** | The python.org **ARM64** installer does not bundle Tk (so `tkinter`, `turtle`, IDLE all fail to import). The Python GUI demo in [[Python_Development_Windows_Native_Setup]] flags this and shows two workarounds. | | **uv-managed Python** | `uv python install` on ARM64 hosts may default to x64 CPython unless you pass `--python-platform aarch64-pc-windows-msvc`. The Python guide shows the right flag. | | **rv (Ruby version manager)** | Works on Windows but does not ship precompiled Ruby binaries — paired with RubyInstaller in the Ruby guide. In PowerShell, invoke it as `rvw` to avoid clobbering the `Remove-Variable` alias. | | **RubyInstaller ARM64** | Ruby itself runs natively; the MSYS2 Unix-tools sidecar isn't fully ported, so a small set of gems with native extensions may need extra steps. | | **Claude Code** | Native Windows ARM64 binary requires **Claude Code 2.1.41 or newer** (Feb 2026). Older builds error with "Platform win32-arm64 not found in manifest." The installer script in [[General_Development_Windows_Native_Setup]] pins a modern version. | Everything else — winget, Windows Terminal, PowerShell 7, Starship, VS Code, Git for Windows, GitHub CLI, Visual Studio 2026 Build Tools, rustup, Go, MesloLGM Nerd Font — runs natively on both architectures with no special flags. ## Companion files Recommended configuration files to copy into place as you work through the guides: - [[_resources/configs/windows-terminal-settings.json|Windows Terminal settings]] - [[_resources/configs/starship.toml|Starship config]] - [[_resources/configs/vscode-settings.json|VS Code settings]] - [[_resources/configs/powershell-profile.ps1|PowerShell $PROFILE]] > [!note] How to use these guides > The guides are written to be **copy/pasted in order** — each is a sequence of commands, not a single runnable script. Some steps (GitHub/Anthropic OAuth, pasting config files, uploading your SSH key, the Visual Studio Build Tools GUI installer) are deliberately manual. If you use an AI assistant other than Claude, the AI-setup steps will differ, and none of the AI setup is required in order to code. ## Related notes - [[Windows 11 Development Setup]] — the top-level Windows index and path picker - [[WSL2 Windows Development Setup]] — the Linux-inside-Windows alternative - [[Mac Tahoe Development Setup]] — the Apple Silicon counterpart - [[Ubuntu Linux Development Setup]] — the Linux counterpart - [[Software Development Home]] — index of all platform setups