Managed with chezmoi as a macOS-only dotfiles repo.
| App | How |
|---|---|
| Ghostty | Homebrew cask (macOS) |
| fish | Homebrew |
| Maple Mono NF | Homebrew cask (macOS) |
Fish plugins via Fisher:
| Plugin | Purpose |
|---|---|
| Tide v6 | Prompt |
| autopair.fish | Auto-close brackets and quotes |
| pond | Named environment management |
| fzf.fish | Fuzzy-find history, files, processes |
Managed by mise (installed via Homebrew):
| Tool | Version |
|---|---|
| Erlang | latest |
| Elixir | latest |
| Node | latest |
| Rust | latest |
| Go | latest |
| Herdr | latest |
| Oh My Pi | latest |
| App | How |
|---|---|
| Obsidian | Homebrew cask (macOS) |
| Tool | What's configured |
|---|---|
| Git | Global identity (name + email via chezmoi template), sensible defaults |
| gh | SSH protocol enforced (prevents gh from silently rewriting remotes to HTTPS) |
| chezmoi | Installed via Homebrew so it self-updates with brew upgrade |
All apps share a coordinated Everforest palette that automatically switches between dark and light when macOS appearance changes — no manual toggle needed.
| App | Dark variant | Light variant |
|---|---|---|
| Ghostty | Everforest Dark Hard | Everforest Light Medium |
| Fish syntax | everforest-medium dark | everforest-medium light |
| Tide prompt | Full Everforest Dark Medium palette | Full Everforest Light Medium palette |
| Oh My Pi | everforest-dark | everforest-light |
-
Run the bootstrap command:
sh -c "$(curl -fsLS get.chezmoi.io)" -- -b /tmp init --apply gh:jcartergh:jcarteris a chezmoi shorthand forhttps://github.com/jcarter/dotfiles. The bootstrap binary is installed to/tmpand is cleaned up automatically; Homebrew owns the permanent chezmoi installation.You will be prompted for your name and email, then chezmoi will:
- Install Homebrew
- Install fish, mise, and ghostty via Homebrew
- Install erlang, elixir, node, rust, and go via mise
- Configure git and fish
- Set fish as your default shell (you will be prompted for your password)
After pulling changes to the dotfiles repo:
chezmoi update # pull remote changes and apply~/.omp/agent/config.yml is rendered from dot_omp/private_agent/config.yml.tmpl. omp-sync-settings is a small bash helper that reads configured 1Password refs with op read, then replaces matching rendered values in the live OMP config with {{ onepasswordRead "$ref" | quote }} template expressions before writing the source template.
After changing settings through OMP, sync the live non-secret changes back into the template with the helper, then review the rendered result:
omp-sync-settings
chezmoi diff ~/.omp/agent/config.ymlIf the diff looks right, apply and commit as normal. If the live changes are not wanted, run chezmoi apply ~/.omp/agent/config.yml instead to restore the rendered version from chezmoi.
Do not run chezmoi add ~/.omp/agent/config.yml for this file. A raw add can copy rendered protected values back into the source and remove the template protection.
To protect another OMP value, add another semantic key -> 1Password ref entry to the helper mapping, such as hindsightApiUrl -> op://Private/Hindsight API/url. Then let OMP write the live value, run omp-sync-settings, and review chezmoi diff ~/.omp/agent/config.yml before committing.
To upgrade chezmoi itself:
brew upgrade chezmoi # or: chezmoi upgradechezmoi add ~/.some_config # plain file
chezmoi add --template ~/.some_config # file with template variablesRun these checks locally on macOS before applying broad changes:
# Diagnose chezmoi configuration and environment issues.
chezmoi doctor
# Confirm template data is available for the current Mac.
chezmoi data
# Preview changes that would be applied to this Mac.
chezmoi diff
# Render sensitive or templated files without writing them.
chezmoi cat ~/.gitconfig
chezmoi cat ~/.omp/agent/config.ymlFor a full setup smoke test on the current Mac, review chezmoi diff first, then run chezmoi apply -v.