Life is like a hurricane here in Shellville
Needed me a toolchain to wrangle this shell hell
A syncing mystery with versioned history
Dotfiles! (Woo-oo!)
This repo's my attempt to repro
Dotfiles! (Woo-oo!)
Configs, options, run commands, and
profiles! (Woo-oo!)
- zsh 5.9
- bash 3.2 (required for MacOS Sonoma)
- bash 4.0 (Fedora)
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply $GITHUB_USERNAMEPackage Manager: Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Plugin Manager, zsh: Antidote
brew install antidotePrompt: Starship
curl -sS https://starship.rs/install.sh | shShell History: Atuin
# if it isn't already installed via homebrew, as it is in Bazzite-DX...
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
atuin setupJSON Parser: jqlang/jq
brew install jqYAML Parser: mikefarah/yq
brew install yqEnvironment Management: direnv
Faster Text Search: ripgrep
Global, cross-project agent guidance lives in ~/.agents/AGENTS.md (chezmoi
source: dot_agents/AGENTS.md). This is a personal
convention — there is no cross-tool standard for a home/global instructions
location; the agents.md standard only covers
repository-root AGENTS.md. Each tool is wired to the canonical file:
- Factory Droid — reads
~/.agents/AGENTS.mdnatively (it checks~/.agents/as a personal instruction directory). - Claude Code —
~/.claude/CLAUDE.mdimports@~/.agents/AGENTS.md. - OpenCode —
~/.config/opencode/AGENTS.mdis a chezmoi-managed symlink to~/.agents/AGENTS.md. - Zed —
~/.config/zed/AGENTS.mdis a chezmoi-managed symlink to~/.agents/AGENTS.md. - Cursor / Bugbot / Obsidian — no global-file support; use per-repo
AGENTS.md/.cursor/BUGBOT.md.
Repo-root AGENTS.md is the only standardized, tool-portable surface, so
agents-sync injects the global rules into a repo's AGENTS.md as a managed
block (between <!-- BEGIN global agents --> / <!-- END global agents -->
markers), preserving repo-specific content:
agents-sync # inject/refresh into ./AGENTS.md
agents-sync /path/to/repo # inject into another repo
agents-sync --check # dry-run: exit 0 if in sync, 1 if stale/missing
agents-sync --remove # strip the managed blockRe-running agents-sync refreshes the block without duplicating it.
brew install font-fira-code-nerd-fontiTerm2 preferences are managed by chezmoi. Enable the iterm2 data flag
during chezmoi init to have the preferences plist applied to
~/Library/Preferences/com.googlecode.iterm2.plist.
Rectangle preferences are managed by chezmoi.
The preferences plist is applied to
~/Library/Preferences/com.knollsoft.Rectangle.plist on macOS.
A run_onchange_ script relaunches Rectangle after the plist changes so the
new settings take effect immediately.
During chezmoi init, chezmoi will probe the current bash found in PATH
and persist its major version as data.bashMajor (or 0 if bash is N/A).
Use this data field to help determine whether to deploy a dotfile that requires bash 4.0+ features (e.g. associative arrays) or to deploy one that is portable.