Skip to content
trevorbernardPublic

About

Various dot files

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

Dotfiles

My various configuration files managed with GNU Stow.

Usage

Most packages are installed by stowing into $HOME (their internal structure already includes the leading dot, e.g. tmux/.tmux.conf):

stow -t $HOME <directory>

For example, to install tmux configuration:

stow -t $HOME tmux

Packages whose files live outside $HOME (under ~~/.config~, ~~/bin~, ~~/.claude~) use a different stow target — see the per-section notes below.

To install everything at once:

for pkg in git lein tmux zsh; do stow -t $HOME $pkg; done
stow -t $HOME/bin bin
stow -t $HOME/.claude claude
stow -t $HOME/.config ghostty ghostty-linux podman starship  # or ghostty-macos
stow -t $HOME/.config/hunk hunk
stow -t $HOME/.config/tuicr tuicr

Tests

Scripts under tests/ are plain bash and run standalone. They build throwaway git repositories under a temp directory, so they never touch this one:

./tests/test-better-branch
./tests/test-eat-trailing-whitespace

Or all of them, stopping at the first failure:

for t in tests/test-*; do "$t" || break; done

tests/ is deliberately not a stow package — bin/ is stowed onto PATH, so test scripts must live outside it.

Configurations

bin

Personal shell scripts (better-branch, eat-trailing-whitespace, osc52-copy). Stowed directly to $HOME/bin:

stow -t $HOME/bin bin

Both the macOS and linux branches of the zsh config add $HOME/bin to PATH.

Claude

Claude Code settings (CLAUDE.md and settings.json). Stowed to $HOME/.claude:

stow -t $HOME/.claude claude

Only settings.json is tracked. Claude Code writes machine-local state into settings.local.json — permission grants and the absolute paths they refer to — so that file is gitignored and deliberately left unstowed, keeping it out of this repo.

Ghostty

Configuration for the Ghostty terminal emulator. Shared settings live in the ghostty package; the platform-specific overrides live in ghostty-linux and ghostty-macos, which are separate packages so that only the one matching this machine is ever linked:

stow -t $HOME/.config ghostty ghostty-linux   # or ghostty-macos

Each package holds a ghostty/ subdirectory, the same shape as podman, so the files land in $HOME/.config/ghostty/. Stow folds that directory into a symlink if only one package claims it and unfolds it again when the second arrives, so stowing the two in either order or separately all work.

They are separate packages rather than three files in one on purpose. Stow links every file in a package, so holding config_macos next to config_linux put both on every machine, and since config pulls them in last, the macOS padding quietly won on Linux.

Git

Git configuration and aliases.

Machine-specific email

The git config uses an include directive to load machine-specific settings from ~~/.gitconfig.local~. After stowing, set up your email:

cp ~/.gitconfig.local.example ~/.gitconfig.local
# Edit ~/.gitconfig.local to set your email

Hunk

Configuration for the Hunk terminal diff viewer (config.toml). Stowed to $HOME/.config/hunk rather than $HOME/.config so the directory itself stays real — Hunk writes runtime state (state.json) alongside the config, and that shouldn’t end up in this repo:

stow -t $HOME/.config/hunk hunk

The target directory must exist first (run hunk once or mkdir -p ~/.config/hunk).

Lein

Leiningen configuration for Clojure development with CIDER integration and useful aliases.

Podman

Container registry policy. Stowed to $HOME/.config (creates $HOME/.config/containers/policy.json):

stow -t $HOME/.config podman

Starship

Starship prompt configuration. Stowed to $HOME/.config (creates $HOME/.config/starship.toml):

stow -t $HOME/.config starship

TMUX

Mac specific configuration

The following packages should be installed to get optimal TMUX experience on MacOS.

brew install reattach-to-user-namespace
brew install pam-reattach

Tuicr

Configuration for the tuicr code review TUI (config.toml). Stowed to $HOME/.config/tuicr so the directory itself stays real:

mkdir -p ~/.config/tuicr
stow -t $HOME/.config/tuicr tuicr

ZSH

Configuration for ZSH shell with Starship prompt.

About

Various dot files

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages