My terminal setup with zsh + starship + tmux + Neovim for MacOS (Apple Silicon). Terminal background was given by Patrick Hendry through Unsplash.
| Path | Configures |
|---|---|
zsh/.zshrc |
shell: eza listing functions, fzf/atuin/zoxide, syntax highlighting, a run counter |
starship/starship.toml |
prompt: repo-aware rows, off-main guard, language versions, pane-aware rule |
tmux/.tmux.conf |
multiplexer: C-a prefix, popup rename/move, resurrect/continuum, vim-navigator |
nvim/init.lua |
editor: lazy.nvim, LSP (pyright + ruff), treesitter, harpoon, telescope |
The prompt is displayed a column format unlike most other prompts where every detail is dumped onto one row.
- Directory row shows the repo-relative path inside a git repo (
myrepo/src/api), and the path from~when you're loose in the filesystem. - Branch row appears only inside a repo — and turns into a white-on-red
⚠ OFF-MAINflag the moment you're not onmain/master(personally saved me from committing to the wrong branch more than once). - venv row shows only when a virtualenv is active.
- Language rows (
rust,py) auto-hide outside the relevant project. - Full-width rule with a run counter, so each command's
output is visually bracketed. It's tmux-pane-aware and resize-safe
(measures
#{pane_width}per draw), and it carries a command counter (#7) that resets withcls.
ls/ll/lf/lt are functions wrapping eza,
indented for readability. lf is a one-per-line view that emphasizes the first
letter of each name, turning a wall of ~30 project folders into something you
can eye-scan alphabetically.
The interactive-rebase screen is color-coded per command (green pick, red
drop, purple squash, …) via a gitrebase FileType autocmd, and
git-conflict.nvim handles merge
markers inline.
brew install starship eza fzf atuin zoxide ripgrep fd bat ast-grep tealdeer neovim tmuxPlus a Nerd Font for the prompt glyphs and eza icons (I use 0xProto).
- Symlink config files into place:
git clone https://github.com/Diacod-I/dot-files ~/dot-files
cd ~/dot-files
ln -sf "$PWD/zsh/.zshrc" ~/.zshrc
ln -sf "$PWD/starship/starship.toml" ~/.config/starship.toml
ln -sf "$PWD/tmux/.tmux.conf" ~/.tmux.conf
ln -sf "$PWD/nvim/init.lua" ~/.config/nvim/init.lua- Install tpm, open tmux, press
prefix + I. - Open
nvim— lazy.nvim bootstraps itself and installs everything on first launch. - Install oh-my-zsh with the
zsh-autosuggestionsandzsh-syntax-highlightingplugins.
- Built and tested on macOS, Apple Silicon, Homebrew. Linux works with minor path tweaks.
- The
.zshrchas a machine-specific tools block (Java/Spark/Postgres/etc.) — edit or delete it for your setup. init.luaenables asolidity_lsLSP; remove it from the server list if you don't do Solidity.- The prompt shells out a few times per draw. It's snappy in normal repos; in very large
repos you can raise
command_timeoutor trim modules. - Neovim 0.12 requires nvim-treesitter's
mainbranch, which has a different API (require("nvim-treesitter").install{...}+ manualvim.treesitter.start). My config also registers thegit_rebaseparser against thegitrebasefiletype (the names don't match by default) and disables treesitter in the Telescope previewer to dodge alanguagetreecrash. If you're on 0.12 and hit either, this is the fix.