Public-safe, reusable dotfiles for Windows, WSL2, Linux servers, GPU servers, and Raspberry Pis. Used to manage personal infrastructure and as a template for new machines.
Shell and PowerShell configuration is split into a shared baseline plus small role overlays. Role selection is private and lives outside the repository.
For Bash or Zsh, create ~/.dotfiles-role on each machine:
export DOTFILES_ROLE="ubuntu wsl workstation"For PowerShell, create ~/.dotfiles-role.ps1 on Windows:
$env:DOTFILES_ROLE = "windows workstation"Recommended role mapping:
Windows PowerShell windows workstation
Windows WSL2 ubuntu wsl workstation
CPU cloud server ubuntu cpu-server
GPU cloud server ubuntu gpu-server
Linux workstation ubuntu workstation
Raspberry Pi ubuntu cpu-server
Keep machine-specific paths, private hostnames, SSH details, credentials, and API keys in local files such as ~/.localrc or ~/.local_profile.ps1, never in this repository.
Zsh workstation configuration can load Oh My Zsh when it is already installed, but this repository does not install it or define plugins yet. PowerShell on Windows can load Oh My Posh when the oh-my-posh command already exists; prompt themes are intentionally left for later review.
Before adding package installation to bootstrap scripts, run the read-only inventory scripts and review the output locally:
mkdir -p local/inventory
inventory/linux.sh > local/inventory/linux.txtNew-Item -ItemType Directory -Force local/inventory | Out-Null
powershell -NoProfile -ExecutionPolicy Bypass -File inventory/windows.ps1 > local/inventory/windows.txtRaw inventory outputs should stay uncommitted. Use them to decide which generic tools belong in workstation, WSL2, CPU server, and GPU server setup.
Vim configuration lives under editors/vim/. The shared vimrc is plugin-free and safe for servers; role overlays add small differences for workstation, WSL2, CPU server, GPU server, and Windows.
Neovim with LazyVim is planned for workstation and WSL2 use under editors/nvim/lazyvim/, but plugin configuration is intentionally not added yet.
Git configuration lives under git/. The shared config contains safe defaults and aliases, but no [user] identity, signing keys, credentials, private remotes, or host-specific include rules.
Git Bash on Windows should be treated as Bash shell configuration. Reusable Git Bash behavior belongs under shell/, with Windows-specific shell behavior in shell/roles/windows.sh.
Server prompts and tmux status bars are plain, dependency-free, and informative. Workstation prompts and status bars can become richer after prompt, font, and plugin choices are finalized.