This is my hopefully complete Runbook for getting a new MacOS computer running.
- Install Iterm2
- https://iterm2.com/; a terminal emulator and long-time companion.
- From this repository I eventually need to load the Default profile, for all of the keybinding goodness. See
./iterm/Default.json
. curl -L https://iterm2.com/shell_integration/zsh -o ~/.iterm2_shell_integration.zsh
- From this repository I eventually need to load the Default profile, for all of the keybinding goodness. See
- Install homebrew
- https://brew.sh ; package manager
- Install OhMyZsh
- https://github.com/ohmyzsh/ohmyzsh ; zshell option
- Install Powerlevel10k
- https://github.com/romkatv/powerlevel10k
- Install Base16 Shell
- https://github.com/chriskempson/base16-shell
- Install ImageOptim
- https://imageoptim.com/ ; remove image metadata
brew install cmake
- cross-platform make (may not be necessary with MacOS only install)
brew tap homebrew/cask
- make sure to get access to casks
brew install maccy
- a multi-paste clipboard.
brew install git
- MacOS git is always behind the times, this will help keep it updated.
brew install git-extras
- some extra commands for git
brew install git-secrets
- handle git secrets (e.g., keychain)
brew install hub
- terminal integration with GitHub
brew install openssl
- You’re going to want this for rbenv, though look at ./runbooks/ruby-openssl
brew install postgresql
- postgresql database
brew install rbenv
- Ruby version manager (we’ll install Ruby’s later)
brew install redis
- Going to need this for asyn rails work
brew install dbus
- Message bus system, providing inter-application communication
brew install ag
- A solid replacement for grep
brew install ripgrep
- Another solid replacement for grep that allows PERL Regexp (command is
rg
) brew install rga
- A wrapper around ripgrep for PDFs, Office Files, etc.
brew install terminal-notifier
- Send MacOS notifications from terminal
- brew install enchant
- a wonderful spell checker that powers the jinx.el package.
brew install fd
find
replacementbrew install fzf
- Fuzzy finder
brew install bat
- A cat clone with syntax highlighting
brew install pandoc
- for converting documents to different formats
brew install appcleaner
- for cleaning out applications and all their extra files
brew install smudge/smudge/nightlight
- command light control of the Night Shift settings (see https://github.com/smudge/nightlight)
brew install difftastic
- a more robust diff-ing tool
brew install cloc
- a Perl tool to determine LOC for a project
brew install npm
- Node package manager
brew install tree
- Tree
brew install erdtree
- a better tree (command is
et
) - brew install enchant
- https://abiword.github.io/enchant/ for spelling
brew install rsync
- The default MacOS package was 2.6;
homebrew
has v3.x - brew install starship
- A Cross-Shell Prompt
brew install plantuml
- For this to work in Org Mode, I needed to run
sudo ln -sfn /opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdk
; which pre-supposed having brew installed openjdk - brew install yaml-language-server
- To provide linting for YAML (and other features)
- Install Air
- Install gopls
- either
brew install gopls
orgo install golang.org/x/tools/gopls@latest
; for Language Server support - Install goimports
go install golang.org/x/tools/cmd/goimports@latest
brew tap homebrew/cask-fonts
brew install font-et-book
brew install font-iosevka-nerd-font
- Clone https://git.sr.ht/~protesilaos/iosevka-comfy and install those fonts
- Grab https://github.com/intel/intel-one-mono and install those fonts
- Grab “IntoneMono Nerd Font” and install https://www.nerdfonts.com/font-downloads
The following is necessary for getting Emacs up and running
brew install libgit2
- C-Library for Git that improves Emacs’s magit speed
brew install coreutils
- GNU file, shell, and text utilities
brew install mactex
- for LaTeX rendering (e.g., org mode exports)
ln -s $HB_PATH/bin/gls $HB_PATH/bin/ls
- This addresses ”ERROR: Listing directory failed but ‘access-file’ worked”
brew tap d12frosted/emacs-plus
brew install emacs-plus@30 --with-ctags --with-poll --with-debug --with-dbus --with-modern-pen-lds56-icon --with-native-comp --with-mailutils --with-imagemagick
Note: Once you have Emacs running (see install.rb
below), make sure to run M-x all-the-icons-install-fonts
.
In my Dotemacs repository, I have my preferred Emacs icon. It was generated by “AI”
Install Emacs LSP Booster.
brew install emacs-mac --with-dbus --with-glib --with-imagemagick --with-jansson --with-libxml2 --with-rsvg --with-mac-metal --with-native-comp --with-natural-title-bar --with-starter --with-emacs-sexy-icon
- Ruby
gem install solargraph
- YAML
npm install -global yaml-language-server
In http://mbork.pl/2017-01-14_I’m_now_using_the_right_dictionary the author speaks about using the 1918 Webster’s dictionary; in part to fill their reading and references with vibrant and living words.
brew install sdcv
- the translation
- Download https://s3.amazonaws.com/jsomers/dictionary.zip
- Create
~/.stardict/dic
- Copy the unzipped bz2 contents of the above download into
~/.stardict/dic
- Verify by running
sdcv -l
(there should be new dictionaries)
To add to Dictionary.app:
- Grab https://github.com/ponychicken/WebsterParser dictionary zip
- Open Dictionary.app > Edit > Open Dictionaries Folder and drag contents of above zip
- Restart Dictionary.app and re-arrange dictionary order.
ruby install.rb
to create various symlinks and set some MacOS defaults
npm install -g doctoc
- A markdown table of contents generator
Ensure that I have up to date SSH keys
For Github, need to create a new app token
https://karabiner-elements.pqrs.org/
Then set:
- Right option key to send ESC
- Caps lock to send CTRL
- Left shift + Right shift sends CAPS LOCK
Note the path needs to be absolute:
sudo plutil -insert Exclusions.0 -string /Users/jfriesen/git /System/Volumes/Data/.Spotlight-V100/VolumeConfiguration.plist
launchctl stop com.apple.metadata.mds
launchctl start com.apple.metadata.mds
The above is inspired from: https://alexwlchan.net/files/2021/ignore_folders_in_spotlight.py
See Hammerspoon/hammerspoon: Staggeringly powerful MacOS desktop automation with Lua.
For this to be most effective, I nee
Prior to Maccy Raycast, I used Jumpcut (brew cask install jumpcut
). The benefit of Raycast is that the multi-paste buffer is Rich Text aware. The downside? It’s venture capital funded, so expect enshitification.