Appearance
Local Overrides
Machine-local shell quirks live under:
text
~/.config/dotfiles/local.d/The directory is ignored by chezmoi. Create files on the target machine, not in this source repo.
Files
Use shell-specific files and keep names ordered by load phase:
text
10-env.sh
10-env.fish
10-env.ps1
20-aliases.sh
20-aliases.fish
20-aliases.ps1Interactive shells source all matching files for their shell in lexical order, after the managed profile has finished. That makes local values the final override without adding host-specific branches to the shared templates.
Noninteractive startup only sources files explicitly marked safe:
bash
# dotfiles: noninteractive-safe
export LOCAL_TOOL_CACHE="$HOME/.cache/local-tool"fish
# dotfiles: noninteractive-safe
set -gx LOCAL_TOOL_CACHE "$HOME/.cache/local-tool"powershell
# dotfiles: noninteractive-safe
$env:LOCAL_TOOL_CACHE = Join-Path $HOME ".cache\local-tool"Leave alias/function files unmarked unless they are genuinely safe in scripts. The marker is intentionally comment-based so the same rule works for Bash, Fish, and PowerShell.
Boundaries
Use local overrides for machine-specific editor paths, temporary PATH additions, or personal aliases that should not become shared workstation policy.
Do not use local overrides as a project environment system. Project variables belong in direnv-managed .envrc and untracked .env.local files. Plaintext tokens should stay in an appropriate secret store or local-only env file with tight permissions rather than being copied into reusable examples.