Skip to content

nicholasjhenry/dotfiles

Repository files navigation

@nicholasjhenry dotfiles

Personal macOS dotfiles: an XDG-compliant zsh setup with starship for the prompt, mise for runtime versions, and a delta-powered git config. Managed with rcm.

Prerequisites

  • Homebrew
  • rcmbrew install rcm
  • 1Password CLI (op) — used by hooks/post-up to provision the git identity / signing key

The shell config leans on a handful of CLI tools (installed via Homebrew): starship, mise, sheldon, eza, fd, fzf, bat, ripgrep, delta, gh, jq, glow. sheldon, vim-plug, and tmux's TPM bootstrap themselves on first run.

Install

Clone into ~/Workspaces:

mkdir -p ~/Workspaces && cd ~/Workspaces
git clone https://github.com/nicholasjhenry/dotfiles.git

Install the dotfiles (the one-time RCRC var points rcup at this repo's rcrc):

env RCRC=$HOME/Workspaces/dotfiles/rcrc rcup

rcup symlinks the files into place and runs hooks/post-up, which creates the required XDG directories, installs vim-plug + TPM, appends source $ZDOTDIR/main to ~/.zshrc, and provisions secrets (see below). After the first run, rcup symlinks rcrc to ~/.rcrc, so subsequent updates are just:

rcup

Run rcup again after pulling new changes to symlink any new files.

Layout

Path Purpose
zshenv~/.zshenv XDG base dirs + ZDOTDIR=$XDG_CONFIG_HOME/zsh
config/zsh/ Shell config; main is the entry point (sourced from ~/.zshrc)
config/git/ git config, global ignore, commit message template, template/ hooks (ctags)
config/starship.toml Prompt
config/tmux/tmux.conf tmux
config/{bundle,ctags,irb,pry,psql}/ Per-tool config
local/bin/~/.local/bin/ Small scripts (note, haikunator, docker-tag)
vim/, vimrc, vimrc.bundles vim — the EDITOR fallback (Zed is primary); plugins via vim-plug
iterm2/ iTerm2 color schemes
hooks/post-up rcm post-install hook
rcrc rcm configuration

Local & secret overrides

Machine-local and secret settings live in ~/.config/secrets/ (kept out of this repo):

  • ~/.config/secrets/shrc — sourced last by config/zsh/main, so it can override anything above it. Put machine-specific env vars, aliases, and secrets here. hooks/post-up creates an empty one on first run.

  • ~/.config/secrets/gitconfig — included by config/git/config. Holds your git identity and signing key:

    [user]
      name = Your Name
      email = you@example.com
      signingkey = <GPG signing key>

    hooks/post-up provisions this from 1Password (op read op://Setup/gitconfig/notesPlain). Because commit.gpgsign = true, commits will fail until this file exists with a valid signingkey.

About

Credits

Based on and inspired by thoughtbot's dotfiles, whose original work remains under an MIT License.

About

A set of vim, shell, git, and tmux configuration files.

Resources

Stars

Watchers

Forks

Contributors