Skip to content

Gerrrt/dotfiles-Windows

Repository files navigation

dotfiles · Windows

Windows-side configuration for a WSL2 development environment — tuned for security engineering work. Manages Windows Terminal, PowerShell, WSL2 VM settings, and package installation.

Bootstrap a fresh machine: open PowerShell as Admin and run: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser then clone and run: .\setup.ps1


Stack

Layer Tool Notes
Terminal Windows Terminal TokyoNight scheme, CaskaydiaCove Nerd Font
Shell PowerShell 7 Starship prompt, vi mode via PSReadLine
Packages winget Declarative manifest
WSL2 Ubuntu Configured via wslconfig (VM limits)
Secrets 1Password SSH agent, browser extension

Directory Structure

dotfiles-Windows/
├── setup.ps1                    # Bootstrap: installs packages, fonts, config
├── wslconfig                    # Goes to %USERPROFILE%\.wslconfig
├── winget/
│   └── packages.json            # Declarative package manifest
├── windows-terminal/
│   └── settings.json            # Full Windows Terminal configuration
└── powershell/
    └── Microsoft.PowerShell_profile.ps1

Quick Start

# 1. Allow script execution (run as Admin once)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

# 2. Clone repo
git clone https://github.com/Gerrrt/dotfiles-Windows "$env:USERPROFILE\.config-windows"
cd "$env:USERPROFILE\.config-windows"

# 3. Run bootstrap
.\setup.ps1

After setup: open Windows Terminal, install the CaskaydiaCove Nerd Font if not already present, and restart the terminal.


WSL2 VM Configuration

wslconfig controls the Windows-side Hyper-V VM that runs WSL2. It lives at %USERPROFILE%\.wslconfig. The setup.ps1 copies it there automatically.

After any change to .wslconfig, restart WSL2 from PowerShell:

wsl --shutdown

Key settings: memory limit, CPU count, networking mode. See the file for details.


Windows Terminal

The full settings.json is tracked in windows-terminal/settings.json. setup.ps1 copies it to the correct location automatically.

Manual path: %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json


PowerShell Profile

The profile lives at powershell/Microsoft.PowerShell_profile.ps1 and is symlinked to $PROFILE by setup.ps1. It includes:

  • Starship prompt (consistent with the Linux/Mac setup)
  • Vi mode via PSReadLine
  • Unix-style aliases (ls, cat, grep, which)
  • WSL2 helper functions

Maintenance

# Update all winget packages
winget upgrade --all

# Re-apply Windows Terminal settings after changes
copy .\windows-terminal\settings.json "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"

# Reload PowerShell profile
. $PROFILE

About

My configurations files for Windows

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors