Skip to content

Repository files navigation

Dotfiles

Personal dotfiles managed with chezmoi for syncing configuration across machines.

What's Included

  • zshzinit-managed setup with the starship prompt, zsh-autosuggestions, zsh-completions, and fast-syntax-highlighting (auto-installed on first shell start). Includes safety aliases (rm -I, cp -i, mv -i), shortcuts, and nvm loader.
  • git — sane defaults (rebase on pull, autosquash, zdiff3 conflict style, histogram diffs, rerere), handy aliases (st, lg, wip, undo, …), and includes ~/.gitconfig.local for machine-specific overrides (e.g. user name/email).
  • neovim — Lua config bootstrapped with lazy.nvim and the tokyonight colorscheme (night variant, transparent background).
  • ghostty (macOS only) — Tokyonight theme, semi-transparent background with blur, block cursor, 100k scrollback, option-as-alt, and transparent titlebar.
  • opencodeopencode AI coding assistant config with LSP and formatter support, system theme TUI, and granular permission controls (read/search allowed, edit/bash require confirmation).
  • yabai (macOS only) — bsp tiling layout, 10pt gaps/padding, fn as the mouse modifier.
  • skhd (macOS only) — hotkeys for iTerm, window float/zoom toggles, and space focus/move bindings (cmd+alt+<n>, shift+cmd+<n>).

The macOS-only configs (ghostty, yabai, skhd) are skipped automatically on other platforms via .chezmoiignore.

Requirements

Install the following before applying the dotfiles:

git
zsh
neovim

# optional
opencode

# optional, macOS only
ghostty
yabai
skhd

Make sure zsh is the default shell:

sudo chsh -s $(which zsh) $USER

Setup

Install chezmoi (see the docs for more options):

# macOS
brew install chezmoi

# Linux (or any platform with curl) — installs to ./bin
sh -c "$(curl -fsLS get.chezmoi.io)"

# move the binary to a directory on $PATH
sudo mv ./bin/chezmoi /usr/local/bin/

Initialize and apply directly:

chezmoi init --ssh --apply $GITHUB_USERNAME

Or, on a new machine without chezmoi installed, bootstrap everything in one step (downloads the binary, then initializes and applies):

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

Local Overrides

Two untracked files in $HOME hold machine-specific or sensitive values. Example templates are included in this repo:

  • ~/.gitconfig.local — git identity and any per-machine git overrides. Included from ~/.gitconfig via the [include] directive. See dot_gitconfig.local.example.
  • ~/.secretsKEY=value lines auto-exported as environment variables by ~/.zshrc (e.g. GITHUB_TOKEN, API keys). See dot_secrets.example.

Copy each example into $HOME and fill in your values:

cp ~/.local/share/chezmoi/dot_gitconfig.local.example ~/.gitconfig.local
cp ~/.local/share/chezmoi/dot_secrets.example ~/.secrets
chmod 600 ~/.secrets

Common Workflows

Edit a managed file and apply the change locally:

chezmoi edit ~/.zshrc
chezmoi diff           # preview pending changes
chezmoi apply

Commit and push edits back to the remote repo:

chezmoi cd             # jumps into the source repo
git add .
git commit -m "update zsh config"
git push
exit                   # leave the chezmoi shell

Pull the latest changes from remote and apply them:

chezmoi update

About

Personal dotfiles managed with chezmoi

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages