-
Notifications
You must be signed in to change notification settings - Fork 0
Groups Reference
gsjonio edited this page Jul 15, 2026
·
4 revisions
winforge organizes work into 7 modular groups. Each group installs programs,
applies configuration, or both. Run one with -Group <name> or all by omitting
the flag.
| Group | Purpose | Contents |
|---|---|---|
| base | Essential programs | Firefox, Git, VLC, WinRAR, LibreOffice (5) |
| dev | Development tools | VS Code, GitHub Desktop, Claude, Python (4) |
| gaming | Gaming & social | Steam, Discord (2) |
| system | System utilities | NVIDIA App, AMD Radeon, CPU-Z, HWMonitor (4) |
| optimize | System tuning | Safe by default; -Profile safe/desktop/gaming (services, power, network, storage, visual) |
| customize | UI customization | 18 Windows Explorer / shell tweaks |
| shell | Terminal enhancement | Oh My Posh (half-life theme) + Fira Code |
| restore | Undo changes | Reverts services + policy keys to Windows defaults (explicit-only, -WhatIf) |
These install applications through the fallback chain (Winget → Chocolatey → custom URL). Detection is idempotent: already-installed apps are skipped.
These apply registry, service, and profile changes rather than installing apps:
-
optimize — privacy and performance tuning, safe by default. A
-Profile(safe/desktop/gaming) sets how aggressive it is. See Optimization Details. - customize — File Explorer, taskbar, Start menu, dark mode, mouse/keyboard tweaks. See docs/CUSTOMIZE.md.
- shell — PowerShell profile, Oh My Posh, Fira Code, PSReadLine, aliases. See Shell Enhancement.
restore is not part of the default run. It puts services and policy keys back to
Windows defaults — the escape hatch if optimize broke something.
.\setup.ps1 -Group restore -WhatIf # preview
sudo .\setup.ps1 -Group restore # applySee docs/RESTORE.md.
Edit the relevant module in src/modules/ and add an entry to its $programs
array:
@{
Name = "My App"
WingetId = "Publisher.MyApp"
ChocoId = "myapp" # optional Chocolatey fallback
Executable = "myapp" # optional, used for detection
}Program hashtable keys (consumed by Install-Program):
| Key | Required | Purpose |
|---|---|---|
Name |
yes | Display name; used for detection and logging |
WingetId |
yes | winget package id (primary install method) |
ChocoId |
no | Chocolatey package id (fallback if winget fails) |
Executable |
no | Command probed on PATH for skip-if-installed detection |
InstallerUrl |
no | Direct installer URL (last-resort fallback, run silently) |
InstallerSha256 |
no | Expected SHA256 of InstallerUrl; verified before the download runs |
Then validate detection without installing:
.\tools\validate.ps1 -Group <group> -ShowDetails