Personal dotfiles. Primary target is macOS; Omarchy (Arch + Hyprland) is supported as a secondary target for the cross-platform configs.
git clone <repo-url> ~/dotfiles
cd ~/dotfiles
./setup-macos.sh # macOS
./linux/setup-linux.sh # Omarchy / ArchThe setup script will install dependencies and create symlinks automatically.
See linux/README.md for what the Linux variant does and
doesn't symlink (Omarchy ships its own nvim/ghostty/starship configs).
| Config | Description | Platform |
|---|---|---|
.zshrc |
Zsh with Oh My Zsh, Starship prompt, and custom aliases | macOS |
.config/nvim/ |
Neovim with LazyVim | both |
.config/ghostty/ |
Ghostty terminal | both |
.config/aerospace/ |
AeroSpace tiling window manager | macOS |
.config/starship.toml |
Starship prompt overrides | both |
.claude/ |
Claude Code settings and global instructions | both |
.mcp.json |
MCP server config (fetch) |
both |
linux/bashrc |
Bash config that layers on Omarchy's defaults | Linux |
Brewfile |
macOS package list | macOS |
linux/packages.txt |
pacman package list (extras beyond Omarchy) | Linux |
If you prefer to install manually:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"brew install neovim fzf mise starship zsh-autosuggestions ripgrep fd lazygit postgresql@16 libpq
brew install --cask font-jetbrains-mono-nerd-font ghosttysh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"ln -sf ~/dotfiles/.zshrc ~/.zshrc
ln -sf ~/dotfiles/.config/nvim ~/.config/nvim
ln -sf ~/dotfiles/.config/ghostty ~/.config/ghostty
ln -sf ~/dotfiles/.config/aerospace ~/.config/aerospace
ln -sf ~/dotfiles/.claude/settings.json ~/.claude/settings.json
ln -sf ~/dotfiles/.claude/CLAUDE.md ~/.claude/CLAUDE.mdLazyVim and all plugins install automatically on first launch:
nvimWait for plugins to install, then run :checkhealth to verify everything is working.
Framework: Oh My Zsh Prompt: Starship Plugins: git, macos, yarn, fzf
| Alias | Command |
|---|---|
v |
nvim |
ll |
ls -FGlAhp |
gcob |
Interactive branch checkout with fzf |
gcom |
git checkout main |
gbnuke |
Delete merged branches |
Built on LazyVim with these extras enabled:
- Languages: TypeScript, JSON, Ruby
- Formatting: Prettier
- Linting: ESLint
- Tools: lazygit integration
- Open Neovim:
nvim - Plugins auto-install via lazy.nvim
- Run
:checkhealthto verify setup - Press
Spaceto see available keybindings
- Font: JetBrainsMono Nerd Font, 14pt
- Shell integration: zsh
Tiling window manager for macOS. Key bindings use Alt as the main modifier.
- Workspaces: 1-9 bound to Alt+number
- Focus: Alt+H/J/K/L for vim-style navigation
- Move windows: Alt+Shift+H/J/K/L
- Layouts: Alt+/ for tiles, Alt+, for accordion
Global settings for Claude Code:
- Attribution disabled: No AI references in commits or PRs
- CLAUDE.md: Global instructions applied to all projects
Uses mise for managing runtime versions (node, ruby, python, etc.).
# Install and activate a version
mise use node@lts
mise use ruby@latest
mise use python@latest
# List installed versions
mise list
# Install all versions from .mise.toml
mise install