MacOS

Command Line Interface

Tools I recommend you install on MacOS

Summary

ToolPurposeExample
Powerlevel 10kZsh theme for speed and flexibilityp10k configure
nvmNode Version Managernvm install stable
nodeJavaScript runtimenode --version
npmNode package managernpm install -g pnpm
pnpmDisk space efficient package managerpnpm --version
bunFast all-in-one JavaScript runtimebun --version
rustupRust toolchain installerrustup default stable && rustupupdate
cargoRust package managercargo install just
justCommand runnerjust
ezaModern replacement for lseza
fdSimple, fast alternative to findfd pattern
ripgrepFast alternative to greprg pattern
ast-grepStructural search and replaceast-grep
batcat clone with syntax highlightingbat file.txt
zoxideSmarter cd commandz directory
git-deltaSyntax-highlighting pager for gitdelta
uvFast Python package manageruv tool install httpie
pre-commitGit hook management frameworkpre-commit install
httpieModern command-line HTTP clienthttp GET example.com
lazygitTerminal UI for gitlazygit
fzfCommand-line fuzzy finderfzf
jqCommand-line JSON processorjq .

Powerlevel 10k

Powerlevel10k is a theme for Zsh. It emphasizes speed, flexibility and out-of-the-box experience.
Terminal
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
Fonts can be downloaded and installed via this tip's link.

Manual font installation

  1. Download these four ttf files:
  2. Double-click on each file and click "Install". This will make MesloLGS NF font available to all applications on your system.
  3. Configure your terminal to use this font:
    • iTerm2: Type p10k configure and answer Yes when asked whether to install Meslo Nerd Font. Alternatively, open iTerm2 → Preferences → Profiles → Text and set Font to MesloLGS NF.
    • Apple Terminal: Open Terminal → Preferences → Profiles → Text, click Change under Font and select MesloLGS NF family.
    • Hyper: Open Hyper → Edit → Preferences and change the value of fontFamily under module.exports.config to MesloLGS NF.
    • Visual Studio Code: Open File → Preferences → Settings (PC) or Code → Preferences → Settings (Mac), enter terminal.integrated.fontFamily in the search box at the top of Settings tab and set the value below to MesloLGS NF. Consult this screenshot to see how it should look like or see this issue for extra information.
    • Ghostty: Open Menu → Open Configuration (Linux) or Ghostty → Settings... (Mac) and add the following line:
      font-family = "MesloLGS NF"
      

Node Version Manager: Node, NPM, and Bun

Learn how to install the npm with nvm!
Terminal
nvm on
nvm install stable
nvm use stable
node --version
npm --version
npm               # to see if there is a version to upgrade to
npm install -g bun
# npm install -g bun@1.2.4  # (to upgrade or use a specific version of `bun`)
npm install -g pnpm
# npm install -g pnpm@9.0.0  # (to upgrade or use a specific version of `npm`)
bun --version
pnpm --version

Rust

Learn how to install the rustup utility and the cargo package manager!
Terminal
rustup default stable
rustup update

Rust Tools

Terminal
cargo install just --locked
cargo install eza --locked
cargo install fd-find --locked
cargo install ripgrep --locked
cargo install ast-grep --locked
cargo install bat --locked
cargo install zoxide --locked
cargo install git-delta --locked

Python

My recommendation for new Python projects is to use uv package manager, which is an extremely fast Python package and project manager, written in Rust..
Learn how to install the uv package manager!

Python tools

Terminal
uv tool install --python 3.14 pre-commit --with pre-commit-uv
uv tool install --python 3.14 httpie
The documentation for httpie calls to install with pip, but on MacOS, there is a openssl issue, so we install with uv tool, which uses a python installation it manages, not the system python.
Terminal
/Users/iancleary/.local/share/uv/tools/httpie/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
Again, when using uv tool, this issue goes away, since we are not using the system python installation.

Go tools

Terminal
go install github.com/jesseduffield/lazygit@latest
Use p to pull Use Shift + P to push to the current branch

MacPorts

Terminal
sudo port install fzf
sudo port install jq