A comprehensive setup script for configuring a new macOS machine with a consistent development environment, inspired by FelixKratz dotfiles.
- Homebrew - Package manager for macOS
- Neovim - Modern Vim-based editor configured for Go/Rust development
- Yabai - Tiling window manager for macOS
- SKHD - Simple hotkey daemon for macOS
- SketchyBar - Custom status bar (using Felix Kratz's exact configuration)
- Ghostty - Fast, feature-rich terminal emulator
- omp - AI coding agent (can1357/tap) with casper models (GLM-5.3 default)
- Go - With essential development tools (gopls, delve, staticcheck, etc.)
- Rust - With rust-analyzer, clippy, and rustfmt
- Node.js - JavaScript runtime
- Python 3.11 - Python programming language
ripgrep- Fast text search toolfzf- Fuzzy findertree- Directory tree viewerjq- JSON processorbat- Better cat with syntax highlightingeza- Better ls replacementzoxide- Smarter cd commandstarship- Cross-shell prompttmux- Terminal multiplexerhtop- Process viewer
- omp installed via
can1357/tapHomebrew tap - Default model:
casper/glm-5.3; smol/scoutcasper/deepseek-v4-flash-0731, slow/designer/reviewercasper/deepseek-v4-pro(Baseten disabled viadisabledProviders) - MCP servers: Linear (OAuth), Chronosphere, Chronosphere docs, Notion, incident.io — all via
omp/mcp.json - Custom tokyonight theme
- Config files symlinked from
omp/directory to~/.omp/agent/— all configs are symlinked, so edits land directly in the repo;git add -A && git commitis the only sync step
-
Clone and run locally:
git clone git@github.com:dofinn/setups.git ~/src/setups cd ~/src/setups ./install.sh
-
After installation, complete the manual steps (see below):
- Authenticate omp with your model provider (casper)
- Add API tokens to
~/.zshrc.local
The install script handles everything that can be automated. These steps require manual interaction:
omp auth-broker login <provider> # e.g. casper — run `omp auth-broker list` for optionsThis opens a browser for OAuth authentication. The credential is stored in macOS Keychain. omp/config.yml (symlinked) sets the model roles — it works once the provider credential exists.
The install script creates ~/.zshrc.local from .zshrc.local.example if it doesn't exist. Edit it to add your tokens:
vim ~/.zshrc.localThis file is not tracked in git (see .gitignore). It contains machine-specific secrets:
FIREHYDRANT_API_TOKENLOGSEQ_API_TOKENCHRONOSPHERE_API_TOKENDITTO_LICENSE(path to license file)
source ~/.zshrc- You may need to disable SIP (System Integrity Protection)
- Or configure sudoers file for passwordless yabai execution
nvim --version
go version
cargo --version
yabai --version
omp --version~/src/setups/ # This repo
├── install.sh # Main installation script
├── Brewfile # Homebrew package list (declarative)
├── .gitignore # Excludes secrets, backups, nvim cache
├── .zshrc # ZSH config (tracked, no secrets)
├── .zsh_alias # ZSH aliases (tracked)
├── .zshrc.local.example # Template for machine-specific secrets
├── omp/ # omp (AI coding agent) config
│ ├── config.yml # Model roles, theme, settings
│ ├── mcp.json # MCP server config (Linear)
│ └── themes/
│ └── tokyonight.json # Custom omp theme
├── nvim/ # Neovim configuration
├── yabai/ # Yabai window manager config
├── skhd/ # Keyboard shortcuts
├── sketchybar/ # Status bar configuration
├── ghostty/ # Terminal configuration
├── tmux/ # tmux config and scripts
└── scripts/ # Utility scripts
Never commit secrets to git. The repo uses a two-layer pattern:
.zshrc(tracked) — shell config, functions, aliases. No secrets.~/.zshrc.local(gitignored) — machine-specific tokens, sourced by.zshrcif it exists.
The .gitignore excludes:
.zshrc.local/*.localsecrets*.env/.env.**.bak/*.backup.*
The omp model provider credential is stored in macOS Keychain (not in any file). To set it up on a new machine:
omp auth-broker login casperThis cannot be automated — it requires browser-based OAuth.
- Configured with LazyVim as the base
- Go and Rust language servers pre-configured
- Essential plugins for development workflow
- Custom keymaps and options
- Tiling window management for macOS
- Keyboard shortcuts for window manipulation
- Integration with SketchyBar for workspace display
- Uses Felix Kratz's configuration exactly as referenced
- Custom status bar with system information
- Integration with yabai for workspace indicators
- Preserves your existing Zim framework
- Adds development-specific paths and aliases via
.zsh_alias - AWS SSO helper functions (
aws-login,aws-logout,aws-sso-profile) - Git helper functions (
gpu,gcb,gwta) - Kubernetes helper functions (
tkl,klogs,klogsf) - Machine-specific secrets via
~/.zshrc.local(not tracked)
- Default model:
casper/glm-5.3— plus role models: smol/scoutcasper/deepseek-v4-flash-0731, slow/designer/reviewercasper/deepseek-v4-pro(Baseten is disabled viadisabledProviders) - Theme: tokyonight (custom)
- Memory backend: local
- Autolearn: enabled
- MCP servers: Linear (OAuth), Chronosphere, Chronosphere docs, Notion, incident.io — all via
omp/mcp.json - Config symlinked from
omp/to~/.omp/agent/
-
Clone the repo:
git clone git@github.com:dofinn/setups.git ~/src/setups -
Run the install script:
cd ~/src/setups && ./install.sh
-
Authenticate omp with your model provider:
omp auth-broker login <provider> # e.g. casper — run `omp auth-broker list` for options
-
Create ~/.zshrc.local with your tokens:
cp ~/src/setups/.zshrc.local.example ~/.zshrc.local vim ~/.zshrc.local # fill in your API tokens
-
Restart your terminal:
source ~/.zshrc
- Permission denied: Configure sudoers or disable SIP
- Service won't start: Check Console.app for detailed error messages
- Not displaying: Ensure the service is running with
brew services list - Configuration errors: Check the sketchybar configuration in
~/.config/sketchybar/
- Prompt not appearing: Ensure Spaceship prompt is properly installed in your Zim setup
- Aliases not working: Check that
.zsh_aliasis being sourced (it is sourced by.zshrc) - Secrets not loading: Ensure
~/.zshrc.localexists and contains your tokens
- Model not working: Run
omp auth-broker login casperto authenticate - Config not loading: Check that
~/.omp/agent/config.ymlis symlinked to the repo - Check current model:
omp config get modelRoles
Feel free to fork this repository and customize it for your own needs. The modular approach makes it easy to add or remove components.
This project is open source and available under the MIT License.