dotfiles tracked using Tuckr. Makes my terminal look kewl.
CLI prerequisites are managed with Homebrew via the committed Brewfile - source of truth for the tool list:
make cli-toolsmake cli-tools locates brew across the standard prefixes (/opt/homebrew, /usr/local, /home/linuxbrew/.linuxbrew) and runs brew bundle install. It is idempotent - safe to re-run on existing machines, anything already installed is skipped.
Linux: Homebrew's installer requires a
sudopassword withbuild-essential,curlandgitpreinstalled. Not supported on Alpine/musl.
Clone the repo
cd ~/.dotfiles
make bootstrapmake bootstrap installs the CLI prerequisites via Homebrew (make cli-tools) and then deploys all symlinks (make deploy). Both steps are idempotent - safe to re-run. Plugins are not installed - see below.
Tuckr profiles keep private dotfiles repo (dotfiles_work) alongside this one on the work machine. This repo is the default profile; the work profile lives at ~/.dotfiles_work and deploys with the work flag.
On the work machine, both profiles must be deployed together: make deploy + make deploy-work.
tuckr ls profiles # lists: work (when ~/.dotfiles_work exists)
make deploy # deploy default profile (this repo)
make deploy-work # deploy work profile (~/.dotfiles_work)
make restow-work # redeploy work profile
tuckr -p work status # inspect work profile symlinksRules that keep both profiles conflict-free:
- The work repo may only contain paths this repo does not own (e.g. it owns
~/.config/git/config-work, NOT~/.config/git/config). Two profiles never merge file contents. - Shared behavior stays single-sourced here on
main; the work repo holds work-only deltas. - Per-machine tweaks belong in
~/.config/fish/config.local.fish(untracked, sourced byconfig.fish).
Layout: Configs/<group>/.config/<app>/ for XDG apps, Configs/<group>/ for home-directory files (.bashrc, .profile).
- Place file in the matching group using
mv - Run
make deployto symlink - Commit
Git is configured to use delta as its pager. It is installed via the Brewfile (make cli-tools); the brew binary wins on PATH.
A global ignore for OS/editor cruft ships at Configs/git/.config/git/ignore. make deploy symlinks it to ~/.config/git/ignore, which Git reads automatically (XDG default).
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
fisher update # installs plugins from tracked fish_pluginsPlugins tracked in fish_plugins: fzf.fish, nvm.fish
# Edit and add your own API keys / tokens - for agentic code
$EDITOR ~/.config/fish/config.local.fishOpen tmux, press prefix + I to install plugins via tpm. To resync:
cd ~/.dotfiles
make restowNote: tmux launches fish from PATH (no hardcoded shell path), so fish must be on PATH before starting tmux.