Skip to content

oryband/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,702 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

dotfiles

My main working machine setup. Here be cyber dragons πŸ‰ and optional bugs πŸ›.

Specs & Configuration

The links below lead to my configuration files in this repo.

I run macOS. 🍎 Packages are managed with Homebrew β€” see Brewfile for the explicit install list (brew bundle --file=~/Brewfile to restore on a fresh machine). Ghostty is my terminal with tmux on top for window management, and Starship as the prompt. I code in Neovim with AstroNvim as the distro.

🐚 Shell (.zshrc, .zprofile)

Zsh with zinit as the plugin manager. Zinit solves two problems that matter when your .zshrc does a lot:

  • Async loading (wait, lucid ice modifiers) β€” heavy plugins load after the prompt renders, so shell startup stays snappy. Autosuggestions, history search, syntax highlighting, gcloud completions, scm_breeze β€” all deferred.
  • Lazy install + git-based plugins β€” first-time clone is automatic, and binary plugins (e.g. the k9s theme bundle) install from GitHub releases via from"gh-r".

A few notable hacks in there:

  • Prezto without SVN β€” GitHub killed SVN in 2024, so zinit ice svn no longer works for cherry-picking single Prezto modules. Workaround: clone the full Prezto repo once and source individual module init scripts manually.
  • Claude Code fast path β€” when $CLAUDECODE is set, the shell short-circuits after loading just zinit, PATH, fnm, and direnv. No prezto, themes, completions, or keybindings β€” Claude doesn't need them and they cost startup time on every Bash tool call.
  • compinit guard β€” zinit wraps autoload during plugin loads, which breaks _tags (stack-depth-sensitive). A small loop strips the wrapper before compinit runs.

.zprofile keeps a few login-shell-only bits: brew shellenv (the official Apple Silicon path setup) and an fnm default-node entry on $PATH so GUI apps and IDEs find Node without an interactive shell.

πŸ” Git & SSH (.gitconfig, .ssh/config)

Commit signing and SSH auth go through the 1Password SSH agent β€” no private SSH or signing keys live on disk. .gitconfig sets gpg.format = ssh and points gpg.ssh.program at op-ssh-sign. .ssh/config scopes IdentityAgent to Host github.com so okteto and other SSH targets keep using their own keypairs. Local signature verification is wired via .config/git/allowed_signers.

πŸ€– Claude Code (.claude/)

My global Claude Code configuration β€” applies to every project that doesn't override it.

  • CLAUDE.md β€” global rules: tool preferences, when to reach for which MCP, git/PR conventions, objectivity & disagreement protocol.
  • mcp.json β€” global MCP servers (Sequential Thinking, Git, Context7, Tavily, Exa) loaded via a ~/.claude/mcp.json flag in the claude alias, so the dotfiles-tracked file is the source of truth and ~/.claude.json's mcpServers stays empty/committable.
  • mcp-library.json β€” catalog of MCPs that are opt-in per repo (not loaded globally).
  • settings.json β€” hooks, model choice, status line.
  • scripts/tmux-rename.sh β€” rename the current tmux window when Claude Code starts in it.

About

My main working machine setup. Here be cyber dragons πŸ‰ and optional bugs πŸ›.

Topics

Resources

Stars

Watchers

Forks

Contributors