Skip to content

calghar/dotfiles

Repository files navigation

Dotfiles

macOS Neovim Ghostty AeroSpace Tmux

macOS dev environment built around Zsh, Tmux, Neovim (NvChad), and AeroSpace tiling WM.

Setup

git clone --recursive https://github.com/calghar/dotfiles.git ~/dotfiles
cd ~/dotfiles && ./setup.sh

The --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

What's Inside

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

Directory Structure

.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)

Key Bindings

AeroSpace (Tiling WM)

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

Ghostty + Tmux

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

AeroSpace Personal Config

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.sh

SketchyBar Themes

theme                    # List available themes
theme catppuccin-mocha   # Switch theme (also: dracula, nord,
                         # gruvbox-dark, one-dark, solarized-dark,
                         # material-ocean, rose-pine, github-dark)

Local Overrides

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.

Notes

  • Neovim 0.12: Uses nvim-treesitter on the main branch. Requires tree-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/bin is in your PATH (rustup does this via ~/.cargo/env).

Troubleshooting

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 launch
Tmux 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.sh
SketchyBar plugins not working
chmod +x ~/.config/sketchybar/plugins/*
brew services restart sketchybar
Zsh plugins missing (no syntax highlighting)
cd ~/dotfiles
git submodule update --init --recursive

Acknowledgments

Built on amazing work by Nikita Bobko (AeroSpace), Felix Kratz (SketchyBar), and all the open-source maintainers behind these tools.

About

Personal configuration setup

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors