This is my personal dotfiles in its current (most likely not final) form. It's
a git bare repo with $HOME as the work tree, plus two small scripts that keep
each machine in sync and provisioned.
- Fish shell & Fisher. Comes with git aliases, fzf for easy search and z for jumping around directories.
- Starship prompt, with a counter for LLM conversations in the current directory
- tmux with resurrect and continuum
- AeroSpace tiling, television pickers, Zed settings and snippets
- git config, and a tiny font with the LLM logos the prompt uses
- Claude Code skills in
~/.claude/skills(company-governance,grill-me): reusable prompts plus the scripts they need - Bare repo with no symlinks for dotfiles π
The repo is cloned as a git --bare repository with $HOME as its work tree,
so the files live where their programs expect them and nothing is symlinked.
See this guide for more details.
git clone --bare https://github.com/rix1/dotfiles ~/.dotfiles
alias conf='git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
conf config status.showUntrackedFiles no
conf checkout mbp # or imac; for a new machine: conf checkout -b <name> main
~/.local/bin/dotfiles-sync # from then on: conf syncdotfiles-sync rebases the machine branch onto main and then runs
dotfiles-setup, which installs fish plugins, tmux plugins and fonts, and
reports any CLI tools that are missing. Both are idempotent, so run
conf sync whenever.
If you are using PGP and have your GPG key stored on Keybase, check out this guide: https://blog.scottlowe.org/2017/09/06/using-keybase-gpg-macos/
Sidenote to self: I really recommend authenticating with Github using their CLI (gh), this is a lot easier than generating and setting SSH keys.
Every machine has its own branch (mbp, imac) that is main plus a few
machine-specific commits. Shared changes go on main, machine-specific ones on
the machine branch, and conf sync puts the machine branch back on top of
main. The full workflow, including how to commit to main without checking
it out in $HOME, is in .config/AGENTS.md. What the
individual tools do and how to rebuild them is in
.config/README.md.
$HOME
βββ .claude/skills/ # Claude Code skills (SKILL.md + scripts); the rest of .claude is ignored
βββ .config/ # Most config should go here
β βββ AGENTS.md # How the repo works: branches, conf, what to commit where
β βββ README.md # What the tools do
β βββ fish
β βββ fonts
β βββ starship.toml
β βββ television
β βββ tmux
β βββ zed
βββ .dotfiles/ # Bare repo - you shouldn't change anything here
βββ .gitconfig
βββ .github # Dotfiles README (the one you're currently reading)
β βββ README.md
βββ .local/bin/ # dotfiles-sync and dotfiles-setup
~/.config/fonts/ holds LLM Logos, a tiny font with the Claude and OpenAI
glyphs the Starship prompt uses. conf setup installs it into
~/Library/Fonts; see .config/README.md for how it is built.
The terminal font is not in the repo. Starship and the fish plugins use Nerd Font glyphs, so pick a patched font such as FiraCode Nerd Font.
-
Is something wrong with the fonts? Try
echo \ue0b0 \u00b1 \ue0a0 \u27a6 \u2718 \u26a1 \u2699. Every character should render as a distinct glyph, not a box. -
The setup script should change shell for you, but in case it doesn't here's how you do it:
chsh -s $(which fish). You might have to add/opt/homebrew/bin/fishto/etc/shellsfor this to work:sudo echo /opt/homebrew/bin/fish >> /etc/shells. -
For Celery (GDAL really) to work make sure
DYLD_LIBRARY_PATHis set:~/Desktop via v19.3.0 on βοΈ (eu-central-1) β― echo $DYLD_LIBRARY_PATH /opt/homebrew/lib/
