Personal dotfiles managed with chezmoi.
| Config | Path |
|---|---|
| Zsh shell | ~/.zshrc, ~/.zsh/ (catppuccin syntax highlighting + completions) |
| Tmux | ~/.tmux.conf |
| Ghostty terminal | ~/.config/ghostty/config + custom shaders |
| Atuin (shell history) | ~/.config/atuin/config.toml |
| Homebrew packages | Brewfile |
| Neovim | Separate repo: nicolasleal570/personal-nvim-config (auto-cloned by bootstrap) |
- Shell: zsh + oh-my-zsh, with zsh-autosuggestions, zsh-syntax-highlighting, atuin (history), zoxide (smart cd), fzf
- Terminal: Ghostty with Catppuccin Mocha theme + JetBrains Mono Nerd Font
- Multiplexer: tmux with TPM, vim-tmux-navigator, catppuccin theme, tmux-sessionx
- Editor: Neovim (kickstart-based, vim.pack plugin manager) with TypeScript LSP, blink.cmp, treesitter, oil.nvim, render-markdown, zen-mode
- CLI tools: bat, eza, fd, ripgrep, lazygit, gh, fzf, zoxide, atuin
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply nicolasleal570That will:
- Install chezmoi if needed
- Clone this repo into
~/.local/share/chezmoi/ - Run the bootstrap script (
run_once_before_install-packages.sh) which:- Installs Homebrew
- Runs
brew bundle(installs all packages) - Installs Oh My Zsh
- Installs Tmux Plugin Manager (TPM)
- Clones the Neovim config repo
- Installs JetBrains Mono Nerd Font
- Imports zsh history into atuin
- Symlinks/copies all configs to the correct locations
- Open a new terminal (or
source ~/.zshrc) - Inside tmux: press
prefix + I(Ctrl-b then Shift-i) to install tmux plugins - Open
nvim— vim.pack will install all Neovim plugins on first launch
# Edit a managed file (opens in $EDITOR, applies on save)
chezmoi edit ~/.zshrc
# See what would change before applying
chezmoi diff
# Apply pending changes
chezmoi apply
# Pull latest from git + apply
chezmoi update
# Add a new file to be managed
chezmoi add ~/.config/some-new-tool/config
# Go to the source repo to commit/push
chezmoi cd
git add . && git commit -m "..." && git pushAfter installing or removing brew packages:
brew bundle dump --file=~/.local/share/chezmoi/Brewfile --force
chezmoi cd
git add Brewfile && git commit -m "chore: update Brewfile" && git push.
├── README.md
├── Brewfile # all brew formulas/casks/taps
├── run_once_before_install-packages.sh.tmpl # bootstrap (runs once per machine)
├── dot_zshrc # → ~/.zshrc
├── dot_tmux.conf # → ~/.tmux.conf
├── dot_zsh/ # → ~/.zsh/
└── dot_config/
├── ghostty/ # → ~/.config/ghostty/
└── private_atuin/ # → ~/.config/atuin/ (perms 700)
Chezmoi naming conventions:
dot_X→.X(avoids hidden files in the repo)private_X→ permissions0700(for sensitive dirs)run_once_X.sh.tmpl→ runs once per machine on init/apply
The previous Stow-based setup is preserved on the archive-stow-2024 branch.