Skip to content

Configuration map

Find a setting below, edit its repository source, then preview and apply. For example:

Locate and preview Neovim configuration
chezmoi source-path ~/.config/nvim/init.lua
chezmoi diff ~/.config/nvim/init.lua

The first command identifies ownership; the second shows pending changes without applying them.

Read this map before editing a live file

home source

chezmoi

managed files

installers

links and generated config

app or shell

private runtime state

Wide diagrams scroll horizontally. Focus the figure to use arrow keys.

After applying, reload the app or open a new shell. Private runtime state—tokens, caches, databases, and sessions—stays separate from managed settings.

FamilyAuthoritative sourcesRendered or installer targetSeparate state and handbook
Chezmoi identity/datatemplates, data$HOME/.config/chezmoi and rendered templatesMachine data controls templates; inspect with chezmoi data.
Shellszprofile, bash profile, zshrc, bashrc, profile, inputrc, Fish.config/fish/conf.d, .zprofile, .bash_profile, .zshrc, .bashrc, .profile, .inputrcEnvironment/history/plugins; guide.
TerminalsGhostty, tmux, iTermGhostty config, .tmux.conf, iTerm preferencesSSH terminfo, tmux server, clipboard access.
Search/directoriesripgrep, Git ignoreripgrep and Git config dirsProject-local ignore files remain effective.
Git & SSHgitconfig, SSH config.gitconfig, .ssh/configKeys, known hosts, private config.d, server policy.
Neoviminit.lua.config/nvim/init.lualazy.nvim, Mason packages, LSP, Treesitter.
VS Code & CursorVS Code settings, Cursor settings, Cursor harnessconfig dirs, native User links, .cursor/Extensions, Remote-SSH, GUI reload, MCP JSON, CLI merge, My Machines worker. See Cursor.
AgentsCodex, Claude, Cursor, OpenCode, Pi.codex, .claude, .cursor, OpenCode, Pi dirsPlugin caches, MCP processes, auth; guides.
Local helpersbin helpers.local/binProcess/browser/desktop permission and task/archive state; durable work.
Desktop/launchdAeroSpace, LaunchAgents.aerospace.toml, Library/LaunchAgentsLoaded jobs and running applications.
Lifecycle hooksrun_onchange sourcesExecuted by chezmoi during applyInstaller results and generated state have their own boundaries.

dot_ becomes a leading dot; .tmpl renders using machine data. create_ files are write-once inputs: their reconciler preserves runtime-owned sections.

The managed SSH config reads ~/.ssh/config.d/* before its Host * defaults. Keep destination trust decisions in an uncommitted file rather than changing the shared template. For example, allow only buildbox to use the local agent:

Create a private forwarding policy
mkdir -p ~/.ssh/config.d
chmod 700 ~/.ssh ~/.ssh/config.d
${EDITOR:-vi} ~/.ssh/config.d/forwarding
chmod 600 ~/.ssh/config.d/forwarding

Put this in ~/.ssh/config.d/forwarding:

# Trusted destinations.
Host buildbox
ForwardAgent yes
# Disable forwarding for every other destination.
Host *
ForwardAgent no

OpenSSH uses the first obtained value for an option, so the named host’s yes and the private catch-all no take effect before the template’s current global ForwardAgent yes. If $HOME is shared over NFS, this file is shared too, so the policy applies on every machine using that home. Different machine policies require a genuinely host-local overlay/include or host-selected rules such as Match exec; this configuration does not create that isolation automatically. Any matching ForwardAgent setting from an earlier config.d file can also win, so check the effective value after changing includes. Agent forwarding lets a remote host use your local agent while the connection is open; enable it only for hosts you trust. See the OpenSSH ssh_config reference.

Check the resolved value without connecting:

Verify the host policy
ssh -G buildbox | grep '^forwardagent '
ssh -G an-untrusted-host | grep '^forwardagent '

The expected output is forwardagent yes for buildbox and forwardagent no for other hosts. ssh -G reports client configuration only; it does not test network reachability, authentication, or the remote server.

GoalRead-only evidenceEstablishes
Find target sourcechezmoi source-path $HOME/.config/nvim/init.luaChezmoi ownership and source path.
Preview a changechezmoi diffRender delta; no target changed.
Check template valueschezmoi dataCurrent chezmoi data.
Inspect native editor linkls -l native User settings targetLink destination, not editor reload/extensions.
Inspect SSH optionsssh -G hostClient resolution, not connection/authentication.
Inspect Git origingit config —global —show-origin —get core.editorSelected config file and value.

After a change, check its consumer: Neovim :checkhealth, an editor’s extension list, or a fresh login shell.

Package manifests own installable tools and editor extensions; home owns settings and executable helper sources; installers own platform-native links and generated runtime configuration. The feature map inventories installers/helpers. Agent inventories explain skills, plugins, and MCP ownership without duplicating every declaration here.

Do not commit private SSH host blocks, credential env files, application databases, browser profiles, plugin caches, or editor remote-server state. For template semantics, use chezmoi machine differences and source-state attributes.