Personal dotfiles for Fish shell, Neovim, and assorted CLI tools.
The repo lives directly at $HOME. The root .gitignore ignores everything (/*) and
whitelists only tracked paths, turning the home directory into a sparse git repo.
Run from your home directory:
cd ~
git init
git remote add origin https://github.com/ipwnponies/dotfiles.git
git fetch origin
git switch --create main origin/main| Path | Purpose |
|---|---|
bin/ |
Host-agnostic CLI helpers (git-deploy, git-clean-remote, pomodoro, …) |
.config/fish/ |
Fish shell configuration |
.config/nvim/ |
Neovim configuration (Lua, lazy.nvim) |
.config/devbox/ |
Devbox package manifest for dev tools |
.config/aqua/ |
Aqua package manager manifest |
.config/npm/ |
npm global package manifest |
.config/venv-update/ |
Poetry project for Python CLI tools |
conf.d/ files load in alphanumeric order. Numeric prefixes control priority:
05-*— XDG paths, SSH agent, base environment10-*— Devbox integration15-*— AI tooling (opencode)20-*— Language toolchains (cargo, go, npm, Python/pyenv)- Unprefixed — Individual tool integrations (zoxide, fzf, direnv, …)
z-wait.fish— Runs last; waits for background jobs started above
Each file follows a main / install pattern:
installruns on login shells to sync packages in the backgroundmainruns on interactive shells to configure the environment
| Ecosystem | File |
|---|---|
| CLI tools | .config/devbox/devbox.json — run devbox global install |
| Python tools | .config/venv-update/pyproject.toml — runs via poetry sync on login |
| Node tools | .config/npm/package.json — runs via npm ci on login |
| Aqua tools | .config/aqua/aqua.yaml |