One-command development environment for WSL Arch, WSL Ubuntu and native Windows.
Install · What you get · Themes · Tools · Cheatsheet · Docs
WSL (Arch / Ubuntu)
curl -fsSL https://raw.githubusercontent.com/Robertcl795/dotfiles/main/bootstrap.sh | bashNative Windows — from pwsh 7, not Windows PowerShell 5.1:
winget install Microsoft.PowerShell
pwsh
irm https://raw.githubusercontent.com/Robertcl795/dotfiles/main/bootstrap.ps1 | iexOther ways to install — from a branch, from a clone, non-interactive
# From a feature branch
BRANCH=my-branch
curl -fsSL "https://raw.githubusercontent.com/Robertcl795/dotfiles/$BRANCH/bootstrap.sh" \
| DOTFILES_BRANCH=$BRANCH bash
# From a clone
git clone https://github.com/Robertcl795/dotfiles.git ~/.dotfiles
~/.dotfiles/bootstrap.sh
# Non-interactive, everything chosen up front
DOT_NONINTERACTIVE=1 DOT_SHELL=zsh DOT_THEME=cyber ./bootstrap.shFresh Arch WSL starts as root with no user. Run the same command: it
updates the system, enables sudo for wheel, creates your user, sets it as
the WSL default, and offers to wsl --shutdown. Reopen Arch and the install
resumes automatically from a one-shot ~/.bashrc hook.
Details: docs/os/arch.md.
Tip
Keep the repo and your projects under ~/, never /mnt/c/... — cross-OS
I/O is 10-20× slower. The bootstrap moves off /mnt automatically, and the
shell warns (and auto-cds home) when a session starts there.
flowchart LR
A["bootstrap.sh"] --> B["0 · preflight<br/>detect OS"]
B --> C["1 · packages<br/>CLI stack"]
C --> D["2 · link<br/>symlinks"]
D --> E["3 · shell<br/>zsh / fish"]
E --> F["4 · prompt<br/>starship"]
F --> G["5-9 · nvim, k8s,<br/>zellij, langs, AI"]
G --> H["10-11 · WSL tuning,<br/>AI standard"]
H --> I["12 · greeting<br/>fastfetch"]
I --> J["summary"]
| Area | What's installed | Docs |
|---|---|---|
| Shell | zsh (default) with vi-mode, autosuggestions, fast-syntax-highlighting, history-substring-search — or fish with fisher + fzf.fish | 03-shell |
| Prompt | Starship, five themes | THEMES |
| CLI stack | bat · eza · fzf · zoxide · ripgrep · fd · lazygit · lazydocker · glow · duf · yazi · sshs · lnav · just · zellij | TOOLS |
| Greeting | fastfetch on every new tab | 12-fastfetch |
| Editor | Neovim + lazy.nvim | 05-nvim |
| Languages | rustup · fnm (Node) · uv (Python) · kubectl/helm/k3d | 08-lang-toolchains |
| AI | Claude Code · opencode · gh copilot, plus the AI Development Standard | 09 · 11 |
| WSL tuning | .wslconfig networking, systemd, NTFS performance guards |
10-wsl |
The aliases you'll use every day — full list in the cheatsheet:
| Git | Files | ||
|---|---|---|---|
gst git status |
gc commit -v |
ls eza with icons |
cat bat |
gco checkout |
gcob checkout -b |
z <dir> zoxide jump |
y yazi |
gsw switch |
gswc switch -c |
lg lazygit |
ld lazydocker |
gb branch |
gbD branch -D |
ff fastfetch |
vim nvim |
Everything is interactive by default; every prompt has an env-var override.
| Variable | Values | Default |
|---|---|---|
DOT_SHELL |
zsh · fish |
zsh |
DOT_THEME |
default · tron · cyber · eva01 · minimal |
default |
DOT_ENABLE_K8S |
0 · 1 |
prompt |
DOT_NO_FASTFETCH |
1 disables the shell greeting |
unset |
DOT_NO_AUTOCD |
1 keeps shells in /mnt/* |
unset |
DOT_ENABLE_WSLCONFIG |
0 · 1 — write .wslconfig on the Windows host |
prompt |
DOT_WSL_NETWORKING |
nat · mirrored |
nat |
DOT_NONINTERACTIVE |
1 accepts every default |
unset |
DOT_VERBOSE |
1 traces every command |
unset |
DOTFILES_BRANCH |
branch to bootstrap from | main |
bootstrap.ps1 takes the same options as parameters:
-NonInteractive -Theme <name> -EnableK8s 0|1 -Branch <branch>.
After changing WSL networking, run wsl --shutdown from PowerShell and
reopen your terminal.
make install # re-run the full bootstrap
make test # run every checkpoint
make theme THEME=tron # switch prompt theme, no re-bootstrap
make fastfetch # reinstall/relink the greeting
make ai-scaffold TARGET=~/p # drop the AI standard into a repo| Path | Contents |
|---|---|
bootstrap.sh · bootstrap.ps1 |
Entry points (WSL · native Windows) |
install/ |
Bootstrap phases, one script per phase |
windows/ |
Native-Windows equivalents |
config/ |
Configs that get symlinked — zsh/, fastfetch/, starship/, git/, zellij/, alacritty/ |
shells/ |
Shell entry points (zshrc, fish config.fish + conf.d/) |
themes/ |
Starship + Windows Terminal themes |
nvim/ |
Neovim configuration |
ai/ |
AI Development Standard (agents, prompts, skills, context DB) |
tests/ |
One checkpoint script per phase |
docs/ |
Documentation |
MIT — see LICENSE.