Full-Stack Dev Setup on Windows - From Scratch
Everything I install on a fresh Windows machine to get to productive, fast. No OneDrive. No bloat. Just the tools that actually matter.
Before installing a single dev tool, rip out the factory bloat. A fresh Windows install comes with a lot of junk that eats RAM, runs background services, and constantly pops up notifications.
Step 0 - debloat before anything else
Do this first. OneDrive especially will fight you - it hooks into Explorer, auto-starts, and syncs your Desktop without asking. Kill it before you settle in.
# OPTION 1: Manual Debloat (if you prefer granular control)# Uninstall OneDrive completelytaskkill /f /im OneDrive.exe%SystemRoot%\SysWOW64\OneDriveSetup.exe /uninstall# Remove common bloatwareGet-AppxPackage *xbox* | Remove-AppxPackageGet-AppxPackage *clipchamp* | Remove-AppxPackageGet-AppxPackage *bingnews* | Remove-AppxPackageGet-AppxPackage *bingweather* | Remove-AppxPackageGet-AppxPackage *solitaire* | Remove-AppxPackageGet-AppxPackage *zune* | Remove-AppxPackage# Disable Copilot (optional)reg add HKCU\Software\Policies\Microsoft\Windows\WindowsCopilot /v TurnOffWindowsCopilot /t REG_DWORD /d 1 /f# --------------------------------------------------------# OPTION 2: Automated Debloat Utilities (Faster)# The Win11Debloat utility handles OneDrive, telemetry, and all bloatware at once& ([scriptblock]::Create((irm "https://debloat.raphi.re/")))# Alternatively, the Chris Titus Windows Utility (if you prefer a GUI):irm christitus.com/win | iex
Also go to Settings → Apps → Startup and disable everything you don't recognize. Then Settings → Privacy & Security → Diagnostics - turn off all telemetry.
Step 1 - WSL2 + Ubuntu (your real terminal)
WSL2 is non-negotiable. It gives you a full Linux kernel running natively - no VM overhead. Everything from here runs inside WSL unless stated otherwise.
wsl --install# Restart, then open Ubuntu from Start# Set your username + password when prompted
This installs Ubuntu by default. After restart, run wsl --update to make sure you're on the latest kernel. All terminal work from here lives in WSL.
Step 2 - terminal & shell
The Windows Terminal is the host. Inside it, you run your WSL Ubuntu shell. Stack it with Starship and the right plugins and it's indistinguishable from a Mac terminal.
Windows Terminal MUST-HAVE
The only terminal app worth using on Windows. Tabs, panes, GPU rendering, and first-class WSL integration. Install from the Microsoft Store.
Starship
Same cross-shell prompt as Mac. Install inside WSL - full Git context, instant, zero config needed out of the box.
zoxide (z)
Smarter cd that remembers your most-used dirs. z proj instead of the full path.
eza & bat
Modern ls and cat replacements with icons and syntax highlighting. Install via apt or cargo inside WSL.
zsh-autosuggestions
History-based command suggestions as you type. Pair with zsh-syntax-highlighting to catch typos before they run.
JetBrains Mono Nerd Font
Install on Windows (not WSL) - set it as the font in Windows Terminal settings so Starship icons render correctly.
# zsh + oh-my-zshsudo apt update && sudo apt install -y zsh git curlsh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"# Starship promptcurl -sS https://starship.rs/install.sh | sh# zoxidecurl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash# eza + batsudo apt install -y eza batln -s /usr/bin/batcat ~/.local/bin/bat
Step 3 - AI developer stack
Same tools as Mac. All of these have native Windows installers - no compatibility issues.
Cursor PRIMARY EDITOR
Native Windows app. Full WSL integration - open any WSL folder directly. Composer for multi-file AI edits.
Claude (Desktop)
Always open on my second monitor. Architecture, debugging, and reasoning through hard decisions. Native Windows app.
Zed FAST EDITOR
Now has a Windows build. Instant open, zero Electron overhead, built-in AI. Use when Cursor feels heavy.
Antigravity
Local agentic assistant. Check for a Windows build - otherwise run it inside WSL via the CLI.
WSL + Cursor tip: In Cursor, open the command palette and run "Connect to WSL". Your editor then runs natively inside Linux - no path translation, no permission issues, same as on a Mac.
Step 4 - core dev tools
Install everything inside WSL. This is your Linux environment - treat Windows as the display layer only.
Docker Desktop (WSL backend) MUST-USE
On Windows, Docker Desktop with WSL2 backend is actually good - no VM, no OrbStack needed. Enable WSL integration in settings.
Node via nvm
Install nvm inside WSL, then Node through it. Never install Node directly on Windows - it causes PATH hell with WSL.
pnpm
Same as Mac. Install inside WSL via npm i -g pnpm after setting up Node.
ripgrep + fzf
Install inside WSL via apt. Works identically to Mac - fast codebase search that grep can't match.
Neovim + lazygit
Install inside WSL. For quick terminal edits and a sane Git browser - same workflow as Mac.
gh CLI
GitHub from the terminal. Install inside WSL - sudo apt install gh or via their apt repo for the latest version.
# nvm + Node LTScurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashnvm install --lts# pnpmnpm i -g pnpm# Core toolssudo apt install -y ripgrep fzf neovim gh tmux jq# lazygitLAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"tar xf lazygit.tar.gz lazygitsudo install lazygit /usr/local/bin
Step 5 - Windows-side utilities
These run on Windows proper - not WSL. They handle the OS-level ergonomics that make daily use bearable.
PowerToys MUST-HAVE
Microsoft's own power-user toolkit. FancyZones (window snapping), PowerRename, Run (Spotlight-like launcher), Color Picker, and more. Free.
Raycast MUST-HAVE
Now natively available on Windows! The ultimate app launcher, clipboard manager, and workflow automation tool. Replaces Flow Launcher entirely.
Ditto (Clipboard Manager) REPLACES FLYCUT
Full clipboard history with search. Lightweight, open-source. Essential for any developer workflow.
Tailscale
Private mesh between all your machines. Same as Mac - SSH into anything, anywhere, zero config.
Zen Browser
Has a Windows build. For focused, distraction-free sessions. Chrome remains the daily driver for DevTools work.
ShareX REPLACES CLEANSHOT
Free, open-source screenshot and screen recording. Replaces Cleanshot on Mac. Annotate, GIF, upload - all in one.
Step 6 - winget bulk install
winget is Windows' package manager - like brew, but for Windows-side apps. Run this in an elevated PowerShell to install everything at once.
winget install -e --id Microsoft.WindowsTerminalwinget install -e --id Microsoft.PowerToyswinget install -e --id Anysphere.Cursorwinget install -e --id Anthropic.Claudewinget install -e --id Zed.Zedwinget install -e --id Docker.DockerDesktopwinget install -e --id Tailscale.Tailscalewinget install -e --id Google.Chromewinget install -e --id zen-browser.zenwinget install -e --id ShareX.ShareXwinget install -e --id Raycast.Raycastwinget install -e --id Ditto.Dittowinget install -e --id Figma.Figmawinget install -e --id Spotify.Spotifywinget install -e --id Discord.Discordwinget install -e --id SlackTechnologies.Slack
Shell ergonomics - .zshrc aliases
Same aliases as Mac - they all live inside WSL so they work identically.
Git Shortcuts
alias ga="git add"alias gal="git add ."alias gc="git commit"alias gs="git status"alias lm="git switch main && git pull"alias gp="git pull && git push"
NPM & Navigation
alias pj="cd ~/projects"alias nd="npm run dev"alias nb="npm run build"alias ni="npm install"alias ls="eza --icons"alias cat="bat"
The wt() worktree helper
wt() {local branch="$1"local dir="../$(basename "$PWD")__\${branch//\//-}"git worktree add -b "$branch" "$dir" && cd "$dir"}
Git identity + SSH key - first-boot checklist
- Set Git identity inside WSL
git config --global user.name "Dhirender Choudhary" and git config --global user.email "you@example.com"
- Generate SSH key
ssh-keygen -t ed25519 -C "you@example.com" - then cat ~/.ssh/id_ed25519.pub and paste into GitHub.
- Create projects folder
mkdir ~/projects inside WSL. Keep all code here - never in /mnt/c/, performance is terrible on the Windows filesystem.
- Wire up Claude Code MCP servers
After npm i -g @anthropic-ai/claude-code, connect Linear, GitHub, and Playwright MCPs from the Claude Code config.
- Set JetBrains Mono Nerd Font in Windows Terminal
Settings → Profiles → Ubuntu → Appearance → Font face → JetBrainsMono NFM. Required for Starship icons to render.
What to skip / what's different from Mac
Not everything maps 1:1 from Mac. Some tools don't exist, some have better Windows-native replacements.
- OrbStack: Skip. Docker Desktop with WSL2 backend is fast natively.
- Raycast: Use it! It finally has a native Windows build.
- Rectangle: Skip. Use FancyZones in PowerToys.
- Flycut / Maccy: Skip. Use Ditto.
- Pearcleaner: Skip. Use Revo Uninstaller or Bulk Crap Uninstaller.
- Homebrew: Skip. Use
wingetfor Windows apps, andaptinside WSL for dev tools.
Ship fast, stay sharp.