joshskeen/dotfiles

★ 0Forks 0LuaGitHub ↗Compare

README

dotfiles

Portable macOS developer bootstrap: shell, tmux, Neovim, Atuin, Android tooling, and Homebrew packages. Safe to publish — no secrets are stored in this repo.

What gets installed

Layer Source
Homebrew packages Brewfile — tmux, neovim, ripgrep, fd, gh, zoxide, Android Studio, iTerm2, Nerd Font, …
Rust CLI cargo install — atuin, githist
Oh My Zsh upstream install script
Oh My Tmux gpakosz/.tmux clone + local overrides
Config symlinks zshrc, tmux.conf.local, nvim/, atuin/config.toml

Layout

dotfiles/
├── bootstrap.sh           # one-shot new machine setup
├── Brewfile
├── zsh/
│   ├── zshrc              # ~/.zshrc
│   └── android.zsh        # JAVA_HOME / ANDROID_HOME (when Studio + SDK exist)
├── tmux/
│   └── tmux.conf.local    # ~/.tmux.conf.local
├── atuin/
│   └── config.toml        # ~/.config/atuin/config.toml (non-secret settings only)
├── nvim/                  # ~/.config/nvim
├── scripts/
│   └── verify.sh          # post-install checks
└── docs/
    └── iterm.md           # iTerm2 notes (prefs not exported — no secrets)

New machine setup

git clone https://github.com/joshskeen/dotfiles.git ~/dotfiles
bash ~/dotfiles/bootstrap.sh
source ~/.zshrc
bash ~/dotfiles/scripts/verify.sh

Options

bash ~/dotfiles/bootstrap.sh --configs-only   # symlinks only
bash ~/dotfiles/bootstrap.sh --skip-brew      # skip Homebrew/Brewfile
bash ~/dotfiles/bootstrap.sh --skip-cargo     # skip rustup + atuin/githist

After bootstrap (manual)

  1. Atuin — register on the new machine (encryption keys stay local):
    atuin register -u <username> -e <email>
    # optional sync:
    atuin login
  2. Android Studio — open once, run the setup wizard, install SDK components. Then adb version should work in a new shell.
  3. iTerm2 — see docs/iterm.md for font and profile notes.
  4. Neovim — first launch installs Lazy.nvim plugins; optionally npm install -g tree-sitter-cli for treesitter.

Secrets policy

Never commit:

  • ~/.local/share/atuin/{key,session,history.db,*.db}
  • API tokens, .env, SSH keys, or exported iTerm plist files with third-party credentials
  • *.bak backups created by bootstrap.sh

Atuin sync is optional; this repo only ships non-secret config.toml overrides (daemon-fuzzy, sync v2 records, etc.).

Day-to-day

Configs are symlinked from ~/dotfiles:

cd ~/dotfiles
git add -A && git commit -m "..." && git push

Edits under ~/.zshrc, ~/.tmux.conf.local, or ~/.config/nvim land in the repo automatically.

Contributors

joshskeen

Issues