My tech registry
This registry lists every single technology I have installed globally, so I can easily reproduce my environment and keep everything up to date.
Anything that's installed by brew doesn't need detailed instructions, just run brew update && brew upgrade && brew cleanup.
Browsers
Development tools
- Installation:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - Environment config:
eval "$(/opt/homebrew/bin/brew shellenv)"
- Shell config: Change shell with
chsh -s /opt/homebrew/bin/bash
- Installation: .zip install
- Commands:
~/.local/bin/code(custom-created symlink to/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code)
GPG /usr/local/bin/gpg (symlink to /usr/local/MacGPG2/bin/gpg)
- Installation: .dmg install
Language tools
Thanks to Apple, my C/C++ setup is very complex.
/usr/bin/{clang,clang++,cc,c++,gcc,g++}: Apple-provided Clang/opt/homebrew/{gcc,g++}-<version>: Homebrew-installed GCC
Dafny /opt/homebrew/bin/dafny
- GHCup
~/.ghcup/bin/ghcup- Installation:
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh - Update:
ghcup upgrade
- Installation:
- GHC/Stack/HLS/...
~/.ghcup/bin/*- Installation:
ghcup install <tool> <version>,ghcup set <tool> <version> - List installed tooling versions:
ghcup list - Note: Prefer
stackovercabal.
- Installation:
- Haskell executables:
~/.stack/bin/*
- NVM:
- Installation:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash - Environment config
- Installation:
~/.nvm/versions/node/v<version>/bin/node- Installation:
nvm install <version>;nvm use <version>
- Installation:
/opt/homebrew/bin/deno- Installation:
curl -fsSL https://deno.land/install.sh | sh - Environment config:
. "$HOME/.deno/env" - Update:
deno upgrade
- Installation:
~/.bun/bin/bun- Installation:
curl -fsSL https://bun.sh/install | bash - Update:
bun upgrade - Note: Prefer
bunovernpm/yarn/pnpmwhere possible. Preferpnpmovernpm/yarnfor Node projects.
- Installation:
- npm executables:
~/.bun/bin/*- List installed:
bun pm ls -g - eshost-cli
eshost - esvu
esvu - Mermaid CLI
mmdc pnpmprettier- Pyright
pyright - serve
serve yarn
- List installed:
- juliaup
~/.juliaup/bin/juliaup- Installation:
curl -fsSL https://install.julialang.org | sh - Update:
juliaup self update
- Installation:
- Julia
~/.juliaup/bin/julia- Installation:
juliaup add <version>;juliaup default <version>
- Installation:
- TeX Live
/usr/local/texlive/2025/bin/universal-darwin/*- Installation: follow instructions
- Update: reinstall
- elan
~/.elan/bin/elan- Installation:
curl https://elan.lean-lang.org/elan-init.sh -sSf | sh - Update:
elan self update
- Installation:
- Lean
~/.elan/bin/lean*- Installation:
elan install <version>;elan default <version>
- Installation:
- Installation: .dmg install
- Commands:
/Applications/Racket v<version>/bin/racket - Update: Download latest version and install over existing installation. Update PATH as well.
- OPAM:
/opt/homebrew/bin/opam - OCaml:
~/.opam/<version>/bin/ocaml*- Installation:
opam switch create <version> - Environment config:
eval $(opam env) - Update:
opam update && opam upgrade - List installed versions:
opam list
- Installation:
- OPAM executables:
~/.opam/<version>/bin/*- Rocq
rocq vsrocq-language-server
- Rocq
- perlbrew
~/perl5/perlbrew/bin/perlbrew- Installation:
curl -L https://install.perlbrew.pl | bash - Update:
perlbrew self-upgrade
- Installation:
- Perl
~/perl5/perlbrew/perls/<version>/bin/*- Installation:
perlbrew install <version>;perlbrew switch <version> - Environment config:
. "$HOME/perl5/perlbrew/etc/bashrc"
- Installation:
-
Python
~/.venv/bin/python,~/.local/bin/python<version>- Installation: First run
uv python install <version>; then useuv venv .venvat user root - Update:
uv python update <version>; then recreate venv withuv venv .venv --force - Note: The venv uses the Python version used to create it. You can also create other environments with other Python versions, probably in project directories, by installing additional Python versions.
- Installation: First run
-
Python executables:
~/.venv/bin/*- Installation:
uv pip install <package> blackjupyterlab- You are free to install any package used by casual scripts, but the following should be the baseline installations:
matplotlib(library)- NetworkX
networkx(library) numpy(library)pandas(library)scikit-learn(library)scipy(library)- Seaborn
seaborn(library) - statsmodels
statsmodels(library) - tqdm
tqdm(library)
- Installation:
-
- Note: I don't use Anaconda. But there's one particular package, Montreal Forced Aligner, that to this day doesn't have a functional PyPI build. I installed
minicondafor it, and a little shell setup:
Now I can run
conda_initin any shell to set up conda for that session, and then run MFA from there. - Note: I don't use Anaconda. But there's one particular package, Montreal Forced Aligner, that to this day doesn't have a functional PyPI build. I installed
- Air:
/opt/homebrew/bin/air - R
- Installation: .pkg install to
/Applications/R.app,/Library/Frameworks/R.framework/Resources/bin - Commands:
/usr/local/bin/R,/usr/local/bin/Rscript(symlinks to/Library/Frameworks/R.framework/Resources/bin) - Update: Download latest version and install over existing installation.
- Installation: .pkg install to
- rbenv
/opt/homebrew/bin/rbenv - Ruby
~/.rbenv/shims/ruby- Installation:
rbenv install <version>;rbenv global <version> - Environment config:
eval "$(rbenv init - bash)"
- Installation:
- Ruby executables:
~/.rbenv/shims/*- Installation:
gem install <package> - Update:
gem update <package> - Linguist
github-linguist
- Installation:
- rustup
~/.cargo/bin/rustup- Installation:
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh - Update:
rustup self update
- Installation:
- rustc/Cargo:
~/.cargo/bin/*- Installation:
rustup install <version>;rustup default <version> - Update:
rustup update
- Installation:
- Wolfram Engine
/Applications/Wolfram Engine.app- Installation: .dmg install
- WolframScript:
/Applications/WolframScript.app- Installation: .dmg install
- Commands:
/usr/local/bin/wolframscript(symlink to/Applications/WolframScript.app/Contents/MacOS/wolframscript)
Other command line tools
benchcoreutils(GNU versions of commands, prefixed withg; e.g.,gls,gcp)cowsaycurldopplerhq/cli/dopplerffmpegghgnupgjqneofetchpandoctreewget
Other libraries:
graphviz(used bynetworkx,DiagrammeR, and others)z3(for theorem proving)