Portable macOS config: zsh + oh-my-zsh + Powerlevel10k, Homebrew packages, git config, aliases, and a journaling utility.
Inspired by Getting Started With Dotfiles.
mkdir -p ~/repos && git clone git@github.com:Aylr/dotfiles.git ~/repos/dotfiles
cd ~/repos/dotfiles && ./setup.shThe repo must live at ~/repos/dotfiles. setup.sh is safe to re-run. It installs Homebrew, everything in the Brewfile, oh-my-zsh, and Powerlevel10k fonts. It also sets brew's zsh as the login shell, symlinks the configs into ~/ (backing up existing files; a symlink pointing elsewhere is left alone), runs gh auth login if needed, and installs Claude Code and Hermes Agent with their official installers. A package that fails to install doesn't stop the run.
Expect prompts for your password (sudo, chsh) and the GitHub login.
Afterwards, by hand:
- Fill in
~/.gitconfig-professionaland~/.gitconfig-personal(created from the.exampletemplates). - Copy
shell/.secretsover from the old Mac. hermes setup, or copy~/.hermes/.envfrom the old Mac.- Open a new terminal.
| Path | What |
|---|---|
Brewfile |
Homebrew formulae and casks. Commented lines are optional extras. |
setup.sh |
Bootstrap script |
zsh/.zshrc, zsh/.p10k.zsh |
Shell and prompt, symlinked to ~/ |
shell/.alias |
Aliases and functions |
shell/.exports |
Non-secret environment variables |
shell/.secrets |
Secret environment variables (gitignored) |
shell/.gitconfig |
Git config, symlinked to ~/. Includes per-path identity files, but its own [user] email currently overrides them. |
bin/ |
Scripts on PATH, e.g. git prune-merged |
journal.sh |
Journaling CLI, aliased as jj |
brew bundle check --verbose # what's in the Brewfile but not installed
brew bundle cleanup # what's installed but not in the Brewfile (dry run)jj views today's entry, jj -e (or j) edits it in $EDITOR.
journal.sh View today's entry
journal.sh -e Edit today's entry
journal.sh "TIL something neat" Add a note to today's entry
journal.sh "TIL something neat" -e Add a note and edit
journal.sh -d 2020-01-01 View the entry from 1/1/20
cat file.txt | journal.sh Pipe file.txt into today's entry