My dotfiles: zsh, kitty, vim, ssh + bootstrap for Arch / Debian 13
- Shell 100%
- zsh: replace antigen with antidote (plugins in ~/.zsh_plugins.txt); keep oh-my-zsh lib + git plugin, zsh-completions and syntax-highlighting; drop heroku, lein, pip and command-not-found; enable fzf key bindings - bootstrap: install fzf, btop, ripgrep and fd (fdfind -> fd on Debian), install antidote to ~/.local/share/antidote, write the git identity from the hostname and email - remove lazygit config Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| bash | ||
| fonts/.fonts | ||
| kitty/.config/kitty | ||
| ssh/.ssh | ||
| zsh | ||
| bootstrap.sh | ||
| install.sh | ||
| README.md | ||
dotfiles
New machine (Arch or Debian 13)
# Debian: sudo apt install git Arch: sudo pacman -S git
git clone https://forgejo.vratk0529.com/vratk0529/dotfiles.git ~/dotfiles
~/dotfiles/bootstrap.sh
bootstrap.sh then:
- installs kitty, vim, zsh, git, curl, keychain, uv, fzf, btop, ripgrep and fd
- links the dotfiles (
install.sh) - installs antidote to
~/.local/share/antidote - writes the git identity: the machine's hostname as name, plus my email
- makes zsh the login shell
- sets key repeat to 250 ms / 50 per second (Plasma, GNOME, or plain X11)
- creates
~/.ssh/id_ed25519if there's no SSH key yet - installs the skmod keyboard layout
to
~/.local/src/custom-keyboard-layout, pausing for you to add the new key to Forgejo if needed, then switches this repo's remote to SSH - prints the public key
Re-running it is safe. Log out and back in afterwards.
zsh plugins are listed in zsh/.zsh_plugins.txt; antidote fetches them on
the first shell start.
Python: use uv instead of pyenv,
e.g. uv python install 3.12, uv venv, uv tool install ruff.
Linking only
~/dotfiles/install.sh # link everything
~/dotfiles/install.sh zsh kitty # or only some packages
Each top-level directory is a package that mirrors $HOME:
| Package | Links |
|---|---|
bash |
~/.bashrc |
zsh |
~/.zshrc, ~/.zsh_plugins.txt |
kitty |
~/.config/kitty/kitty.conf |
fonts |
~/.fonts/*.ttf |
ssh |
~/.ssh/config |
install.sh symlinks individual files (not directories), so apps that write
state next to their config don't dirty the repo. Anything it would replace is
moved to ~/.dotfiles-backup/<timestamp>/. Re-running it is safe.
To add a file, move it into a package at the same path relative to $HOME
and re-run the script, e.g.:
mkdir -p ~/dotfiles/vim
mv ~/.vimrc ~/dotfiles/vim/
~/dotfiles/install.sh vim
The layout is also compatible with GNU Stow (cd ~/dotfiles && stow zsh).