Chezmoi Dotfiles Management
This skill helps manage dotfiles using chezmoi in this repository.
Repository Location
All dotfiles are managed in ~/.local/share/chezmoi which is a git repository synced to GitHub at https://github.com/craigtkhill/dotfiles.git.
Critical Workflow
When creating or modifying dotfiles, you MUST follow this exact order:
- •
Navigate to chezmoi source directory
bashcd ~/.local/share/chezmoi
- •
Create or edit files using chezmoi naming conventions
- •Use
dot_prefix for dotfiles (e.g.,dot_gitconfig→~/.gitconfig) - •Preserve directory structure (e.g.,
dot_config/fish/functions/→~/.config/fish/functions/) - •You can edit directly in
~/.local/share/chezmoior usechezmoi edit <target-path>
- •Use
- •
Apply changes to home directory
bashchezmoi apply # or for specific file: chezmoi apply ~/.config/fish/functions/myfile.fish
- •
Commit and push to GitHub
bashcd ~/.local/share/chezmoi git add . git commit -m "your message" git push origin main
- •
Verify it's managed
bashchezmoi managed | grep myfile
Common Commands
- •
chezmoi status- Show what has changed - •
chezmoi diff- Show detailed differences - •
chezmoi managed- List all managed files - •
chezmoi apply- Apply changes from dotfiles to home directory - •
chezmoi apply --force- Force apply, overriding conflicts - •
chezmoi add <file>- Add a file to chezmoi tracking - •
chezmoi re-add <file>- Re-add a tracked file
Fish Shell Specifics
Fish automatically loads functions from ~/.config/fish/functions/. Each function must be in its own file named functionname.fish.
After adding new fish functions:
- •Copy to
~/.config/fish/functions/ - •Functions are immediately available (fish auto-loads them)
- •No need to source or reload
Adding Existing Files to Chezmoi
If you want to add an existing file from your home directory to chezmoi:
chezmoi add ~/.config/fish/functions/myfile.fish
This will copy the file to ~/.local/share/chezmoi with proper naming and make it managed.
Common Mistakes
❌ DON'T: Edit files directly in ~/.config/fish/ without updating chezmoi
- •Changes will be lost when chezmoi applies source files
❌ DON'T: Forget to commit and push changes to GitHub
- •Your dotfiles won't be backed up or available on other machines
✅ DO: Edit in ~/.local/share/chezmoi → Apply → Commit → Push