Skip to content

Ven0m0/Win

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

841 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Windows Dotfiles

Maintainability

My Windows configuration files and scripts, managed with dotbot and git.

Package Managers

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 winutil function defined in the PowerShell profile
    irm -useb "https://christitus.com/windev" | iex
    or in powershell 7:
    & ([scriptblock]::Create((irm https://christitus.com/windev)))

Features

  • 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

Fresh Windows 11 Install (One-Command)

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:

  1. Install winget, Git, PowerShell 7+ (if missing)
  2. Clone / pull this repository
  3. Debloat Windows — removes ~40 bloat appx packages via packages.psd1
  4. Install all software — ~150 packages: winget (core, runtimes, toolchains, dev tools, CLI tools, ~110 apps), Scoop buckets + packages, Chocolatey packages, Windows features, PowerShell modules
  5. Deploy all configs — every tracked config to its correct path via dotbot + Setup-Dotfiles.ps1
  6. Optionally install WSL2

Unattended mode (zero prompts):

pwsh -File "$HOME\Win\Scripts\Setup-Win11.ps1" -Unattended

Skip 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" | iex

Alternatively, deploy configs only (no software install):

# Clone using git
git clone --depth 1 https://github.com/Ven0m0/Win.git
# Deploy configs only
mise run deploy

Quick Start

Option 1: One-Command Setup (Fresh Windows 11)

The fastest way to set up on a fresh Windows 11 install:

iwr https://raw.githubusercontent.com/Ven0m0/Win/main/bootstrap.ps1 -UseBasicParsing | iex

This 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

Option 2: Manual Setup

If you prefer explicit control or the one-command script fails, install prerequisites manually:

  1. Install dotbot (the dotfile manager):

    pip install dotbot

    Or via mise:

    mise install dotbot
  2. 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

Manual Setup (if bootstrap doesn't run)

  1. PowerShell Profile:

    Copy-Item "$HOME\user\.dotfiles\config\powershell\profile.ps1" $PROFILE -Force
  2. 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:

  1. Enable script execution:

    pwsh -nop -nol "$HOME\Scripts\allow-scripts.ps1"
  2. PowerShell Profile:

    Copy-Item "$HOME\user\.dotfiles\config\powershell\profile.ps1" $PROFILE -Force
  3. Windows Terminal Settings:

    Copy-Item "$HOME\user\.dotfiles\config\windows-terminal\settings.json" "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" -Force
  4. Git Config:

    Copy-Item "$HOME\.gitconfig##template" "$HOME\.gitconfig"
    notepad $HOME\.gitconfig

Repository Structure

.
├── 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

Available Scripts

All scripts are located in ~/Scripts/ and can be run directly:

Setup & Bootstrap

  • Setup-Win11.ps1 — Full fresh Windows 11 setup: debloat → install all software → deploy all configs
  • Install-Packages.ps1 — Install the full software catalog from packages.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 using packages.psd1 AppxToRemove list
  • shell-setup.ps1 — Legacy full toolchain install (superseded by Install-Packages.ps1 + packages.psd1)
  • allow-scripts.ps1 — Enable/disable PowerShell script execution policy

System Optimization

  • debloat-windows.ps1 — System debloater (Apps, Services, Tasks, Features)
  • system-settings-manager.ps1 — Apply system performance optimizations
  • system-update.ps1 — Windows Update handler
  • system-maintenance.ps1 — Scheduled maintenance runner
  • fix-system.ps1 — System repair and recovery utilities
  • additional-maintenance.ps1 — Extra maintenance routines

Gaming Utilities

  • steam.ps1 — Optimize Steam for minimal RAM/CPU usage
  • shader-cache.ps1 — Clear Steam/game/GPU shader caches
  • DLSS-force-latest.ps1 — Force latest DLSS version
  • edid-manager.ps1 — Apply/remove EDID overrides for display issues
  • gaming-display.ps1 — Configure fullscreen mode and multiplane overlay
  • gpu-display-manager.ps1 — GPU and display settings

Maintenance & Cleanup

  • UltimateDiskCleanup.ps1 — Comprehensive disk cleanup tool (GUI)
  • Clean-SpotifyCache.ps1 — Clear Spotify cache

Networking

  • Network-Tweaker.ps1 — Advanced network adapter configuration GUI
  • Hostbuilder/BuildHosts.ps1 — Build custom hosts file with ad/malware blocking

Other

  • PowerShell-Context-Menus.reg — Adds PowerShell to context menus
  • Common.ps1 — Shared utility functions (imported by many scripts)

Dotbot Usage

Basic Commands

# 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 push

Adding New Dotfiles

To 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

Updating on Another Machine

# Pull latest changes
git pull

# Re-run bootstrap if needed
mise run deploy
# or
dotbot -c install.conf.yaml

Templates

Dotbot 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.

PowerShell Profile Features

The PowerShell profile (~/.config/powershell/profile.ps1) includes:

Aliases

  • 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

Functions

  • Get-DiskUsage / df - Show disk usage
  • Get-FileSize / du - Calculate directory size
  • Update-Profile - Reload profile
  • Edit-Profile - Edit profile in default editor
  • Get-PublicIP / myip - Get public IP address
  • touch <file> - Create/update file
  • mkcd <dir> - Create directory and cd into it
  • Clear-TempFile - Clean temporary files

PSReadLine Configuration

  • History search with arrow keys
  • Tab completion with menu
  • Predictive IntelliSense (PowerShell 7+)
  • Syntax highlighting

Customization

Local Customizations

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).

Useful Resources

Windows Customization

ISO Building

NVIDIA Tools

Troubleshooting

PowerShell Scripts Won't Run

Run Scripts\allow-scripts.ps1 as administrator to enable script execution.

Bootstrap Script Doesn't Run

Manually run:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
mise run bootstrap
# or
dotbot -c install.conf.yaml

Windows Terminal Settings Not Applied

Manually copy:

Copy-Item "$HOME\user\.dotfiles\config\windows-terminal\settings.json" "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" -Force

Automated Windows 11 Installation (autounattend.xml)

The Scripts/auto/autounattend.xml file enables fully automated Windows 11 installation.

Prerequisites

  • 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

Usage

  1. Copy Scripts/auto/autounattend.xml to the root of your Windows 11 installation USB
  2. Boot from the USB and follow the prompts
  3. Installation proceeds automatically (~45-60 minutes)
  4. System will restart and install apps automatically

Installation Flow

  1. Windows PE loads → bypasses TPM/SecureBoot/RAM checks
  2. Disk is partitioned (GPT: EFI 550MB, Windows, Recovery 1000MB)
  3. Windows image is applied
  4. System specialized with bloatware removal and registry tweaks
  5. User "Ven0m0" created with auto-logon
  6. First login → runs install.ps1 (100+ apps via winget)
  7. Final reboot → stage2.ps1 installs WSL2

Troubleshooting

  • 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.ps1 manually
  • WSL2 install fails: Run wsl --install -d Ubuntu --web-download manually

Log Files

Check these locations for debugging:

  • C:\Windows\Setup\Scripts\install.log - App installation logs
  • C:\Windows\Setup\Scripts\stage2.log - WSL installation logs
  • C:\Windows\Setup\Scripts\Specialize.log - System customization logs

Dotbot Commands Not Working

Make sure dotbot is installed:

where.exe dotbot

If not found, reinstall dotbot via pip or mise.

Contributing

Feel free to fork and customize for your own use!

Credits

This repository builds upon work from:

License

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.

About

Windows stuff

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors