Personal dotfiles for a fast, XDG-clean, and good-looking terminal environment. Managed with chezmoi.
| Path | What |
|---|---|
~/.zshenv |
Bootstrap: sets ZDOTDIR to ~/.config/zsh, then sources the config below |
~/.config/zsh/.zshenv |
XDG base dirs, EDITOR/VISUAL, per-shell env |
~/.config/zsh/.zprofile |
Homebrew shell env (login shells) |
~/.config/zsh/.zshrc |
Interactive shell: history, completion, plugins, aliases |
~/.config/wezterm/wezterm.lua |
WezTerm: runtime theme switcher + auto light/dark |
~/.config/starship.toml |
Starship prompt |
ZSH lives under ~/.config/zsh via ZDOTDIR, keeping $HOME clean — the only
zsh file left in $HOME is ~/.zshenv, a tiny bootstrap that redirects there.
No plugin manager — plugins are installed with Homebrew and sourced directly.
- Starship — prompt
- zoxide — smarter
cd - fzf + fd — fuzzy finder
- fzf-tab — fuzzy completion menu
- eza —
lsreplacement - bat —
cat/pager with syntax highlighting - vivid —
LS_COLORSgenerator - zsh-autosuggestions, zsh-syntax-highlighting, zsh-history-substring-search
- WezTerm — GPU-accelerated terminal
Colors follow the macOS light/dark system appearance automatically:
- WezTerm — a "minimal" theme family auto-switches with the OS;
CTRL+SHIFT+Topens a fuzzy theme picker. LS_COLORS(eza + completion) — dark →catppuccin-mocha, light →gruvbox-light-hard.- Claude Code —
COLORFGBGis set from the system appearance so itsautotheme tracks the OS instead of getting stuck on light.
One command, from a clean macOS install:
sh -c "$(curl -fsLS https://dotfiles.orlovsky.dev)"install.sh is idempotent and takes the machine end to end:
- Xcode Command Line Tools → Homebrew (installs each only if missing).
- chezmoi + age + 1Password CLI/app — the tools needed before the first apply.
- Pauses until you sign in to 1Password (enable Settings → Developer →
Integrate with 1Password CLI, then unlock). This is the one unavoidable
manual step — it backs both the age key and
secrets.zsh. chezmoi init --apply sadorlovsky, which then:- fetches the age key from 1Password (
chezmoi-age-key, Private vault) via arun_beforescript — needed to decrypt~/.ssh/config; - installs every Homebrew package + font (
run_onchange→brew bundle); - clones
fzf-tab(.chezmoiexternal.toml); - points
ZDOTDIRat~/.config/zshvia the managed~/.zshenv.
- fetches the age key from 1Password (
Re-running the one-liner (or chezmoi apply) is safe — every step skips work
already done.
brew install chezmoi age 1password-cli # + install the 1Password app and sign in
chezmoi init --apply sadorlovsky # age key is fetched from 1Password automaticallyIf the age key can't be fetched (no 1Password), place it manually first:
op document get chezmoi-age-key --vault Private > ~/.config/chezmoi/key.txt
chmod 600 ~/.config/chezmoi/key.txtinstall.sh— the bootstrap above (repo root, outside chezmoi's source).run_before_00-fetch-age-key.sh.tmpl— provisions the age key from 1Password before any encrypted file is read (no-ops once the key exists).run_onchange_before_install-packages.sh— runsbrew bundlewith the package list; re-runs automatically whenever that list changes..chezmoiexternal.toml— clones/updatesfzf-tab(refreshed weekly).
Fonts (Fairfax + JetBrains Mono) install automatically via brew bundle.
chezmoi update -v # pull latest and apply
chezmoi add <file> # stage a locally-changed dotfile back into the repo
chezmoi cd # open a shell in the source dir to commit & pushMIT