Skip to content

Repository files navigation

dotfiles

Development environment managed with symlinks and a single install script. Primarily macOS, with Linux support (see below).

Terminal setup - kitty + tmux + nvim

Quick Install

git clone https://github.com/xeaser/dotfiles.git ~/dotfiles &&cd~/dotfiles && ./install.sh

Structure

~/dotfiles/
├── zsh/ # Zsh + Powerlevel10k, plugins, custom scripts
├── tmux/ # oh-my-tmux config, gitmux, spotify status
├── nvim/ # LazyVim config, plugins, cheatsheet
├── kitty/ # Kitty terminal theme + settings
├── git/ # .gitconfig, .gitignore_global
├── k9s/ # Kubernetes UI: aliases, views, cluster templates
├── opencode/ # AI assistant: config, skills, commands
├── caddy/ # Caddyfile reverse proxy
├── dns/ # Homelab DNS config
├── finicky/ # macOS browser routing rules
├── codegraphcontext/ # Code graph MCP server
├── .superset/ # AI orchestration config
├── examples/ # Project-local config templates (.nvim.lua, .envrc)
├── Brewfile # Homebrew packages
├── install.sh # Idempotent setup script
├── .secrets.example # Template for secrets
└── .gitignore

Dry Run

Check what needs to be installed or linked without making any changes:

./install.sh --dry-run

Shows a color-coded report: green = installed, red = missing, blue = needs linking, yellow = wrong symlink target. Includes a summary count at the end.

What's Included

ToolDescription
zshOh My Zsh + Powerlevel10k with fzf-tab, autosuggestions, fast-syntax-highlighting, atuin, zoxide, direnv
tmuxoh-my-tmux with gruvbox theme, gitmux status, spotify, session management via sesh
nvimLazyVim with 21 extras: gruvbox-material theme, NeoTree, DAP debugging, neotest, illuminate, aerial, navic, indent-blankline, avante (AI), opencode.nvim, project manager. See cheatsheet
kittyGruvbox dark theme, Nerd Fonts, powerline tabs
k9sKubernetes terminal UI with custom aliases (dp, sec, jo), pod column layouts with image versions and resource usage
opencodeAI coding assistant with oh-my-opencode model routing, MCP servers (postgres, GitHub, Atlassian, JetBrains, Obsidian), custom skills (AWS SSO, CI status, PR status, code review), slash commands
caddyReverse proxy config (Caddyfile) for local/homelab services
dnsHomelab DNS configuration
finickymacOS browser routing rules (finicky.ts)
codegraphcontextCode graph MCP server for codebase analysis
.supersetAI orchestration config (setup/teardown/run hooks)
brewAll packages captured in Brewfile

Secrets Management

Secrets are never committed. The install script creates ~/.secrets from .secrets.example on first run.

# After install, edit:
vim ~/.secrets
chmod 600 ~/.secrets

Sourced automatically by .zshrc.

Key Shortcuts

Zsh

ShortcutAction
vim / viOpens Neovim
vizEdit .zshrc
sozSource .zshrc
kkubectl
tdailyAttach to tmux "daily" session

Tmux (prefix: Ctrl+a)

ShortcutAction
prefix + Tsesh session picker (fzf)
prefix + Ztmux-fzf launcher
prefix + Spacetmux-thumbs (copy hints)
F12Suspend tmux (nested sessions)
Ctrl+h/j/k/lNavigate panes (vim-aware)

Neovim (leader: Space)

ShortcutAction
leader + aaAvante AI assistant
leader + ggLazyGit
leader + ttRun nearest test
leader + tdDebug nearest test
leader + ppBrowse projects
leader + phProject history
leader + ooToggle opencode
leader + zProject debug configs (per-project .nvim.lua)
leader + dbToggle breakpoint
leader + dcStart/continue debugging
leader + eToggle NeoTree file explorer
leader + csToggle aerial symbols sidebar
leader + rsRefactoring picker
leader + uCColorscheme picker
Ctrl+h/j/k/lNavigate splits (tmux-aware)

Full keybinding reference: nvim/cheatsheet.md

Linux Support

The setup is primarily macOS but works on Linux with --skip-brew:

./install.sh --skip-brew

This skips Homebrew and installs all symlinks, clones oh-my-zsh, plugins, oh-my-tmux, and powerlevel10k.

Install packages manually on Linux using your distro's package manager before running the script:

# Debian/Ubuntu
sudo apt install zsh tmux neovim fzf kitty git curl
# Arch
sudo pacman -S zsh tmux neovim fzf kitty git curl

Then install tools not in distro repos (zoxide, atuin, sesh, gitmux, lazygit, direnv) via their official install instructions or Homebrew for Linux.

macOS-only features (skipped automatically on Linux):

  • toggleNotch, volUp aliases (osascript)
  • Spotify status in tmux (requires osascript)
  • macos_option_as_alt in kitty
  • Homebrew casks (GUI apps)

About

macOS dev environment: zsh, tmux, nvim, kitty -- topic-based dotfiles with idempotent install script

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages