Skip to content

Repository files navigation

dotfiles

Personal dotfiles managed with chezmoi.

What's managed

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)

Stack at a glance

  • 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

Install on a new machine (one command)

sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply nicolasleal570

That will:

  1. Install chezmoi if needed
  2. Clone this repo into ~/.local/share/chezmoi/
  3. 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
  4. Symlinks/copies all configs to the correct locations

Post-install

  1. Open a new terminal (or source ~/.zshrc)
  2. Inside tmux: press prefix + I (Ctrl-b then Shift-i) to install tmux plugins
  3. Open nvim — vim.pack will install all Neovim plugins on first launch

Daily workflow

# 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 push

Updating the Brewfile

After 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

Structure

.
├── 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 → permissions 0700 (for sensitive dirs)
  • run_once_X.sh.tmpl → runs once per machine on init/apply

Legacy

The previous Stow-based setup is preserved on the archive-stow-2024 branch.

About

My dotfiles synced form localhost and remote machines

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages