Nova is a fast, customizable zsh prompt renderer written in Rust.
It keeps the prompt's blocking path small and collects slower data, such as Git status and runtime versions, through a per-shell worker process. zsh is the primary shell target.
- zsh 5.8 or later
- A Nerd Font for the default icons
- Git, when Git segments are enabled
Release artifacts are published from Git tags by cargo-dist. The commands below work after the first GitHub Release is published.
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/lemtoc-labs/nova/releases/latest/download/nova-installer.sh | shbrew install lemtoc-labs/tap/novaRun without installing:
nix run github:lemtoc-labs/nova -- --helpInstall into your profile:
nix profile install github:lemtoc-labs/novaUse the GitHub backend:
mise use -g github:lemtoc-labs/nova@latestNova does not document the ubi backend because mise warns that it is
deprecated.
Add this to your .zshrc after nova is installed:
eval "$(nova init zsh)"For a temporary smoke test without touching your normal zsh configuration:
zsh -f
eval "$(nova init zsh)"Most users should put their config here:
~/.config/nova/config.toml
If XDG_CONFIG_HOME is set, Nova uses that base directory instead:
$XDG_CONFIG_HOME/nova/config.toml
Config lookup order:
--config PATH$NOVA_CONFIG$XDG_CONFIG_HOME/nova/config.toml$HOME/.config/nova/config.toml
Use NOVA_CONFIG when you want to load an explicit config file:
NOVA_CONFIG=/path/to/config.tomlStart from the complete example:
nova_config="${XDG_CONFIG_HOME:-$HOME/.config}/nova/config.toml"
mkdir -p "$(dirname "$nova_config")"
curl --proto '=https' --tlsv1.2 -fsSL \
https://raw.githubusercontent.com/lemtoc-labs/nova/main/examples/config.toml \
-o "$nova_config"
nova check --config "$nova_config"Preview the prompt without starting an interactive shell:
nova prompt --format preview --cwd "$PWD" --cols "${COLUMNS:-80}" --duration-ms 2000 --time 11:16:42