My computer setup, tools, and tips

This page helps me when setting up a new computer, and provides an overview to assess for consistency and compatibility.

My main development is done using my devbox to provide a consistent environment using Apple container machines.

Hardware

  • Computer: Mac Mini (2024) M4 10 core, 32GB RAM, 512GB SSD
  • Monitor: BenQ PD27305
  • Keyboard: NuPhy Air75 V2, with caps-lock configured as escape

Software management

  • Package management: brew
  • Python versions and virtualenv: uv
  • Containers/VMs: container (using my devbox)

Desktop

Programming

Data Science

LLMs

Researching and writing

  • Writing (PDFs): typst
  • Research notes: Zotero
  • General notes: Apple notes

Apps

To install all apps (list created using brew list --casks -1):

brew install -q --cask \
    betterdisplay \
    caskhub \
    font-fira-code \
    font-fira-code-nerd-font \
    font-noto-emoji \
    ghostty \
    mos \
    raycast \
    shottr \
    stats \
    zed \
    zotero

Note this includes the Fira Code font with programming ligatures.

Commandline tools

To install all my usual packages (list created using brew leaves -r):

brew install -q \
    agg \
    bat \
    bottom \
    caddy \
    chezmoi \
    container \
    curl \
    doctl \
    duckdb \
    dust \
    eza \
    fastfetch \
    fd \
    ffmpeg \
    fish \
    fzf \
    gh \
    git \
    harper \
    herdr \
    jq \
    lazygit \
    libiconv \
    mailpit \
    mkcert \
    node \
    nss \
    oven-sh/bun/bun \
    ripgrep \
    starship \
    uv \
    worktrunk \
    zlib

Note the better versions of standard tools:

Global python tools managed by uv:

uv tool install \
    llm \
    rapid-mlx \
    ruff \
    semble \
    site-sweeper-cli \
    ty \
    vale

Configuration

My dotfiles configuration is managed by chezmoi in tcorbettclark/dotfiles.

Tips

Brew

Add the brew-cache extension to make it easy to find which packages own which files:

brew tap ten0s/homebrew-brew-cache

In addition to the usual brew update/upgrade/install/uninstall/list/info:

brew cache -u                             # Create/update cache of files
brew cache -s <file pattern>              # Find packages containing files/directories matching pattern

brew leaves                               # Packages which are not dependencies of other packages
brew leaves -r                            # ...installed manually
brew leaves -p                            # ...installed as dependencies

brew deps --tree <package>                # Dependencies of <package>
brew deps --tree --installed              # ...all packages
brew deps --tree (brew leaves -r)         # ...all manually installed packages, avoiding duplications
brew deps --tree (brew list --casks -1)   # ...all casks

brew autoremove --dry-run                 # Remove (dry run) packages no longer required
brew cleanup -s                           # Remove old versions of packages and cache files

brew doctor                               # Find potential issues

Fish

Find changes made to fish configuration, functions, completions etc since installation:

fish_delta