I recently had to replace my Macbook Pro because my screen broke had to go over my entire new-machine configuration experience again. I wanted to use this time to document what I do when I set up a new computer!
brew as a package manager so that is one of the first things I install when I get a new machine.
Then I usually follow the guide that I have in my dotfiles repo. It usually involves installing a lot of my commonly installed packages first like
kitty, my patched nerd font, etc. I'll go over each one of them specifically.
I install tools like
fzf, and more for convenience. I feel like although not necessary, it enhances my shell experience.
stow for dotfile management. If you look in my dotfiles repo, I have specific directories for my ssh configs, for my git configs, etc. I can easily grab them and put them in their proper spots by running
stow ssh for example, which will take the
ssh directory and symlink all the files to the right places, but keep the originals in my git repo for version control.
kitty as my terminal emulator. I've tried using iTerm2 and Alacritty, but I ended up sticking with kitty because of its simplicity and that all of its configs were in a file which could be version controlled in git! I really like how it supports borderless windows in OS X as well as have easy options to use custom fonts and ligatures.
GPG key management
I historically went down a rabbit hole on how to do this. I've tried creating a master key then issuing subkeys which I put on my yubikey, but I ultimately ended up settling on Keybase to store my GPG keys for convenience. Keybase has a very easy to use CLI that allows me to export my keys and makes it really easy to use when provisioning a new machine.
Nerd Fonts are awesome because they incorporate a bunch of special characters into your font. This makes it really nice to use with a plugin like devicons and it also includes powerline glyphs so it also makes me terminal status line pretty as well!
I originally started off during window management tools in OS X like SizeUp, and eventually upgraded to using Amethyst. However, I ultimately settled on yabai/skhd. The closest comparison is i3, which I really enjoy using in Linux as well. I love how the entire configuration is in a file (which can be version controlled). Another feature I really like is focus_follows_mouse, which makes the focus follow where ever the mouse cursor is. I think this saves a lot of clicks when I do need to use a mouse.
With the following tools, I feel like I've covered the main parts of my OS X workspace. I'm always looking for better and more efficient ways to use my computer, so please let me know if you have any suggestions!