💡 Examples

This section demonstrates the configuration file contents for some common installation practices as well how to configure popular plugins and themes.

Deferred loading of plugins in Zsh

A commonly desired feature of shell plugin managers is deferred loading of plugins because of the massive increase in speed that it provides. Because Sheldon is not written in a shell language it cannot provide the level of integration that other plugin managers can. However, it is pretty easy to get deferred loading working with Sheldon using romkatv/zsh-defer.

Firstly, you should add zsh-defer as a plugin.

[plugins.zsh-defer]
github = "romkatv/zsh-defer"

Important: the zsh-defer plugin definition should be placed before any plugins that will use the defer template. Sheldon always processes plugins in the order they are defined in the config file.

Then add a template that calls zsh-defer source instead of just source.

[templates]
defer = "{{ hooks?.pre | nl }}{% for file in files %}zsh-defer source \"{{ file }}\"\n{% endfor %}{{ hooks?.post | nl }}"

Now any plugin that you want to defer you can apply the defer template. For example if you wanted to defer loading of zsh-syntax-highlighting.

[plugins.zsh-syntax-highlighting]
github = "zsh-users/zsh-syntax-highlighting"
apply = ["defer"]

Overriding the PATH template

The built-in PATH template adds the directory path to the beginning of the PATH variable, we might want to change it to the be added at the end. We could do this like this

[templates]
PATH = 'export PATH="$PATH:{{ dir }}"'

You can then apply it to the plugin like this

[plugins.example]
github = "owner/repo"
apply = ["source", "PATH"]

Note: this would change the behavior of PATH for all plugins using it.

Zsh frameworks

ohmyzsh

Add the following to the Sheldon config file.

[plugins.oh-my-zsh]
github = "ohmyzsh/ohmyzsh"

Or run the following to automatically add it.

sheldon add oh-my-zsh --github "ohmyzsh/ohmyzsh"

Add the following to your ~/.zshrc file.

# ~/.zshrc

export ZSH="$HOME/.local/share/sheldon/repos/github.com/ohmyzsh/ohmyzsh"

# Oh My Zsh settings here

eval "$(sheldon source)"

Zsh plugins

autosuggestions

Add the following to the Sheldon config file.

[plugins.zsh-autosuggestions]
github = "zsh-users/zsh-autosuggestions"
use = ["{{ name }}.zsh"]

Or run the following to automatically add it.

sheldon add zsh-autosuggestions --github zsh-users/zsh-autosuggestions --use '{{ name }}.zsh'

autojump

Add the following to the Sheldon config file.

[plugins.autojump]
github = "wting/autojump"
dir = "bin"
apply = ["PATH", "source"]

Or run the following to automatically add it.

sheldon add autojump --github wting/autojump --dir bin --apply PATH source

syntax-highlighting

Add the following to the Sheldon config file.

[plugins.zsh-syntax-highlighting]
github = "zsh-users/zsh-syntax-highlighting"

Or run the following to automatically add it.

sheldon add zsh-syntax-highlighting --github zsh-users/zsh-syntax-highlighting

blackbox

Add the following to the Sheldon config file.

[plugins.blackbox]
github = "StackExchange/blackbox"

Or run the following to automatically add it.

sheldon add blackbox --github StackExchange/blackbox

z.lua

Add the following to the Sheldon config file.

[plugins."z.lua"]
github = "skywind3000/z.lua"

Or run the following to automatically add it.

sheldon add z.lua --github skywind3000/z.lua

enhancd

Add the following to the Sheldon config file.

[plugins.enhancd]
github = "b4b4r07/enhancd"

Or run the following to automatically add it.

sheldon add enhancd --github b4b4r07/enhancd

base16

Add the following to the Sheldon config file.

[plugins.base16]
github = "chriskempson/base16-shell"

Or run the following to automatically add it.

sheldon add base16 --github chriskempson/base16-shell

Zsh themes

powerlevel10k

Add the following to the Sheldon config file.

[plugins.powerlevel10k]
github = "romkatv/powerlevel10k"

Or run the following to automatically add it.

sheldon add powerlevel10k --github romkatv/powerlevel10k

spaceship

Add the following to the Sheldon config file.

[plugins.spaceship]
github = "spaceship-prompt/spaceship-prompt"

Or run the following to automatically add it.

sheldon add spaceship --github spaceship-prompt/spaceship-prompt

pure

Add the following to the Sheldon config file.

[plugins.pure]
github = "sindresorhus/pure"
use = ["async.zsh", "pure.zsh"]

Or run the following to automatically add it.

sheldon add pure --github sindresorhus/pure --use async.zsh pure.zsh