π ζ₯ζ¬θͺ
Automated desktop environment setup for Windows 10 / 11, covering development (.NET, Rust, VRChat/Unity), gaming, and daily use.
setup.cmd β single entry point
ββ Boxstarter (reboot-resilient orchestrator)
ββ boxstarter.ps1
ββ Phase 0: OS support check (libs/os-guard.ps1)
ββ Phase 1: Environment detection
ββ Phase 2: winget configure or (configurations/packages.dsc.yaml
β winget import (degraded mode) or configurations/packages.import.json,
β libs/strategy.ps1)
ββ Phase 3: Chocolatey (fonts, vb-cable) + posh-git (PowerShellGet)
ββ Phase 4: Architecture-conditional packages
ββ Phase 5: Post-install (libs/post-install.ps1)
β ββ dotnet tool β VPM CLI
β ββ Unity Hub β Unity 2022.3.22f1
β ββ mkcert β local CA
β ββ Docker Desktop β image pulls
ββ Phase 6: Remote Desktop (Enable-RemoteDesktop)
ββ Phase 7: Windows Update & teardown
| Priority | OS | Status |
|---|---|---|
| 1 | Windows 11 Pro / Enterprise | β Fully supported |
| 2 | Windows 11 Home | β Supported (Hyper-V unavailable) |
| 3 | Windows 10 22H2 Pro / Enterprise | |
| 4 | Windows 10 22H2 Home | |
| 5 | Windows Server 2019+ | |
| Windows 10 < 22H2 | β Unsupported |
- x86_64 or ARM64 processor
- Windows 10 22H2 (build 19045) or later
- At least 2 GB of RAM
- At least 150 GB of free disk space
- Internet connection
Clone or download this repository, then run:
.\setup.cmdNote: Do not run from a network (UNC) path.
cmd.exedoes not support UNC paths and may cause unexpected behavior.
The script will:
- Install Chocolatey and Boxstarter if not already present
- Launch
boxstarter.ps1viaInstall-BoxstarterPackage(reboot-resilient) - Apply the WinGet Configuration (DSC) to install 104 packages
declaratively when available, otherwise fall back to
winget import(degraded mode) and report any resources it could not apply - Install remaining packages via Chocolatey (fonts and audio drivers)
- Run post-install setup (VPM CLI, Unity, mkcert, Docker images)
- Enable Microsoft Update and run Windows Update
Boxstarter handles reboots automatically. If a reboot interrupts the process,
simply re-run .\setup.cmd β all phases are idempotent.
To use the lighter configuration (development tools only, no gaming/media):
Edit boxstarter.ps1's Phase 2 and change $ConfigProfile from 'full'
to 'min'. This single value selects the DSC file, its import.json
fallback, and its unapplied-resources list together.
See configurations/packages.dsc.yaml for the full list. Key categories:
- Runtimes: .NET SDK 8/10, Rust, Visual C++ Redistributable
- Development: Git, Android Studio
- VRChat: Unity Hub, VRChat Creator Companion, VRCX
- Editors: VS Code, Cursor, Sublime Text 4, Vim, Neovim
- CLI Tools: 7-Zip, FFmpeg, fzf, jq, yq, chezmoi, tealdeer, mkcert
- Browsers: Chrome, Firefox ESR, Tor Browser
- Gaming: Steam, Epic Games, EA Desktop, Minecraft, StepMania
- Communication: Discord, Slack, Zoom
- Productivity: Notion, OneNote, PowerToys, Grammarly, Kindle
Note: GitHub CLI (
gh) is no longer installed by this repository. It is dotfiles's responsibility, viamise.
- Fonts: HackGen, HackGen Nerd, Lato
- Audio: VB-CABLE Virtual Audio Device
- posh-git
- VPM CLI (via dotnet tool): VRChat package manager
- Unity 2022.3.22f1: Required by VRChat SDK/VCC
- mkcert: Local CA for HTTPS development
- Docker images: Base images (alpine, debian, ubuntu, node variants)
Note: Node.js version management is not handled by this repository. It is dotfiles's responsibility, via
mise.
- Docker Desktop
- Oracle VirtualBox
- nektos/act (GitHub Actions local runner)
This project is responsible for installation only. OS preferences, shell configuration, and dotfiles should be managed separately (e.g., via dotfiles).
| Layer | Owns | Examples |
|---|---|---|
| winget / DSC (this repository) | GUI apps, MSI/Inno/WiX/burn-style installers, OS settings | Git, 7-Zip, GnuPG, Neovim, .NET SDK, Steam, Unity Hub |
| dotfiles (mise) | Delegated CLI tools, language runtimes | Node.js, GitHub CLI, ghq, GitHub Copilot CLI, git-vrc |
| dotfiles (managed User PATH) | The Windows User PATH | mise\shims, WinGet\Links, packages declared in data.wingetUserPath.packages |
| Chocolatey (this repository) | Fonts, audio drivers | HackGen, VB-CABLE |
Not every CLI tool moved to dotfiles β only the five first-wave delegation targets in the "Examples" column above did. This repository still installs many other CLI tools directly via winget (see "CLI Tools" under What Gets Installed above, e.g. 7-Zip, FFmpeg, fzf, jq, yq, chezmoi, tealdeer, mkcert).
This repository's own scripts do not manage or write the Windows User
PATH β the one exception is the third-party Unity CLI installer
(libs/unity-cli-installer.ps1 invokes Unity's own install.ps1),
which persists an entry there as its own documented side effect, not
something this repository's code does directly. User PATH ownership
otherwise belongs to dotfiles' managed-path reconciler: dotfiles'
docs/winget-user-path.md documents the mechanism, and
home/dot_config/powershell/lib/managed-paths.ps1 is its single
source of truth for the managed-path set.
setup.cmd alone no longer installs Node.js, GitHub CLI, ghq, GitHub
Copilot CLI, or git-vrc β all five now come from dotfiles' mise
configuration. This repository installs the chezmoi binary itself
(see What Gets Installed above) but never runs
chezmoi apply automatically; run it yourself after setup.cmd
completes, from a fresh shell so mise is already on PATH (an
earlier apply, before mise is reachable, silently no-ops the
tool-install step). See
docs/dotfiles-boundary.md
for the full list of operations that do not work until dotfiles has
been applied and the recovery path if the first apply ran too early,
and Β§7
for the rationale behind moving these tools to dotfiles in the first
place (including the operational rule to run winget upgrade from a
local or RDP interactive session, never over SSH).
The legacy Vagrant-based test environment has been removed. Modern testing approaches under consideration:
- Windows Sandbox β lightweight, disposable (no reboot testing)
- Hyper-V VM β full testing including reboots (Pro edition required)
- GitHub Actions Windows Runner β CI automation (desktop environment differences)