My macOS dotfiles: Oh My Zsh, git, brew, node, mac settings, mac apps, and more.
My macOS dotfiles for Zsh.
Note: Installation of Oh My Zsh
is not optional. Everything else listed
below can be opted-out of.
brew update
, brew upgrade
and brew cleanup
brew cask
The installation step requires the XCode Command Line
Tools and may overwrite existing
dotfiles in your HOME and .vim
directories.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/codfish/dotfiles/main/install.sh)"
If you wish to fork this project and maintain your own dotfiles, fork it and
run the following:
DOTFILES_REPO=yourhandle/dotfiles /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/yourhandle/dotfiles/main/install.sh)"
Run the dotfiles command:
dotfiles
You should run the update when:
~/.dotfiles/git/gitconfig
(the only file that isOptions:
-h , —help | Help |
-l , —list | List of additional applications to install |
—no-packages | Skip package (brew/node/etc) updates |
—no-sync | Skip pulling from the remote repository |
—no-macos | Skip macOS settings update |
—with-apps | Opt-in to install mac apps via brew cask (won’t install/update if it’s already present) |
These dotfiles essentially wrap Oh My Zsh. When you install the dotfiles, Oh My Zsh will also get installed for you directly into the ~/.dotfiles
directory.
$ZSH
will be ~/.dotfiles/oh-my-zsh
$ZSH_CUSTOM
will be ~/.dotfiles/oh-my-zsh-custom
Custom macOS settings can be applied during the dotfiles
process. You’ll be prompted before this happens so you can say no.
They can also be applied independently by running the following command:
macosdefaults
Any private and custom Bash commands and configuration should be placed in a~/.zshrc.before
or ~/.zshrc.after
file. These files will not be under
version control or committed to a public repository. If either or both exists,
they will be sourced for inclusion in .zshrc
.
~/.zshrc.before
: Sourced before oh-my-zsh.sh
is loaded, therefore allowing you to effect what happens when oh-my-zsh.sh
runs, without changing any tracked files. Some examples would be the ZSH_THEME
or specific Oh My Zsh plugin configurations.~/.zshrc.after
: Sourced after oh-my-zsh.sh
is loaded. You can override anything that was set by oh-my-zsh.sh
.Here is an example ~/.zshrc.before
:
# PATH exports
PATH=$PATH:~/.gem/ruby/1.8/bin
export PATH
# Git credentials
# Not under version control to prevent people from
# accidentally committing with your details
GIT_AUTHOR_NAME="Chris O'Donnell"
GIT_AUTHOR_EMAIL="chris@example.com"
# Set the credentials (modifies ~/.gitconfig)
git config --global user.name "$GIT_AUTHOR_NAME"
git config --global user.email "$GIT_AUTHOR_EMAIL"
# Work Machine Aliases
alias web="cd ~/Sites/company/web"
ZSH_THEME="amuse"
Here is an example ~/.zshrc.after
:
# override something
alias ll="ls -aGlFh"
Note: Because the dotfiles/gitconfig
file is copied to ~/.gitconfig
, any private
git configuration specified in ~/.zshrc.before
or ~/.zshrc.after
will not be committed to
your dotfiles repository.
Inspiration and code was taken from many sources, including: