Skip to content
dots
Esc
↑↓navigate↵open⌘Jpreview
On this page

Shell

fish, bash, and zsh with shared aliases, the starship prompt, atuin history, and the ~/.local/bin scripts.

fish is the main interactive shell. bash and zsh are set up to feel the same: they share aliases, the prompt, atuin history, and ports of the cd-style helper functions. General-purpose tools are POSIX or bash scripts in ~/.local/bin, so each has a single implementation that all three shells call.

Page Covers
fish ~/.config/fish: config.fish, every conf.d/ file (PATH, env, aliases, ssh-agent, tool init, secrets by name), vi-mode key bindings, the cyberdream theme, completions, the nvm.fish plugin, and every function in functions/
bash and zsh ~/.bashrc, ~/.zshrc, zsh key bindings, ~/.config/shell/aliases.sh, per-shell function ports
Aliases Every alias from .chezmoidata/aliases.yaml plus the fish-only and shell-specific ones
Scripts Every general-purpose executable in ~/.local/bin (pj, gho, ghn, gop, atuin-pick, …)
Starship ~/.config/starship.toml: format, modules, symbols, cyberdream palette
atuin ~/.config/atuin: history search settings, AI inline integration, cyberdream theme

Shared across shells

Concern fish bash zsh
Aliases conf.d/20-aliases.fish (hand-maintained) ~/.config/shell/aliases.sh (rendered from YAML) same as bash
Prompt starship + transient prompt starship starship
History atuin (hishtory also sourced if installed) atuin atuin, plus suvadu if installed
Key bindings vi mode plus custom binds atuin defaults only emacs keymap plus ports of the fish binds
cd-style helpers functions/*.fish ~/.config/bash/functions/*.bash ~/.config/zsh/functions/*.zsh
Directory jumping cd wrapper with zoxide fallback, zoxide init cd wrapper cd wrapper

Theme

fish syntax colors, FZF_DEFAULT_OPTS, the starship palette, and the atuin theme all use cyberdream (cyberdream.nvim). In fish, 40-tools.fish also replays quickshell’s wallpaper-generated terminal color sequences if that file exists.

Role gating

Everything in this section applies on every role (desktop, laptop, mac, server) except ~/.config/fish/auto-Niri.fish. That file is applied only on Linux desktop/laptop machines, along with the rest of the desktop layer.

Packages

.chezmoidata/packages.yaml supplies the shell tooling on Arch (pacman) and macOS (Homebrew): fish, starship, atuin, zoxide, fzf, fd, ripgrep, eza, bat, jq, gum, glow, yazi, lazygit, and zsh-syntax-highlighting. The packages script runs pacman -S --needed on Arch and brew install on macOS. See chezmoi scripts.

Was this page helpful?