bootstrap_windows_env
Windows-native bootstrapper for a personal Windows 11 development workstation, with an optional Fedora WSL handoff.
The tool is intentionally conservative:
- Windows packages come from
wingetby exact package ID whenever available. - Secondary managed providers such as Scoop or Chocolatey are used only for items without a reliable
wingetmanifest, such aspyenv-win. - Unsupported packages are reported as deferred instead of installed through ad hoc custom installers.
- WSL guest provisioning expects the published
JMR-dev/bootstrap_dev_envLinux release to support--wsl; this repository does not modify that Linux project.
Build
go build ./cmd/bootstrap_windows_env
Tagged GitHub releases build and upload a precompiled bootstrap_windows_env.exe.
Usage
.\bootstrap_windows_env.exe
.\bootstrap_windows_env.exe --yes
.\bootstrap_windows_env.exe --dry-run
.\bootstrap_windows_env.exe --only os
.\bootstrap_windows_env.exe --only host
.\bootstrap_windows_env.exe --only custom
.\bootstrap_windows_env.exe --only config
.\bootstrap_windows_env.exe --only wsl
.\bootstrap_windows_env.exe --no-ai
.\bootstrap_windows_env.exe --no-wsl
Phases
os runs before any application installation. It invokes Windows Update/Microsoft Update, stops for reboot when required, creates a restore point, runs Chris Titus Tech WinUtil with the managed sane-default config, enables Developer Mode and Windows sudo, applies power/update/UI/store/taskbar defaults, then creates a second restore point before package installation.
host installs exact winget packages, configures Hyper-V when supported for Vagrant, provisions Node.js LTS through fnm, installs pyenv-win through Scoop or Chocolatey, provisions the latest stable Python through pyenv, and imports VLC default media-player associations for common audio/video file types.
Visual Studio Community 2026 is installed as Microsoft.VisualStudio.Community with the managed .vsconfig exported from the current workstation. That config includes the native desktop workload, Microsoft C/C++ tools, Windows SDKs, and CMake integration. The Windows host intentionally does not install gcc or g++; native C and C++ builds should use the Visual Studio toolchain.
custom installs oh-my-posh, agy through Google's official Windows PowerShell installer, Node-based AI CLIs unless --no-ai is set, Playwright browsers, and the JMR-dev/gh-repo-bootstrap GitHub CLI extension.
config deploys managed WezTerm, PowerShell profile, and oh-my-posh assets, backs up differing existing files with numbered suffixes, clones JMR-dev/nvim-config, and optionally offers interactive GitHub/SSH setup.
wsl enables WSL prerequisites, installs the current official FedoraLinux-* distro reported by wsl --list --online, stops for reboot or first-launch username creation when needed, then invokes the latest Linux bootstrap release with --wsl --headless --yes.
Current Deferrals
Webcamoid is deferred because no exact winget manifest was available during implementation. Native Docker Desktop, Podman Desktop, Buildah, Minikube, Firecracker, QEMU, virt-manager, Windows Terminal, and VS Code are also intentionally excluded from Windows v1.