My Windows configuration files and scripts, managed with dotbot and git.
The following package managers are recommended for Windows:
- Winget — Windows Package Manager (built-in)
- Scoop — Command-line installer
iex "& {$(irm get.scoop.sh)} -RunAsAdmin" - Chocolatey — Package manager for Windows
- CCT (Chris Titus Tech): Use the
winutilfunction defined in the PowerShell profileor in powershell 7:irm -useb "https://christitus.com/windev" | iex
& ([scriptblock]::Create((irm https://christitus.com/windev)))
- PowerShell Profile: Custom aliases, functions, and prompt
- Windows Terminal Settings: Modern terminal configuration
- Optimization Scripts: Collection of Windows optimization and gaming tweaks
- Git Configuration: Sensible git defaults and aliases
- Dotbot Bootstrap: Automated setup on new machines
For a clean Windows 11 system, clone the repo and run the full setup script. It chains all phases:
git clone https://github.com/Ven0m0/Win.git "$HOME\Win"
pwsh -File "$HOME\Win\Scripts\Setup-Win11.ps1"The script runs these phases:
- Install winget, Git, PowerShell 7+ (if missing)
- Clone / pull this repository
- Debloat Windows — removes ~40 bloat appx packages via
packages.psd1 - Install all software — ~150 packages: winget (core, runtimes, toolchains, dev tools, CLI tools, ~110 apps), Scoop buckets + packages, Chocolatey packages, Windows features, PowerShell modules
- Deploy all configs — every tracked config to its correct path via dotbot +
Setup-Dotfiles.ps1 - Optionally install WSL2
Unattended mode (zero prompts):
pwsh -File "$HOME\Win\Scripts\Setup-Win11.ps1" -UnattendedSkip phases as needed:
| Flag | Effect |
|---|---|
-SkipDebloat |
Don't remove bloatware |
-SkipPackages |
Don't run the full software install |
-SkipWSL |
Don't install WSL2 |
Internet bootstrap (minimal — prereqs + dotfiles only, no full package catalog):
iwr -useb "https://raw.githubusercontent.com/Ven0m0/Win/main/bootstrap.ps1" | iexAlternatively, deploy configs only (no software install):
# Clone using git
git clone --depth 1 https://github.com/Ven0m0/Win.git
# Deploy configs only
mise run deployThe fastest way to set up on a fresh Windows 11 install:
iwr https://raw.githubusercontent.com/Ven0m0/Win/main/bootstrap.ps1 -UseBasicParsing | iexThis single command will automatically:
- Install winget (Windows Package Manager) if missing
- Install Git, PowerShell 7+, and dotbot
- Clone this repository
- Run the full bootstrap
- Optionally set up WSL2
If you prefer explicit control or the one-command script fails, install prerequisites manually:
-
Install dotbot (the dotfile manager):
pip install dotbot
Or via mise:
mise install dotbot
-
Recommended tools (bootstrap will install these if missing, but you can pre-install):
winget install -h Git.Git Microsoft.PowerShell Microsoft.WindowsTerminal
The bootstrap script will:
- Set up PowerShell profile
- Configure Windows Terminal
- Check for required tools
- Create common directories
- Optionally add Scripts to PATH
-
PowerShell Profile:
Copy-Item "$HOME\user\.dotfiles\config\powershell\profile.ps1" $PROFILE -Force
-
Windows Terminal Settings:
Copy-Item "$HOME\user\.dotfiles\config\windows-terminal\settings.json" "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" -Force
Bootstrap also attempts to apply Firefox user.js, Brave policy registry settings, CMD aliases, and tracked game configs when their destination folders already exist.
If automatic bootstrap fails, configure manually:
-
Enable script execution:
pwsh -nop -nol "$HOME\Scripts\allow-scripts.ps1"
-
PowerShell Profile:
Copy-Item "$HOME\user\.dotfiles\config\powershell\profile.ps1" $PROFILE -Force
-
Windows Terminal Settings:
Copy-Item "$HOME\user\.dotfiles\config\windows-terminal\settings.json" "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" -Force
-
Git Config:
Copy-Item "$HOME\.gitconfig##template" "$HOME\.gitconfig" notepad $HOME\.gitconfig
.
├── Scripts/
│ ├── Setup-Win11.ps1 # Fresh Windows 11 one-command setup (local)
│ ├── Setup-Dotfiles.ps1 # Core bootstrap logic (called by dotbot)
│ ├── Common.ps1 # Shared utility functions
│ ├── shell-setup.ps1 # Full toolchain install (Scoop, Choco, apps)
│ ├── allow-scripts.ps1 # Enable/disable PowerShell script execution
│ ├── debloat-windows.ps1 # System debloating suite
│ ├── system-settings-manager.ps1
│ ├── system-update.ps1
│ ├── system-maintenance.ps1
│ ├── fix-system.ps1
│ ├── additional-maintenance.ps1
│ ├── edid-manager.ps1 # Display EDID management
│ ├── gaming-display.ps1 # Fullscreen/MPO optimization
│ ├── gpu-display-manager.ps1 # GPU/display settings
│ ├── Network-Tweaker.ps1 # Network adapter optimization
│ ├── UltimateDiskCleanup.ps1 # Disk cleanup GUI
│ ├── shader-cache.ps1 # Shader cache cleanup
│ ├── steam.ps1 # Steam optimization
│ ├── DLSS-force-latest.ps1 # DLSS configuration
│ ├── arc-raiders/ # Arc Raiders utilities
│ ├── Hostbuilder/
│ │ └── BuildHosts.ps1 # Hosts file builder
│ └── Common.Tests.ps1 # Pester tests
├── user/.dotfiles/config/
│ ├── powershell/profile.ps1 # PowerShell profile
│ ├── windows-terminal/settings.json
│ ├── firefox/user.js
│ ├── brave/brave_debloater.reg
│ ├── cmd/alias.cmd
│ ├── bleachbit/cleaners/
│ ├── games/(bf2, bo6, bo7)/ # Game-specific configs
│ ├── nvidia/ # NVIDIA assets
│ ├── scoop/ # Scoop bucket configs
│ └── winget-configs/
├── install.conf.yaml # dotbot configuration entry point
├── .github/
│ ├── scripts/
│ │ └── bootstrap.ps1 # One-command internet bootstrap
│ ├── instructions/
│ │ ├── windows-11-setup.instructions.md
│ │ ├── powershell.instructions.md
│ │ └── ...
│ ├── skills/
│ │ ├── win-patterns/SKILL.md
│ │ └── ...
│ └── copilot-instructions.md
├── AGENTS.md # AI assistant guide
├── CLAUDE.md # Symlink to AGENTS.md
├── .gitignore
└── README.md # This file
All scripts are located in ~/Scripts/ and can be run directly:
Setup-Win11.ps1— Full fresh Windows 11 setup: debloat → install all software → deploy all configsInstall-Packages.ps1— Install the full software catalog frompackages.psd1(can run standalone)packages.psd1— Canonical package catalog (winget/scoop/choco/modules/features/appx-remove lists)Setup-Dotfiles.ps1— Deploy tracked configs (called by dotbot /mise run deploy)debloat-windows.ps1— Remove bloatware usingpackages.psd1AppxToRemovelistshell-setup.ps1— Legacy full toolchain install (superseded byInstall-Packages.ps1+packages.psd1)allow-scripts.ps1— Enable/disable PowerShell script execution policy
debloat-windows.ps1— System debloater (Apps, Services, Tasks, Features)system-settings-manager.ps1— Apply system performance optimizationssystem-update.ps1— Windows Update handlersystem-maintenance.ps1— Scheduled maintenance runnerfix-system.ps1— System repair and recovery utilitiesadditional-maintenance.ps1— Extra maintenance routines
steam.ps1— Optimize Steam for minimal RAM/CPU usageshader-cache.ps1— Clear Steam/game/GPU shader cachesDLSS-force-latest.ps1— Force latest DLSS versionedid-manager.ps1— Apply/remove EDID overrides for display issuesgaming-display.ps1— Configure fullscreen mode and multiplane overlaygpu-display-manager.ps1— GPU and display settings
UltimateDiskCleanup.ps1— Comprehensive disk cleanup tool (GUI)Clean-SpotifyCache.ps1— Clear Spotify cache
Network-Tweaker.ps1— Advanced network adapter configuration GUIHostbuilder/BuildHosts.ps1— Build custom hosts file with ad/malware blocking
PowerShell-Context-Menus.reg— Adds PowerShell to context menusCommon.ps1— Shared utility functions (imported by many scripts)
# Deploy dotfiles
mise run deploy
# or
dotbot -c install.conf.yaml
# Full bootstrap (install dotbot + deploy)
mise run bootstrap
# Check git status
git status --long
# Commit changes
git commit -m "Update configuration"
# Push to remote
git pushTo track a new configuration file:
# Add the file to git
git add $HOME\.my-new-config
# Commit
git commit -m "Add my new config"
# Push
git push# Pull latest changes
git pull
# Re-run bootstrap if needed
mise run deploy
# or
dotbot -c install.conf.yamlDotbot configuration supports templates in install.conf.yaml. Configuration files can specify conditions and variable substitution.
Example: .gitconfig##template should be copied to .gitconfig and customized.
The PowerShell profile (~/.config/powershell/profile.ps1) includes:
- Navigation:
~(go home) - Git:
gs,ga,gc,gp,gl,gd - Docker:
d,dc,dps,dimg(if docker installed) - Unix-like:
which,grep,df,du,touch,myip
Get-DiskUsage/df- Show disk usageGet-FileSize/du- Calculate directory sizeUpdate-Profile- Reload profileEdit-Profile- Edit profile in default editorGet-PublicIP/myip- Get public IP addresstouch <file>- Create/update filemkcd <dir>- Create directory and cd into itClear-TempFile- Clean temporary files
- History search with arrow keys
- Tab completion with menu
- Predictive IntelliSense (PowerShell 7+)
- Syntax highlighting
Create ~/.config/powershell/local.ps1 for machine-specific configuration that won't be tracked by git:
# ~/.config/powershell/local.ps1
# This file is ignored by git
# Machine-specific aliases
Set-Alias -Name myapp -Value "C:\path\to\app.exe"
# Machine-specific environment variables
$env:MY_VAR = "value"Similarly, for git: ~/.gitconfig.local (already included in .gitconfig##template).
- ExplorerPatcher - Enhance Windows 11 taskbar and explorer
- Unattend Generator - Create unattended Windows installation configs
- UUP dump - Download Windows updates and builds
- Tiny11 Builder - Create lightweight Windows 11 images
- NVIDIA Profile Inspector (Unlocked) - Advanced NVIDIA settings
- NVIDIA Profile Inspector - Original version
Run Scripts\allow-scripts.ps1 as administrator to enable script execution.
Manually run:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
mise run bootstrap
# or
dotbot -c install.conf.yamlManually copy:
Copy-Item "$HOME\user\.dotfiles\config\windows-terminal\settings.json" "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" -ForceThe Scripts/auto/autounattend.xml file enables fully automated Windows 11 installation.
- Windows 11 ISO - Download from UUP dump or Microsoft
- 8GB+ USB drive - For installation media
- Internet connection - Required for winget app installations
- Disable BitLocker - Before installation, disable BitLocker in Windows or BIOS
- Disable Secure Boot - Some systems require disabling in BIOS/UEFI
- Backup data - Installation will format the target disk
- Copy
Scripts/auto/autounattend.xmlto the root of your Windows 11 installation USB - Boot from the USB and follow the prompts
- Installation proceeds automatically (~45-60 minutes)
- System will restart and install apps automatically
- Windows PE loads → bypasses TPM/SecureBoot/RAM checks
- Disk is partitioned (GPT: EFI 550MB, Windows, Recovery 1000MB)
- Windows image is applied
- System specialized with bloatware removal and registry tweaks
- User "Ven0m0" created with auto-logon
- First login → runs install.ps1 (100+ apps via winget)
- Final reboot → stage2.ps1 installs WSL2
- Installation hangs at disk partitioning: Ensure disk 0 is available and not in use
- winget packages fail to install: Check internet connectivity, packages may be retried automatically
- No internet after install: Run
C:\Windows\Setup\Scripts\install.ps1manually - WSL2 install fails: Run
wsl --install -d Ubuntu --web-downloadmanually
Check these locations for debugging:
C:\Windows\Setup\Scripts\install.log- App installation logsC:\Windows\Setup\Scripts\stage2.log- WSL installation logsC:\Windows\Setup\Scripts\Specialize.log- System customization logs
Make sure dotbot is installed:
where.exe dotbotIf not found, reinstall dotbot via pip or mise.
Feel free to fork and customize for your own use!
This repository builds upon work from:
- zScripts - Windows optimization scripts
- AveYo - Various Windows tools and scripts
- FR33THYFR33THY - Gaming optimizations
This repository is provided as-is for personal use.
Note: Always review scripts before running them, especially those that modify system settings or registry values.