A comprehensive, automated dotfiles management system for macOS development environments.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/jwyce/.dotfiles/HEAD/install.sh)"Options: --skip-font, --skip-ssh
~/.dotfiles/
├── dot # CLI tool
├── home/ # Stowed to ~ (symlinks)
│ ├── .agents/ # AI agent skills
│ ├── .config/
│ │ ├── zsh/ # Shell (via ZDOTDIR)
│ │ ├── nvim/ # Neovim (lazy.nvim, native LSP)
│ │ ├── git/ # Git + work includeIf
│ │ ├── jj/ # Jujutsu VCS
│ │ ├── tmux/ # Tmux
│ │ ├── opencode/ # OpenCode AI
│ │ ├── ghostty/ # Terminal
│ │ ├── starship.toml # Prompt
│ │ └── ...
│ └── .local/bin/ # Scripts
├── packages/Brewfile # Homebrew packages
├── .tmux/ # gpakosz/tmux submodule
└── fonts/ # Custom fonts
| Command | Description |
|---|---|
dot init |
Full setup (brew, stow, languages, SSH, fonts) |
dot update |
Pull latest + brew upgrade + restow |
dot doctor |
Health checks and diagnostics |
dot stow |
Re-create symlinks |
dot brew |
Install from Brewfile |
dot skills |
Sync agent skills to dotfiles |
dot edit |
Open dotfiles in editor |
- Installs Homebrew
- Installs packages from Brewfile
- Stows
home/to~ - Links tmux submodule
- Ensures ZDOTDIR in
~/.zshenv - Installs: OpenCode, Antigen, Rust, OCaml, Node (fnm), Bun
- Generates SSH key (optional)
- Installs fonts (optional)
- Neovim — Lua config, lazy.nvim, native LSP (0.11+), per-plugin files
- Zsh — Antigen plugin manager, XDG-compliant via ZDOTDIR
- Git — SSH commit signing, conditional work email via
includeIf - Jujutsu — SSH signing, work scope, custom aliases and revsets
- Tmux — gpakosz/.tmux base, custom local overrides
- Agent Skills — Managed in
~/.agents/, synced viadot skills
Files in home/ mirror the home directory structure:
home/.config/nvim/ → ~/.config/nvim/
home/.agents/ → ~/.agents/
Run dot stow after making changes.
- GNU Stow for symlink management
- Homebrew for package management
- OpenCode for AI assistance
- dmmulroy/.dotfiles for inspiration for the
dotCLI and stow-based structure