A living reference for getting a dev machine back to a working state. I maintain this across both workplace and personal device refreshes, most recently a laptop replacement. I keep it current as my toolset evolves.


Inventory first

Before touching the new machine, dump what’s on the old one. Memory misses things - utilities, CLI tools installed months ago, drivers. A few commands cover most of it.

Run these from Downloads so all output files land in one place:

cd $env:USERPROFILE\Downloads
  • Export winget-managed apps:
winget export -o installed_apps.json

Filtered to apps that were deliberately installed (excluding runtime/framework packages like VCRedist, VCLibs, WindowsAppRuntime, and OS-bundled components), grouped by category:

Cloud/AWS
  Amazon.AWSCLI
  Amazon.SAM-CLI
  Amazon.SessionManagerPlugin
  Microsoft.AzureCLI

Dev tools
  Microsoft.VisualStudioCode
  JetBrains.PyCharm.Community
  GitHub.GitHubDesktop
  Docker.DockerDesktop
  Python.Python.3.13
  Python.Python.3.12
  Canonical.Ubuntu.2404
  Notepad++.Notepad++

Security/networking
  GnuPG.GnuPG
  OpenVPNTechnologies.OpenVPNConnect
  PuTTY.PuTTY

Enterprise/managed
  Microsoft.Office
  Microsoft.Teams

Everyday apps
  7zip.7zip
  Adobe.Acrobat.Reader.32-bit
  Google.Chrome
  Zoom.Zoom
  • Full installed programs list via the registry (catches anything winget doesn’t know about):
Get-ItemProperty `
  HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*, `
  HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*, `
  HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher |
Where-Object { $_.DisplayName -ne $null } |
Sort-Object DisplayName |
Export-Csv installed_programs.csv -NoTypeInformation

Filtered the same way (excluding OS components, driver bundles, and runtime redistributables), grouped by category:

Cloud/AWS
  AWS Command Line Interface v2
  AWS SAM Command Line Interface
  Session Manager Plugin

Dev tools
  Microsoft Visual Studio Code
  PyCharm Community Edition
  GitHub Desktop
  Docker Desktop
  Postman x64
  Node.js
  Python 3.12.5 (64-bit)
  Python 3.13.1 (64-bit)
  Java(TM) SE Development Kit 25.0.2 (64-bit)
  Notepad++ (64-bit x64)
  Copilot

Security/networking
  GNU Privacy Guard
  Gpg4win
  PuTTY release 0.84 (64-bit)
  OpenVPN Connect
  Npcap OEM
  Zscaler

Enterprise/managed
  Microsoft 365 Apps for enterprise
  SAP Business Explorer
  SAP GUI for Windows
  Snow Inventory Agent for Windows
  Tanium Client

Everyday apps
  7-Zip
  Adobe Acrobat Reader
  Google Chrome
  Zoom Workplace (64-bit)
  • VS Code extensions:
code --list-extensions > vscode_extensions.txt

Sample response, grouped by category:

AI/AWS
  amazonwebservices.amazon-q-vscode
  amazonwebservices.aws-toolkit-vscode
  anthropic.claude-code

Containers/remote
  docker.docker
  ms-azuretools.vscode-containers
  ms-azuretools.vscode-docker
  ms-vscode-remote.remote-containers
  ms-vscode-remote.remote-wsl

Python
  ms-python.debugpy
  ms-python.python
  ms-python.vscode-pylance
  ms-python.vscode-python-envs

Other
  github.github-vscode-theme
  mohsen1.prettify-json
  ms-vscode.powershell
  redhat.vscode-yaml
  tomoki1207.pdf
  • Chocolatey packages (if used):
choco list --local-only > choco_apps.txt

Cloud and IaC

  • AWS CLI - restore profiles and SSO config (%USERPROFILE%\.aws\config)
  • AWS CDK (npm install -g aws-cdk)
  • cfn-lint (pip install cfn-lint)

Dev environment

  • VS Code - restore extensions from the export above (code --install-extension <name> per line in vscode_extensions.txt)
  • Git - global config (%USERPROFILE%\.gitconfig), SSH keys, GPG signing if used
  • Node.js via winget (winget install OpenJS.NodeJS.LTS) or nvm-windows
  • Python via winget (winget install Python.Python.3) or pyenv-win
  • Docker Desktop
  • WSL2 - Ubuntu distro (wsl --install -d Ubuntu), confirm it starts clean

AI tooling

  • GitHub Copilot (VS Code extension)
  • Claude Code CLI (npm install -g @anthropic-ai/claude-code)
  • Amazon Q (VS Code extension or standalone installer)
  • Kiro (winget install Amazon.Kiro)

Credentials and config

Software is the easy part. Config is what actually costs time when missed.

  • AWS SSO / IAM credentials - run aws configure sso and confirm aws sts get-caller-identity works per profile
  • SSH keys - restore to %USERPROFILE%\.ssh\ and set permissions (icacls or via Git Bash chmod 600)
  • GPG keys - import with gpg --import private.asc, set user.signingkey in .gitconfig
  • Browser bookmarks and saved logins
  • Dotfiles: %USERPROFILE%\.aws\config, %USERPROFILE%\.gitconfig, %USERPROFILE%\.ssh\config
  • VS Code user settings JSON (Ctrl+Shift+P -> Preferences: Open User Settings (JSON))

Before wiping the old machine, zip up dotfiles and the VS Code settings JSON as a standalone backup - restoring config as part of “reinstall the app” is slower than having it already on hand.