Curated set of zsh plugins and CLI tools integrated into the Dendritic Nix configuration. All plugins are installed declaratively via Nix (home-manager modules or nixpkgs) — no external plugin managers required.
Config location:
modules/shell.nix
Fish-like inline autosuggestions as you type, drawn from command history.
- Suggestions appear in gray — press
→orEndto accept. - Package:
programs.zsh.autosuggestion.enable
Real-time syntax highlighting in the terminal. Valid commands turn green, errors turn red.
- Package:
programs.zsh.syntaxHighlighting.enable
Additional completion definitions for common tools not covered by default zsh.
- Package:
pkgs.zsh-completions
Search history by substring rather than prefix. Much more powerful than default up-arrow behavior.
- Keybindings:
↑/↓— search history for commands containing the current input- Type
git co, press↑→ findsgit commit,git checkout, etc.
- Package:
programs.zsh.historySubstringSearch.enable
Reminds you when an alias exists for a command you just typed manually.
$ git status
Found existing alias for "git status". You should use: "gst"
- Trains muscle memory over time. Zero friction — just prints a reminder.
- Package:
pkgs.zsh-you-should-use(sourced viainitContent)
Double-tap Escape to prepend sudo to the current or last command. Simple, indispensable.
- Implementation: Custom zsh widget in
initContent
Adds color to man pages using LESS_TERMCAP environment variables. Zero performance cost.
- Implementation: Environment variables in
initContent
Smart archive extraction — extract foo.tar.gz handles .tar.gz, .zip, .7z, .rar, .bz2, .xz, and more.
extract archive.tar.xz # Just works, no flags to remember- Implementation: Shell function in
initContent
General-purpose command-line fuzzy finder. Powers Ctrl+R history search, file search, and more.
- Keybindings:
Ctrl+R— fuzzy search command historyCtrl+T— fuzzy find files in current directoryAlt+C— fuzzycdinto subdirectories
- Package:
programs.fzf.enablewithenableZshIntegration
Replaces zsh's default tab-completion menu with fzf. Every <Tab> becomes a fuzzy search.
cd /etc/<Tab> # Fuzzy-filter all dirs under /etc
git checkout <Tab> # Fuzzy-filter branches
kill <Tab> # Fuzzy-filter running processes- Package:
pkgs.zsh-fzf-tab(sourced viainitContent)
Smarter cd that learns your most-used directories. Replaces cd with z.
z darwin # Jumps to /etc/nix-darwin (if visited before)
z mod shell # Jumps to /etc/nix-darwin/modules/shell.nix dir
zi # Interactive fuzzy directory picker- Package:
programs.zoxide.enablewithenableZshIntegration
Interactive git wrapper powered by fzf. Makes git operations browsable and visual.
forgit::log # or gl — interactive git log with diff preview
forgit::diff # or gd — interactive diff viewer
forgit::add # or ga — interactive staging
forgit::stash # interactive stash browser- Package:
pkgs.zsh-forgit(sourced viainitContent)
Full vim-mode editing for the zsh command line. Consistent with Neovim muscle memory.
- Modes: Normal, Insert, Visual, Replace — just like Vim.
Escapeenters Normal mode,i/areturn to Insert.- Visual block selection, text objects (
ciw,da", etc.) all work. - Cursor shape changes to indicate mode (beam = insert, block = normal).
- Package:
pkgs.zsh-vi-mode(sourced viainitContent)
cat replacement with syntax highlighting, line numbers, and git integration.
bat shell.nix # Syntax-highlighted file viewing
bat --diff shell.nix # Shows git diff inline- Aliased as
cat→batfor seamless adoption. - Package:
programs.bat.enable
Automatically loads/unloads nix develop shell environments when you cd into a project with a flake.nix.
cd ~/myproject/ # devShell activates automatically
cd ~ # devShell deactivates- Uses cached evaluations via
nix-direnv— fast re-entry on subsequent visits. - Requires a
.envrcfile in the project root containinguse flake. - Package:
programs.direnv.enable+programs.direnv.nix-direnv.enable
Keeps you in zsh when entering nix-shell or nix develop. Without this, Nix drops you into bash.
- Package:
pkgs.any-nix-shell(sourced viainitContent)
Run any program from nixpkgs without installing it.
, cowsay "hello" # Downloads, runs cowsay, doesn't persist
, httpie GET api.io # One-off HTTP request- Powered by
nix-index— needs an initial index build (runs automatically). - Package:
pkgs.comma
When you type a command that isn't installed, suggests which Nix package provides it.
$ rg
nix-index: rg is provided by nixpkgs#ripgrep
- Package:
programs.nix-index.enablewithenableZshIntegration
Tab completions for all nix CLI subcommands (nix build, nix develop, nix flake show, etc.).
- Package:
pkgs.nix-zsh-completions
Fast CLI documentation search for NixOS / home-manager options.
manix "programs.zsh" # Search all option docs
manix "services.openssh" # Find SSH service options- Package:
pkgs.manix
Cross-shell prompt with git status, nix-shell indicator, language versions, and more. Already configured with performance optimizations.
- Package:
programs.starship.enable
Terminal file manager with image preview support. Invoked via y wrapper.
- Package:
programs.yazi.enable
Resource monitor themed by Stylix.
- Package:
programs.btop.enable
Classic process viewer.
- Package:
programs.htop.enable