You got your Oh My Zsh in my dotfiles!
Inspired by and compatible with Zach Holman's dotfiles.
The framework is only currently tested on macOS.
- Clone this repository to
git clone https://github.com/DanielThomas/oh-your-dotfiles.git ~/.oh-your-dotfiles
- Link the zshrc file to
ln -s ~/.oh-your-dotfiles/oh-your.zshrc ~/.zshrc
- Change your default shell to
chsh -s /bin/zsh
- Start a new terminal session and run
dotfiles_install. If you haven't yet got the Command-line Developer Tools installed you'll be prompted to install them.
After installation, optionally switch to the Homebrew managed
sudo sh -c "echo /usr/local/bin/zsh >> /etc/shells" chsh -s /usr/local/bin/zsh
You're good to go!
Create yourself a dotfiles repository using the conventions below. See https://github.com/DanielThomas/dotfiles for an example of a dotfiles repository.
dotfiles- list dotfiles locations
dotfiles_find- find files within dotfiles locations, for example
dotfiles_install- run dotfiles installers
dotfiles_update- update dotfiles installed files. Equivalent to running
Sto skip existing
How it works
Dotfiles sources are found using the pattern
The files within are processed automatically by
.zshrc or the installation process depending on their extension.
Scripts set the environment, manage files, perform installation or enable plugins depending on the file name or extension. Bootstrap can be safely run repeatedly, you'll be prompted for the action you want to take if a destination file or directory already exists.
These files set your shell's environment:
oh-my-zsh.zshLoaded before oh my zsh is sourced, useful for configuration of a theme (ZSH_THEME)
path.zsh: Loaded first after oh my zsh is sourced, and expected to setup
*.zsh: Get loaded into your environment
completion.zsh: Loaded last, and expected to setup autocomplete
The following extensions will cause files to be created in your home directory:
*.symlink: Automaticlly symlinked into your
$HOMEas a dot file during bootstrap. For example,
myfile.symlinkwill be linked as
*.gitrepo: Contains a URL to a Git repository to be cloned as a dotfile. For example
myrepo.gitrepowill be cloned to
*.themegitrepo: Contains a URL to a Git repository to be cloned as a custom zsh theme. For example
mytheme.gitrepowill be cloned to
repo-<number>.gitpatchto apply custom patches to a
*.ttc: Fonts are copied to
*.plist: Preference lists are copied to
*.launchagent: Files are copied to
Installation steps during bootstrap can be handled in three ways:
install.sh: An installation shellscript
install.homebrew: A list of Homebrew formulas to install
install.homebrew-cask: A list of Homebrew casks to install
install.homebrew-tap: A list of Homebrew taps
install.mas: A list of App Store apps to install
install.open: A list of files to be handled by the default application association using the
Installing from the App Store with
Applications from the App Store are referenced by a numeric id rather than a name.
In order to find out the id you can use the command
mas search <term>.
install.mas should be in the format
<id> <name> (the same format as the results of
- All topic directory names are implicitly added to the plugin list, so you get
- Plugins listed in
oh-my-zsh.pluginsfiles are read and added to this list
Profiling Startup Time
If your shell is taking an excessive amount of time to start, run
zsh with the
PROFILE_STARTUP environment variable:
tools/startlog.py against the output in
/tmp to determine the contributors to startup time. For more details, see: