My personal dotfiles using chezmoi
- Lua 94.7%
- Shell 5.3%
| .github/workflows | ||
| dot_claude | ||
| dot_config | ||
| dot_local/private_bin | ||
| .gitignore | ||
| .gitleaks.toml | ||
| .pre-commit-hook | ||
| dot_gitconfig | ||
| dot_gitconfig-ndit | ||
| dot_zprofile | ||
| dot_zshenv | ||
| dot_zshrc.tmpl | ||
| README.md | ||
| SECURITY.md | ||
Dotfiles
Personal dotfiles managed with chezmoi.
🚀 Quick Start
Prerequisites
- chezmoi
- Proton Pass CLI (for secret management)
Setup
# Initialize chezmoi with this repository
chezmoi init https://github.com/wollax/dotfiles-chezmoi.git
# Fetch secrets from Proton Pass
chezmoi-secrets
# Preview changes
chezmoi diff
# Apply dotfiles
chezmoi apply -v
🔒 Security
This is a public repository. All secrets are managed securely:
- ✅ Secrets stored externally (Proton Pass)
- ✅ Pre-commit hooks prevent accidental commits
- ✅ GitHub Actions scan for leaked secrets
- ✅ Comprehensive .gitignore rules
- ✅ Template-based secret injection
See SECURITY.md for complete security documentation.
Quick Security Setup
# Install pre-commit hook to prevent secret commits
ln -s ../../.pre-commit-hook .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
📁 Repository Structure
.
├── dot_config/ # Application configurations
│ ├── gh/ # GitHub CLI
│ ├── zed/ # Zed editor
│ └── ...
├── dot_local/
│ └── private_bin/ # Custom scripts including chezmoi-secrets
├── dot_claude/ # Claude Code settings
├── dot_gitconfig # Git configuration
├── dot_zshrc.tmpl # Zsh configuration (templated for secrets)
├── .gitleaks.toml # Secret scanning configuration
└── .pre-commit-hook # Pre-commit security checks
🛠️ Customization
Adding New Dotfiles
# Add a file to chezmoi
chezmoi add ~/.myconfig
# Edit a managed file
chezmoi edit ~/.myconfig
# Apply changes
chezmoi apply -v
Using Secrets
Secrets are managed through the chezmoi-secrets script and Proton Pass:
- Add secret to Proton Pass
- Update
dot_local/private_bin/executable_chezmoi-secretsto fetch it - Reference in templates:
{{ .secrets.secret_name }}
Example in dot_zshrc.tmpl:
{{ if hasKey . "secrets" }}
export MY_SECRET={{ .secrets.my_secret }}
{{ end }}
🔄 Daily Workflow
# Update from repository
chezmoi update -v
# See what changed
chezmoi diff
# Edit and apply
chezmoi edit --apply ~/.zshrc
📝 Notes
- Files prefixed with
private_are naming convention only (not encrypted) .chezmoidata/contains secrets and is excluded from git- See
SECURITY.mdfor detailed security practices
📚 Resources
📄 License
Personal dotfiles - use at your own discretion.