Skip to content

Build 2026: adopt winget configure, WindowsDeveloperConfig, WSL Comfort, and language workloadsΒ #5

Description

@richeney

Overview

Build 2026 introduced several tools that directly improve this repo's Windows setup story. This issue tracks the work needed to adopt them.


1. πŸ›  Microsoft.Coreutils

Add installation of Microsoft.Coreutils β€” native Linux-style CLI utilities (ls, cp, rm, grep, cat, etc.) built on uutils/coreutils in Rust, running directly on Windows without WSL.

winget install Microsoft.Coreutils

This should be included in the winget configure configuration file (see Β§4 below).


2. πŸ–₯ Windows Dev Config β€” selective adoption

github.com/microsoft/WindowsDeveloperConfig ships three setups:

Setup Description
Windows Dev Config Full workstation: tools, OS settings, WSL, terminal
WSL Comfort Polished WSL shell: zsh/bash, Starship, modern CLI tools
Workloads Single language toolchains: Node, Python, .NET, Rust, Go, …

Since primary coding is in WSL rather than native Windows, the full Windows Dev Config is overkill. Adopt selectively:

  • Skip the full windows-dev-config/dev-config.winget (it opinionates OS settings, Start Menu, installs VS Code, Oh My Posh, etc. in ways that may clash).
  • Adopt WSL Comfort (Β§3) and language Workloads (Β§4) from this repo.
  • Cherry-pick any useful resources/DSC resources from windows-dev-config/dev-config.winget worth incorporating into a custom config file.

winget configure must be enabled first (one-time):

winget configure --enable

3. 🐧 WSL Comfort Shell (test + document)

WSL Comfort (wsl-comfort/install.ps1) sets up a polished WSL environment with:

  • Choice of zsh or bash
  • Starship prompt
  • Modern CLI tools: fzf, ripgrep, fd, bat, eza, zoxide, jq
  • Clipboard shims (pbcopy, pbpaste, open)
  • Optional Homebrew
  • Themed Windows Terminal profile with Cascadia Code Nerd Font

It is interactive by default (pick and choose components) or fully unattended with -NonInteractive. The Linux half (comfort-shell-bootstrap.sh) can be run standalone on any Ubuntu host.

Actions:

  • Test .\wsl-comfort\install.ps1 on a fresh WSL install
  • Evaluate overlap with existing bashrc_user_customisations and playbook.yml (Oh My Posh vs Starship, existing tool installs)
  • Decide: replace existing WSL bootstrap with comfort shell, or use alongside it?
  • Document the chosen approach in README.md under the WSL section

4. πŸ“¦ Language workloads via winget configure

Add language toolchains using the WindowsDeveloperConfig workload configs:

Language Installs Config path
Node / TypeScript Node.js LTS + global typescript Workloads/typescript/configuration.winget
Python Python 3.13 + uv Workloads/python/configuration.winget
.NET .NET SDK 10 Workloads/dotnet/configuration.winget
Rust Rust stable via rustup Workloads/rust/configuration.winget
Go Go (rolling) Workloads/go/configuration.winget

Each workload ships a configuration.winget file and a matching install.ps1 shim (which also refreshes PATH in the current session).

# Example β€” run from a local clone of WindowsDeveloperConfig
winget configure -f .\Workloads\rust\configuration.winget --accept-configuration-agreements --disable-interactivity
# Or use the shim for PATH refresh in current session:
.\Workloads\rust\install.ps1

Note: Go and Docker are already in TO_ADD.md β€” workloads cover Go; Docker can be addressed separately.


5. πŸ”„ Migrate to a winget configure configuration file

The current README.md Windows section contains ~20+ individual winget install lines. Replace (or supplement) these with a single declarative winget configure YAML/.winget configuration file in the repo.

Benefits:

  • Idempotent β€” safe to re-run after a PC reset
  • Declarative β€” version-controlled, diff-friendly
  • Composable β€” can reference workload configs or inline DSC resources
  • Single command to apply: winget configure -f .\setup.winget --accept-configuration-agreements

Actions:

  • Create windows/setup.winget (or similar path) covering the existing winget install package list
  • Include Microsoft.Coreutils (Β§1)
  • Reference or inline the desired language workloads (Β§4)
  • Update README.md Windows section to reference winget configure as the primary install path, keeping old winget install lines as fallback/reference or removing them

References

Metadata

Metadata

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions