macOS dev environment built around Zsh, Tmux, Neovim (NvChad), and AeroSpace tiling WM.
git clone --recursive https://github.com/calghar/dotfiles.git ~/dotfiles
cd ~/dotfiles && ./setup.shThe --recursive flag pulls zsh plugin submodules. Restart your terminal after setup.
Manual setup
# Prerequisites
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Clone with submodules
git clone --recursive https://github.com/calghar/dotfiles.git ~/dotfiles
cd ~/dotfiles
# Install dependencies
brew bundle install
cargo install tree-sitter-cli
# Symlink configs
mkdir -p ~/.config
for dir in aerospace atuin btop cava fastfetch fish ghostty neovide nvim sketchybar skhd starship tmux yazi zsh; do
ln -sfn ~/dotfiles/$dir ~/.config/$dir
done
ln -sfn ~/dotfiles/.zshrc ~/.zshrc
# Tmux plugins
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
~/.tmux/plugins/tpm/scripts/install_plugins.sh
# Open nvim once to install plugins and compile parsers
nvim --headless "+Lazy! sync" +qa| Category | Tools |
|---|---|
| Shell | Zsh + Starship prompt, Atuin history, fzf, zoxide |
| Terminal | Ghostty + Tmux (Catppuccin theme) |
| Editor | Neovim (NvChad) + Neovide GUI |
| Window Mgmt | AeroSpace tiling WM + SketchyBar status bar |
| File Mgmt | Yazi file manager, eza, bat |
| System | btop, fastfetch, cava visualizer |
.zshrc # Shell config (sources ~/.zshrc.local for secrets)
aerospace/ # Tiling WM (base + personal config merge)
atuin/ # Shell history
btop/ # System monitor
cava/ # Audio visualizer + shaders
ghostty/ # Terminal (config, mappings, appearances, shaders)
nvim/ # Editor (NvChad-based, treesitter on main branch)
sketchybar/ # Status bar (items, plugins, themes)
starship/ # Prompt theme (Catppuccin Mocha)
tmux/ # Multiplexer + plugins
yazi/ # File manager
zsh/ # Plugins (submodules: syntax highlighting, autosuggestions)
cheatsheets/ # Quick reference (Neovim, Tmux, Ghostty)
| Binding | Action |
|---|---|
Alt+1-5 |
Switch workspace |
Alt+Shift+1-5 |
Move window to workspace (follow) |
Ctrl+Alt+1-5 |
Move window to workspace (stay) |
Hyper+H/J/K/L |
Focus left/down/up/right |
Alt+Shift+H/J/K/L |
Move window |
Alt+Space |
Toggle floating/tiling |
Alt+Tab |
Previous workspace |
Ctrl+Shift+Cmd+Alt+Enter |
Fullscreen |
| Binding | Action |
|---|---|
Cmd+T |
New tmux window |
Cmd+W |
Close tmux pane |
Cmd+1-9 |
Switch tmux window |
Cmd+\ |
Split horizontal |
Cmd+Shift+\ |
Split vertical |
Alt+Arrows |
Navigate tmux panes |
Cmd+Z |
Zoom pane |
Cmd+F |
Quick terminal |
App-to-workspace assignments are stored in aerospace-personal.toml (git-ignored). Copy the example to get started:
cp aerospace/aerospace-personal.toml.example aerospace/aerospace-personal.toml
# Edit with your apps, then merge:
./aerospace/sync-config.shtheme # List available themes
theme catppuccin-mocha # Switch theme (also: dracula, nord,
# gruvbox-dark, one-dark, solarized-dark,
# material-ocean, rose-pine, github-dark)Machine-specific config goes in ~/.zshrc.local (git-ignored, sourced at end of .zshrc). Use it for secrets, work-specific PATHs, or env vars you don't want shared.
- Neovim 0.12: Uses
nvim-treesitteron themainbranch. Requirestree-sitter-cli(installed via Cargo) to compile parsers. First launch compiles all parsers (~30s). - Zsh plugins: Loaded as git submodules. If highlighting or suggestions are missing, run
git submodule update --init --recursive. - Cargo PATH: Ensure
~/.cargo/binis in your PATH (rustup does this via~/.cargo/env).
Treesitter errors on Neovim startup
If you see attempt to call method 'range' (a nil value), parsers need recompiling:
# Ensure tree-sitter-cli is installed
cargo install tree-sitter-cli
# Delete stale parsers and recompile
rm -f ~/.local/share/nvim/lazy/nvim-treesitter/parser/*.so
nvim # parsers recompile on launchTmux plugins not loading
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
tmux source-file ~/.config/tmux/tmux.conf
~/.tmux/plugins/tpm/scripts/install_plugins.shSketchyBar plugins not working
chmod +x ~/.config/sketchybar/plugins/*
brew services restart sketchybarZsh plugins missing (no syntax highlighting)
cd ~/dotfiles
git submodule update --init --recursiveBuilt on amazing work by Nikita Bobko (AeroSpace), Felix Kratz (SketchyBar), and all the open-source maintainers behind these tools.