Personal dotfiles for Ubuntu / WSL2 (apt). Zsh + oh-my-zsh, Neovim, Ghostty.
cd ~/dotfile
./install.sh
exec zshinstall.sh is idempotent — safe to re-run. It:
- installs apt packages —
install/packages.sh - installs Ghostty —
install/ghostty.sh - installs oh-my-zsh + plugins and sets zsh as the default shell —
install/zsh.sh - symlinks configs into
$HOME, backing up anything already there to~/.dotfiles-backup/—install/link.sh
dotfile/
├── install.sh entry point (runs the four below)
├── install/
│ ├── packages.sh apt packages — edit the list to taste
│ ├── ghostty.sh Ghostty via mkasberg/ghostty-ubuntu
│ ├── zsh.sh oh-my-zsh + plugins + default shell
│ └── link.sh symlink configs into $HOME
├── zsh/
│ ├── zshrc → ~/.zshrc (thin; sources the files below)
│ ├── zshenv → ~/.zshenv
│ ├── exports.zsh PATH + env
│ ├── aliases.zsh <- edit here for aliases
│ ├── functions.zsh <- edit here for functions (kpop, mkcd, extract…)
│ └── zshrc.local.example seeds ~/.zshrc.local
├── git/gitconfig → ~/.gitconfig
└── .config/ghostty/config → ~/.config/ghostty/config
| What | File |
|---|---|
| Aliases | zsh/aliases.zsh |
| Functions | zsh/functions.zsh |
| PATH / env vars | zsh/exports.zsh |
| Per-machine / secrets (CUDA paths, tokens) | ~/.zshrc.local (untracked) |
| Ghostty | .config/ghostty/config |
Machine-specific git (e.g. safe.directory) |
~/.gitconfig.local (untracked) |
- apt's
neovimcan lag the latest release; for newest, use the GitHub release tarball or the unstable PPA. - Ghostty is a GUI terminal; inside WSL2 it runs through WSLg.
- The old
~/.zshrchad CUDA / Corese paths — those moved to~/.zshrc.local(seeded fromzsh/zshrc.local.example) so the tracked config stays portable.
# dotfile