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
- Computer monitoring: Stats
- Display management: Betterdisplay
- Launcher (Spotlight replacement): Raycast
- Sleep control: Jolt of Caffeine
Programming
- Editor: Zed
- Terminal : Ghostty
- Shell: Fish
- Terminal prompt: Starship
- Git: LazyGit
- Python code quality: Ruff and ty
- Javascript/Typescript: Bun
Data Science
- Python notebooks: Marimo
- Dataframes: Polars and DuckDB
- Visualisations: Vega-Altair
LLMs
- Local models: Ollama
- Remote models: Ollama and OpenRouter
- Commandline: LLM
- Programming: Pi
Researching and writing
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