Initialize-DeveloperMachine

0.1.1

Bootstrap a Windows developer machine: relocate caches off C:, install winget tools, set up WSL + Docker Desktop. Modular tasks, idempotent, dry-run support.

Minimum PowerShell version

5.1

Installation Options

Copy and Paste the following command to install this package using PowerShellGet More Info

Install-Module -Name Initialize-DeveloperMachine -RequiredVersion 0.1.1

Copy and Paste the following command to install this package using Microsoft.PowerShell.PSResourceGet More Info

Install-PSResource -Name Initialize-DeveloperMachine -Version 0.1.1

You can deploy this package directly to Azure Automation. Note that deploying packages with dependencies will deploy all the dependencies to Azure Automation. Learn More

Manually download the .nupkg file to your system's default download location. Note that the file won't be unpacked, and won't include any dependencies. Learn More

Owners

Copyright

(c) gonace. All rights reserved.

Package Details

Author(s)

  • gonace

Tags

Developer Bootstrap Windows WSL DockerDesktop winget Junction Cache NuGet npm

Functions

Initialize-DeveloperMachine

PSEditions

Desktop Core

Dependencies

This module has no dependencies.

Release Notes

Patch release. Mostly UX polish from running `v0.1.0` on real machines and finding rough edges.

```powershell
Install-Module Initialize-DeveloperMachine -RequiredVersion 0.1.1 -Scope CurrentUser
Initialize-DeveloperMachine
```

## ✨ First-run UX

- **Interactive config scaffold.** When the script runs in a terminal and finds no config file, it now offers to create one for you at `%AppData%\Initialize-DeveloperMachine\config.json`, prints the contents in a gray-boxed preview, then prompts `[P]roceed or [E]dit and reload`. Hitting `E` opens the file in your default editor and shows a spinner until you save — once saved, the preview reprints with your changes and the prompt loops. CI / `-Force` / redirected-stdin runs are unchanged (they fall through to built-in defaults silently).
- **Honest "no config" output.** Previously the script logged `[INFO] Config: <path>` even when that path didn't exist on disk. Now you get a clear `[INFO] No config file found; using built-in defaults.` plus the recommended location to drop one at.
- **Section banners restyled** as three-line boxed headers:
 ```
 ╔══════════════════════════════════════════════════════════╗
 ║ NuGet                                                    ║
 ╚══════════════════════════════════════════════════════════╝
 ```

## 🐛 Fixes

- The skip message in the `DockerDesktop` task referenced the obsolete `DockerDesktopWslHome` config key. Updated to the current `DockerDesktop.WslHome`.
- `Get-PathsConfig` now tolerates a `$null`/empty `-ConfigFile` cleanly.
- Successful winget installs (`[INFO] X installed.`) now render in green so they stand out from in-progress lines. Idempotent "already installed" lines stay default colour.
- Better post-install diagnostic when winget can't redetect a freshly-installed package: dumps the exit code in hex, the relevant `winget list` lines, and the matching Windows uninstall-registry entries — making it possible to tell a winget metadata bug apart from an actual install failure.

## 🔧 Defaults & internals

- Default `DockerDesktop.WslHome` is now `D:\.docker-wsl` (was `D:\.docker-desktop`). Reads more clearly alongside `D:\.docker` (the CLI config junction).
- Config-file lookup adds `%AppData%\Initialize-DeveloperMachine\config.json` ahead of the `~\.config\…` XDG-style path. Both still work; AppData wins when both exist.
- Bundled `Initialize-DeveloperMachine.config.json` is now also shipped inside the published module, and used as the seed template by the interactive scaffold (single source of truth, no duplicated string literal).
- New `Wait-ForFileSave` / `Open-EditorAndWaitForSave` helpers in `lib/ConfigScaffold.ps1`.

See the [README](https://github.com/gonace/Initialize-DeveloperMachine#readme) for full configuration details and known limitations.

FileList

Version History

Version Downloads Last updated
0.1.2 4 5/7/2026
0.1.1 (current version) 3 5/7/2026
0.1.0 5 5/7/2026