Initially copied from Andre Azzolini who copied his from Zach Holman, but substantially stripped down for my particular tastes. This used to also utilize oh-my-zsh, but I've found that I'd rather manage my entire configuration by myself, so this no longer requires that.
- Install iTerm
- Install Homebrew
- Install a JVM from https://adoptopenjdk.net/ (last 3 LTS versions)
brew install autojump autoconf awscli bzip2 ca-certificates cffi cmake coreutils curl gcc gettext git git-lfs glib gnu-sed gnu-time grc grep hub jq libgpg-error libtool libuv lz4 mongosh ncdu nvm pinentry pinentry-mac poetry pyenv rbenv ruby-build rsync tfenv tree uv vim wget yq zsh- Install sdkman
brew tap sdkman/tap && brew install sdkman-cli && sdk install java chsh -s /bin/zsh- Copy SSH key from Bitwarden to ~/.ssh/id_rsa and set correct chmod permissions
chmod 600 ~/.ssh/id_rsa git clone git@github.com:phillipuniverse/dotfiles ~/.dotfilescd ~/.dotfilesrake install- Add the iTerm2 shell integration
curl -L https://iterm2.com/shell_integration/zsh -o ~/.iterm2_shell_integration.zsh - Copy in zsh_history from known location
#TODO: decide on long term storageto~/.zsh_history
The install rake task will symlink the appropriate files in .dotfiles to your
home directory. Everything is configured and tweaked within ~/.dotfiles,
though.
You should also go and modify ~/.dotfiles/git/gitconfig.symlink and change that to your own information and not mine.
Original instructions here, some modifications made to work with this setup.
- Install reqs
brew install gnupg pinentry-mac- Create
~/.gnupg/gpg-agent.confwithmkdir ~/.gnupg && vim gpg-agent.conf:
# Enables GPG to find gpg-agent
use-standard-socket
# Connects gpg-agent to the OSX keychain via the brew-installed
# pinentry program from GPGtools. This is the OSX 'magic sauce',
# allowing the gpg key's passphrase to be stored in the login
# keychain, enabling automatic key signing.
pinentry-program /usr/local/bin/pinentry-mac
- Create
~/.gnupg/gpg.conf:
use-agent
# This silences the "you need a passphrase" message once the passphrase handling is all set.
# Use at your own discretion - may prevent the successful interactive use of some operations.
# It is working fine for my use cases though.
batch
- Install GPG Suite from https://gpgtools.org
- Open GPG Suite, find the GPG private key from the secure location and copy to clipboard. GPG Suite will prompt to automatically import the key
There's a few special files in the hierarchy.
- bin/: Anything in
bin/will get added to your$PATHand be made available everywhere. - topic/*.zsh: Any files ending in
.zshget loaded into your environment. - topic/*.symlink: Any files ending in
*.symlinkget symlinked into your$HOME. This is so you can keep all of those versioned in your dotfiles but still keep those autoloaded files in your home directory. These get symlinked in when you runrake install. - topic/*.completion.sh: Any files ending in
completion.shget loaded last so that they get loaded after we set up zsh autocomplete functions.
See current status when you're in a Git repository (* indicates uncommitted changes):
Git aliases like gist for git status and git hist to replace git log:
Items that are in private/ will not get committed into git should you choose to share your repo.
Files inside that end in .zsh or .symlink will still function however.
Also, git/gitconfig.symlink is set to be ignored as well, and I recommend you move your private
~/.gitconfig into git/gitconfig.symlink for consistency.
Thanks to Zach Holman and the corresponding blog post. Seriously, go check out his repository and theory on dotfiles. I agree with all of it, and would never have created this without seeing his first.

