Shell and terminal config for macOS

One shell for every Mac.

zsh, fish, Ghostty and a Starship prompt in one repo. One clone, five symlinks, nothing to babysit.

Intel and Apple silicon. MIT licensed.

Four files, one setup

Your terminal, in a repo

Every config lives in git and is symlinked into place. Edit it live and the change is already in the repo.

zsh/.zshrc
# === Homebrew (Apple Silicon or Intel) ===
for brew in /opt/homebrew/bin/brew /usr/local/bin/brew; do
  [[ -x $brew ]] && eval "$($brew shellenv)" && break
done

zsh

The shell macOS ships with

PATH, completions, fnm, fzf, zoxide and atuin. Tools you have not installed are skipped instead of erroring.

fish/config.fish
abbr -a gs "git status"
abbr -a gd "git diff"
abbr -a gl "git log --oneline -20"
alias ll "eza -la --icons"
type -q zoxide; and zoxide init fish | source

fish

The shell you actually type in

The same tools as zsh, plus git abbreviations that expand as you type. gs becomes git status.

ghostty/config
font-family = JetBrainsMono Nerd Font
font-size = 14
background-opacity = 0.92
# Login zsh puts Homebrew on PATH
command = /bin/zsh -lc "exec fish"

Ghostty

A fast, native terminal

JetBrains Mono with Nerd Font glyphs, slightly translucent, and it opens straight into fish.

starship/starship.toml
[directory]
format = "[ 󰋜 $path ]($style)"
style = "bg:#89b4fa fg:#1e1e2e bold"
truncation_length = 3
truncate_to_repo = true

Starship

A prompt that says where you are

Catppuccin Mocha powerline: user, time, folder, branch and language version. A plain variant takes over in Terminal.app.

Portable

Intel and Apple silicon

Homebrew is found at /opt/homebrew or /usr/local. No paths to edit.

Safe

Backs up first

Anything already in the way is moved to .bak before the link goes in.

Private

Secrets stay local

API keys live in secrets.zsh and secrets.fish, sourced if present, never committed.

Install

Three commands

Clone it, install the tools, link the files. Run it again any time; it only replaces links.

$ git clone https://github.com/nulljosh/dotfiles.git ~/Documents/Code/dotfiles
$ brew install fish starship eza bat fd fzf zoxide atuin fnm
$ ~/Documents/Code/dotfiles/install.sh
Fonts and Ghostty: brew install --cask font-jetbrains-mono-nerd-font ghostty

01

Clone

Anywhere you like. The installer links from wherever the repo sits.

02

Install the tools

All from Homebrew. Skip any you do not want; the configs check before they use one.

03

Link

install.sh symlinks five files and backs up whatever was there.