Managed with chezmoi. Source lives under home/.
sh -c "$(curl -fsSL https://get.chezmoi.io)" -- -b "$HOME/.local/bin" init --apply natevick-b is not optional. The installer defaults to BINDIR=bin, which is relative — without
it chezmoi lands in $PWD/bin/chezmoi, wherever you happened to run the command. The apply
still succeeds (the installer execs the binary it just placed), so the breakage only shows
up afterwards as chezmoi: command not found. ~/.local/bin is what dot_zshenv puts on
PATH. Don't substitute get.chezmoi.io/lb either — it hardcodes a relative .local/bin and
so only lands correctly when run from $HOME.
Point your dotfiles setting at github.com/natevick/dotfiles; it runs
install.sh, which bootstraps non-interactively.
Modern CLI tools are installed via mise (~/.config/mise/conf.d/cli-tools.toml):
fzf, eza, bat, fd, ripgrep, zoxide, starship. tmux and vim (the git editor) are
installed by the bootstrap via the native package manager (brew/apt/dnf/apk) when missing —
the only true prerequisites are zsh, git, and curl. All shell wiring lives in
home/dot_config/zsh/aliases.zsh and is command -v-guarded, so anything missing degrades to the
native command.
On macOS (non-headless), the bootstrap also installs AeroSpace,
an i3-like tiling WM, and manages ~/.aerospace.toml. It is the repo's only Homebrew cask and its
only tap (nikitabobko/tap, the upstream author's own) — everything else brew installs is
homebrew-core.
| Alias | Expands to | Notes |
|---|---|---|
ls |
eza --group-directories-first |
dirs first, colorized |
ll |
eza -lah --git --group-directories-first |
long view, human sizes, git status column |
la |
eza -a |
include dotfiles |
lt |
eza --tree --level=2 |
tree, 2 levels |
cat |
bat --paging=never |
syntax highlighting; auto-plain when piped; scripts still get real cat |
grep |
grep --color=auto |
original grep, colorized |
zrc / tmrc |
$EDITOR ~/.zshrc / ~/.tmux.conf |
quick-edit configs |
xcopy / xpaste |
pbcopy/pbpaste (macOS), else wl-copy/wl-paste, else xclip |
clipboard |
| Command | Replaces | Notes |
|---|---|---|
bat <file> |
cat |
pager + highlighting |
fd <pattern> |
find |
fast, .gitignore-aware; -H includes hidden, -e rb by extension |
rg <pattern> |
grep -r |
fast recursive content search, .gitignore-aware |
z <name> / zi |
cd |
zoxide: jump to a visited dir by frecency / interactive picker |
find and grep are intentionally not aliased — fd/rg use different argument syntax.
| Key | Action |
|---|---|
Ctrl-R |
fuzzy shell-history search |
Ctrl-T |
fuzzy file/dir picker (powered by fd) with bat/eza preview pane; pastes the path |
Alt-C |
fuzzy cd (powered by fd) with an eza tree preview |
fd is fzf's default source (FZF_DEFAULT_COMMAND), so it's fast and .gitignore-aware everywhere.
On macOS, Alt-C needs the terminal set to treat Option as Meta (Esc+); Ctrl-T/Ctrl-R work regardless.
chezmoi edit ~/.zshrc— edit a managed filechezmoi diff— preview what apply would change (always run first)chezmoi apply— apply changes from the local source only; this never pullschezmoi update—git pullthe source, then apply. Use this on a second machinechezmoi cd— drop into the source repo
If a machine is missing something you know you merged, check the source is current before suspecting the templates — a stale clone looks exactly like a gating bug:
git -C "$(chezmoi execute-template '{{ .chezmoi.workingTree }}')" log --oneline -1Per-machine/secret junk goes in ~/.config/zsh/local.zsh (git-ignored, sourced last).
Work machines additionally clone the private dotfiles-work overlay and run its install.sh.