| Area | Location / Notes |
|---|---|
| Shells | dot-bash/, pswh |
| PowerShell | windows\profile\Microsoft.PowerShell_profile.ps1 |
| Neovim | dot-config/nvim — see its README.md |
| WSL | windows\.wslconfig, dot-home/.wsl_env |
| Terminals | ⭐ WezTerm, Windows Terminal |
| Fonts | Geist Mono, Segoe UI Emoji (built-in), optional Symbols Nerd Font Mono |
Other helpful files in dot-config -> .config and dot-home -> ~/*.
💻 my hardware
- Laptop: ThinkPad X1 Carbon Gen 10 (2022)
- Intel Core i7-1260P (12th Gen)
- Intel Iris Xe Graphics
- OS: Windows 11 Pro with WSL2 (Ubuntu)
- Monitor: Dell U2723QE
Recommended: Makefile and using GNU stow
sudo apt-get install git make stow
make # Bootstrap symlinks, installs, etc.
make delete # Remove all symlinks
make dry-run # Preview changesManual Symlinks
ln -sf "$(pwd)/dot-config/nvim" "$HOME/.config/nvim"
ln -sf "$(pwd)/dot-vim/.vimrc" "$HOME/.vimrc"
ln -sf "$(pwd)/dot-bash/.bashrc" "$HOME/.bashrc"Recommended: using the bootstrap script to cover all setup
.\windows\bootstrap.ps1
# Skip components: -SkipScoop, -SkipWinget, -SkipSymlinks, etc.Getting packages through manifests:
winget import -i .\windows\winget_packages.json
scoop import .\windows\scoopfile.jsonRun with elevated permissions
If bootstrap fails, run in elevated PowerShell (auto-elevation within the script should handle this):
Start-Process wt -Verb RunAs -ArgumentList `
"powershell -NoProfile -ExecutionPolicy Bypass -File `"$PWD\windows\bootstrap.ps1`""Manual Symlinks
# PowerShell profile
New-Item -ItemType SymbolicLink `
-Path $PROFILE `
-Target "$(Resolve-Path .\windows\Microsoft.PowerShell_profile.ps1)" `
-Force
# WSL config
New-Item -ItemType SymbolicLink `
-Path "$env:USERPROFILE\.wslconfig" `
-Target "$(Resolve-Path .\windows\.wslconfig)" `
-Force
# Vim / Neovim
New-Item -ItemType SymbolicLink `
-Path "$HOME\_vimrc" `
-Target "$(Resolve-Path .\dot-home\.vimrc)" `
-Force
New-Item -ItemType SymbolicLink `
-Path "$env:LOCALAPPDATA\nvim" `
-Target "$(Resolve-Path .\dot-config\nvim)" `
-ForceThe default $PROFILE path resolves inside OneDrive, which leads to:
- Unwanted OneDrive pollution when modules or profile-related files are created
- Reduced portability across machines
- Ongoing background sync overhead for files that don’t need it
Solution: relocate the PowerShell profile
Redirect $PROFILE to a local path under Documents\WindowsPowerShell (and the equivalent directory for pwsh).
A small utility script is used to redefine $PROFILE. This script is copied into the standard
Documents directory and sourced automatically. As a result, only this single profile file remains in OneDrive, while the actual working profile lives locally.
Copy-Item -Path ".\windows\utils\fix_profile_path.ps1" `
-Destination (Join-Path $env:OneDrive "Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1") `
-ForceDo not attempt to change the registry entries related to OneDrive.. been there done that.