Skip to content

Repository files navigation

dotfiles

Personal macOS dotfiles. Shell: zsh + Oh My Zsh. Terminal: cmux. AI: Claude Code.

Bootstrap

On a fresh Mac, git isn't available until Xcode CLI tools are installed. Open Terminal and run:

xcode-select --install

Wait for it to finish, then:

git clone https://github.com/qxhu/dotfiles.git ~/projects/dotfiles
cd ~/projects/dotfiles
./setup.sh

To update an existing machine after this repository changes:

cd ~/projects/dotfiles
git pull --ff-only
./setup.sh

Re-running setup refreshes symlinks; updates Homebrew packages, Oh My Zsh, TPM, and tmux plugins; and reapplies macOS defaults only when macos.sh changes.

Run a non-mutating health check at any time:

./setup.sh --check

setup.sh will:

  1. Install Xcode CLI tools (if missing)
  2. Install Homebrew, 1Password if missing, and run brew bundle
  3. Prompt for git identities (per-profile)
  4. Symlink all configs into place
  5. Validate that 1Password exposes the expected SSH keys
  6. Set Homebrew zsh as default shell
  7. Install tmux plugin manager, uv-managed Python, fzf shell integration

Layout

.zshenv                     # Loaded first; XDG dirs and tool env vars
.zprofile / .bash_profile   # PATH setup
AGENTS.md                   # Repository guidance for AI coding agents
.config/
  1Password/ssh/agent.toml    # SSH keys exposed by the 1Password agent
  zsh/.zshrc                # zsh config (completions, history, plugins)
  cmux/settings.json        # cmux terminal config
  git/config                # Git config (multi-profile support)
  git/ignore                # Global gitignore
  git/qxhu                  # Portable qxhu GitHub no-reply identity
  git/qxhu-signing.pub      # Public key used for verified commit signing
  git/allowed_signers       # Trusted signer for local signature verification
  claude/
    CLAUDE.md               # Global Claude Code instructions
    settings.json           # Claude Code preferences
    keybindings.json        # Claude Code keybindings
    commands/               # Shared slash commands / skills
  conf_docker.sh            # Docker aliases (source manually)
  conf_python.sh            # Python config (PIP_REQUIRE_VIRTUALENV, gpip)
.ssh/config                 # SSH config (keys not tracked)
.tmux.conf                  # Tmux (remote/SSH sessions only)
Brewfile                    # Declarative package list
setup.sh                    # Bootstrap script

Key tools

Tool Purpose
cmux Terminal multiplexer for local dev
tmux Multiplexer for remote/SSH sessions only
Raycast App launcher
Oh My Zsh Shell framework and prompt
fzf + zoxide Fuzzy find + smart cd
ripgrep + bat + eza Better grep, cat, ls
git-delta Syntax-highlighted diffs
zsh-autosuggestions Fish-style inline history suggestions
zsh-syntax-highlighting Command coloring before you hit enter
zsh-history-substring-search / searches history by typed prefix
Claude Code AI coding assistant (installed via brew cask)

After setup

  1. Restart terminal
  2. In 1Password, enable Settings > Developer > Use the SSH agent if setup warns that it is unavailable
  3. Authenticate GitHub: gh auth login
  4. Run claude to authenticate with Anthropic
  5. Import Raycast settings (extensions + hotkeys): Raycast → Settings → Advanced → Import, select .config/raycast/settings.rayconfig. This is import-only — Raycast can't load it via symlink, so re-export to update.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages