Cross-platform configuration files for zsh, vim, tmux, and various editors.
git clone https://github.com/YOUR_USERNAME/configs.git ~/repos/configs
cd ~/repos/configs && ./install.shconfigs/
├── zshrc # Base zsh config (cross-platform)
├── tmux.conf # Tmux config
├── ghostty_config # Ghostty terminal
├── Brewfile # macOS packages
├── valkey/
│ └── overrides.conf # Repo-wide Valkey overrides (macOS)
│
├── vim/
│ ├── vimrc # Modern vim config (no plugins needed)
│ ├── ideavimrc # JetBrains IDE vim bindings
│ └── legacy-vimrc # Old plugin-heavy config (reference)
│
├── vscode/ # Cursor/VSCode settings
│ ├── settings.json
│ └── keybindings.json
│
├── zed/ # Zed editor settings
│ ├── settings.json
│ └── keymap.json
│
├── shell/ # Extra shell utilities
│ ├── aliases # Additional aliases
│ ├── functions.sh # Package.json helpers
│ └── ls.sh # Smart ls fallback
│
├── local/ # GITIGNORED - machine-specific
│ ├── .zshrc # → ~/.zshrc
│ ├── .vimrc # → ~/.vimrc
│ ├── .tmux.conf # → ~/.tmux.conf
│ ├── ghostty.local # Loaded by ghostty_config
│ └── valkey.conf # Machine-specific Valkey overrides
│
└── local.example/ # Templates for local/
| Binding | Action |
|---|---|
jk |
Escape to normal mode |
B / E |
Start / End of line |
Cmd+T |
File finder |
Cmd+P |
Symbol search |
Space |
Leader key |
Edit files in local/ for machine-specific settings:
# local/.zshrc
source "$CONFIGS_DIR/zshrc"
export SOME_API_KEY="xxx"" local/.vimrc
source $HOME/repos/configs/vim/vimrc
colorscheme retroboxThere are two stages:
- A platform-specific package installer (
Brewfileon macOS,install-debian.shon Debian/Ubuntu,install-arch.shon Arch/CachyOS). ./install.shto wire up symlinks. This is cross-platform and idempotent.
brew bundle install --file=~/repos/configs/Brewfile
./install.shBoth Linux installers expose the same flags:
| Flag | What you get |
|---|---|
--cli-bare |
Server-grade shell only — zsh + prompt + history + tmux + nav, git basics |
--cli-dev |
Bare + language runtimes, cloud CLIs, media tools, Git extras |
--gui (default) |
Bare + dev + desktop apps |
./install-arch.sh # full install
./install-arch.sh --cli-bare # for SSH'd servers
./install-debian.sh # full install
./install-debian.sh --cli-dev # dev box, no desktop apps
./install.sh # symlinks (always run after the package step)Arch uses pacman + paru (auto-bootstrapped if missing, skipped entirely on --cli-bare). AUR package names are best-effort; comment out anything that fails and report.
Debian GUI coverage is intentionally minimal — most casks need vendor PPAs / .debs. On --cli-bare, atuin/starship/lazygit are not installed (they only arrive via the mise gap-filler in the dev tier), so bare Debian is a degraded shell experience compared to bare Arch.
./install.sh generates Homebrew's etc/valkey.conf as a wrapper that includes:
- Homebrew's stock Valkey config
- Repo-wide overrides from
valkey/overrides.conf - Machine-specific overrides from
local/valkey.conf
If Valkey is already running, reload it after config changes:
brew services restart valkeyFor Cursor/VSCode, manually copy:
cp vscode/*.json ~/Library/Application\ Support/Cursor/User/