Battle-tested on macOS. Designed for both personal workstations and minimal server environments.
This configuration is built on three core principles:
-
Zero Home Presence (Strict XDG): I am an absolutist about the XDG Base Directory Specification. My
$HOMEis clean. With the exception of a single.zshenventry point, every configuration, cache, and state file is forced into~/.config,~/.cache, or~/.local/share—even for tools like Homebrew,wget, andlessthat don't support it natively. -
Modern Replacements: Legacy Unix utilities are replaced with modern, faster (often Rust-based) alternatives.
ls→eza(with git status & icons)cat→bat(syntax highlighting & git integration)find→fdgrep→ripgrep(rg)cd→zoxide(teleportation)
-
Explicit & Unified:
- Theming: A consistent Catppuccin Mocha theme is applied programmatically across Alacritty, Tmux, FZF, Bat, Delta, and Neovim.
- Workflow: A "Tmux-First" approach where the terminal emulator (Alacritty) is merely a canvas. Window management, scrolling, and clipboard integration are handled explicitly by Tmux.
- Fully Themed: Consistent Catppuccin Mocha theme across Alacritty, Tmux, FZF, Bat, Delta, and Neovim.
- Extensive Zsh configuration and plugins:
- powerlevel10k prompt (Catppuccin styled)
- fzf-tab for interactive, preview-enabled tab completion
- additional completions
- async autosuggestions
- fast-syntax-highlighting
- autopair
- zoxide for smart directory jumping
- Neovim: Full LazyVim IDE setup with Catppuccin theme.
- Tmux: Highly customized configuration with:
- Smart pane navigation (seamlessly switch between Vim and Tmux panes)
- Minimal, info-rich status bar (CPU/RAM/Battery/Zoom indicators)
- Popup scratchpad (
Prefix + g) - Hybrid mouse workflow (Tmux for yanking, terminal for scrolling)
- Alacritty: Minimal, borderless configuration acting as a pure launchpad for Tmux.
- Modern CLI Replacements:
bat(cat),eza(ls),rg(grep),fd(find),delta(diff),doggo(dig).
Requirements:
zsh5.1 or newer (async stuff requires recent enough version of zsh)git
Dotfiles can be installed in any dir, but probably somewhere under $HOME.
Personally I use $HOME/.local/dotfiles.
Deployment script is idempotent and handles:
- Creating necessary XDG directory structures.
- Installing Homebrew (interactive prompt for custom location) and all
Brewfilepackages. - Linking all config files to
$XDG_CONFIG_HOME. - Compiling necessary terminfo and plugins (like
gitstatusd).
Keep in mind that Zsh configuration skips every global configuration file
except /etc/zsh/zshenv.
The difference is that env.d is sourced always while rc.d is sourced in interactive session only.
The setup heavily relies on Homebrew to manage CLI tools. The deploy.zsh script handles the installation of:
- Core:
git,neovim,tmux - Shell:
zsh,coreutils,curl - Modern Utils:
bat,eza,fd,ripgrep,fzf,zoxide - Data Tools:
jq,yq