Cookbook
Cookbook: Troubleshooting
Symptom → cause → fix.
Installation
Symptom: install.sh fails with "chezmoi not found"
Cause: /usr/local/bin or ~/.local/bin not in PATH at install time.
Fix:
# Re-run only the installer that was release-pinned and SHA256-verified.
Symptom: "could not create directory ~/.local/share/chezmoi"
Cause: Permission issue on ~/.local.
Fix:
Symptom: Install hangs at "Downloading chezmoi"
Cause: Slow network or corporate proxy.
Fix:
# if applicable
# Or pre-download chezmoi manually
Apply / Sync
Symptom: dot apply reports "file modified, skipping"
Cause: Chezmoi detected local drift on a managed file.
Fix:
# OR
Symptom: "template: error calling index"
Cause: A template references a missing data field.
Fix: Check that your .chezmoidata.toml has the required field. For example:
If machine is not set in your ~/.config/chezmoi/chezmoi.toml, index returns nil. Set:
[data]
machine = "macbook-t2"
Symptom: Apply succeeds but shell doesn't reflect changes
Cause: Cached init scripts are stale.
Fix:
Theme
Symptom: dot theme shows no themes
Cause: No wallpapers discovered, themes.toml not generated.
Fix:
Symptom: dot theme <name> errors "unknown theme"
Cause: Theme name doesn't exist in themes.toml.
Fix:
Symptom: macOS accent color doesn't update
Cause: System Settings UI cached the old value.
Fix: dot-theme-sync now calls killall cfprefsd SystemUIServer Dock "System Settings". If it still doesn't refresh:
Or log out and back in.
Symptom: Wallpaper not applying
Cause: Wrong format or missing DE support on Linux.
Fix:
# Check the wallpaper file exists
# On Linux, verify HEIC → PNG conversion tool
|| ||
# Install if needed:
Symptom: Theme applies but Ghostty doesn't reload
Cause: Ghostty DBus or SIGUSR2 signaling failed.
Fix:
# Restart Ghostty manually, or:
# Or quit+relaunch the app
Secrets
Symptom: "could not decrypt: no age key"
Cause: ~/.config/age/keys.txt missing or unreadable.
Fix:
# Should be: -rw------- 1 user user
# If missing, restore from password manager or regenerate (requires re-encrypting all secrets)
Symptom: SOPS says "wrong recipient"
Cause: Your Age public key isn't listed in the file's recipients.
Fix:
# Add your public key to .sops.yaml
# Or, ask a recipient to re-encrypt for you
Symptom: Plaintext leak detected by gitleaks
Cause: A secret was committed to Git history.
Fix:
# Immediate mitigation
# Rotate the leaked secret upstream (it's now public)
# Rewrite Git history if needed (requires force-push):
Performance
Symptom: Shell startup >500ms
Cause: Heavy modules loaded synchronously.
Fix:
# Identify which module is slow
# Rebuild caches
# Disable heavy modules temporarily
# Edit ~/.config/zsh/.zshrc.local (or equivalent) to skip them
Symptom: dot doctor score <70
Cause: Multiple health issues.
Fix:
Symptom: Mise tools not found
Cause: Mise shim not activated.
Fix:
Build Artifacts
Symptom: Cargo builds to target/ instead of /tmp/builds/cargo
Cause: ~/.cargo/config.toml not managed or was overridden.
Fix:
|
# Should be: target-dir = "/tmp/builds/cargo"
Symptom: /tmp/builds/ doesn't exist
Cause: Created by shell init, but shell wasn't restarted.
Fix:
# Or restart shell
Fleet
Symptom: dot fleet attest hangs
Cause: A fleet host is unreachable.
Fix:
# Check connectivity to each host
for; do
||
done
# Remove unreachable hosts from ~/.config/dotfiles/fleet.toml temporarily
Symptom: Attestation signature fails
Cause: Remote host's SSH public key not in local ~/.ssh/allowed_signers.
Fix:
# On the remote host:
# Copy the output and append to your ~/.ssh/allowed_signers
CI
Symptom: PR fails on "Shell Lint (Zero Warnings)"
Cause: shfmt formatting differs from canonical.
Fix:
# Commit the changes
Symptom: PR fails on "100% Coverage"
Cause: New code added without tests.
Fix:
# Identifies uncovered modules
# Add a test in tests/unit/<domain>/test_<module>.sh
Symptom: Checkov SARIF upload times out
Cause: Known infrastructure flake (Azure runner slow apt mirrors).
Fix: The workflow already guards this with hashFiles('reports/checkov.sarif'). If you see this after the guard was added, check the Checkov step output for errors.
Getting More Help
- Check FAQ
- Read the relevant concept chapter
- Open an issue: https://github.com/sebastienrousseau/dotfiles/issues
When filing an issue, include: