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:
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:
References
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.This should be included in the
winget configureconfiguration file (see Β§4 below).2. π₯ Windows Dev Config β selective adoption
github.com/microsoft/WindowsDeveloperConfig ships three setups:
Since primary coding is in WSL rather than native Windows, the full Windows Dev Config is overkill. Adopt selectively:
windows-dev-config/dev-config.winget(it opinionates OS settings, Start Menu, installs VS Code, Oh My Posh, etc. in ways that may clash).windows-dev-config/dev-config.wingetworth incorporating into a custom config file.winget configuremust be enabled first (one-time):winget configure --enable3. π§ WSL Comfort Shell (test + document)
WSL Comfort (
wsl-comfort/install.ps1) sets up a polished WSL environment with:fzf,ripgrep,fd,bat,eza,zoxide,jqpbcopy,pbpaste,open)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:
.\wsl-comfort\install.ps1on a fresh WSL installbashrc_user_customisationsandplaybook.yml(Oh My Posh vs Starship, existing tool installs)README.mdunder the WSL section4. π¦ Language workloads via
winget configureAdd language toolchains using the WindowsDeveloperConfig workload configs:
typescriptWorkloads/typescript/configuration.wingetWorkloads/python/configuration.wingetWorkloads/dotnet/configuration.wingetWorkloads/rust/configuration.wingetWorkloads/go/configuration.wingetEach workload ships a
configuration.wingetfile and a matchinginstall.ps1shim (which also refreshes PATH in the current session).5. π Migrate to a
winget configureconfiguration fileThe current
README.mdWindows section contains ~20+ individualwinget installlines. Replace (or supplement) these with a single declarativewinget configureYAML/.wingetconfiguration file in the repo.Benefits:
winget configure -f .\setup.winget --accept-configuration-agreementsActions:
windows/setup.winget(or similar path) covering the existingwinget installpackage listMicrosoft.Coreutils(Β§1)README.mdWindows section to referencewinget configureas the primary install path, keeping oldwinget installlines as fallback/reference or removing themReferences