My dotfiles. Aka, my preferred configuration for things on my Macs.
That doesn't mean I use identical configs everywhere (differentiation can be nice!) but most all of these things are kept the same for smooth operation.
Having Homebrew will make your life a lot easier going forward.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"zshell is now default with macOS and this step is probably skippable for future me, but just in case it's not around for some reason:
brew install zshoh-my-zsh is a framework for making zshell nicer.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"iTerm2 is just better than the default Terminal.app. Better to install that first and switch to it for the next steps.
brew install --cask iterm2Installs:
- bat, a cooler version of
cat - git-delta, nicer git diffs, goes well with bat
- powerlevel10k, my preferred zsh theme
- stow, a symlinker tool
- zoxide, it's
cdwith loose matching - node v22
brew install bat git-delta node@22 powerlevel10k stow zoxideSkip following any of the powerlevel10k set up instructions. A p10k configuration will be imported in the next steps.
git clone https://github.com/querkmachine/dotfiles.git ~/dotfiles
cd ~/dotfiles
stow .Why trawl through menus of stuff when you can do stuff with terminal commands?
macOS has an extra layer of security when touching parts of the OS that even sudo cannot overcome.
To overcome them, go to System Settings → Privacy → Full Disk Access and grant whatever terminal application is being used that permission. The terminal will need to be restarted.
cd ~/dotfiles
sh macos-config.shThere might be a few warnings and maybe a few errors (it's not uncommon for these commands to change between macOS versions) but the script should keep running regardless.
There are other Homebrew utilities I tend to have installed. They aren't required for getting started on a new computer, but they are referenced by the zsh configuration, so probably a good idea to have them anyway.
- yt-dlp, for downloading video
- ffmpeg, for video and audio conversion
- imagemagick, for image conversion
- gitmoji, for annotating git commits with ✨fun✨
- nvm, for managing Node versions
- pyenv, for managing Python versions
- chruby, for managing Ruby versions
brew install yt-dlp ffmpeg imagemagick gitmoji nvm pyenv chrubyCasks are more akin to full desktop applications rather than command line programs, and need to be installed slightly differently. This command installs:
- 1Password
- Raycast
- Karabiner-Elements
- Arc
- Firefox
- Chrome
- Edge
- Discord
- Telegram (macOS version)
- Nova
- Sublime Text
brew install --cask 1password raycast karabiner-elements arc firefox google-chrome microsoft-edge discord telegram nova sublime-textTo update the dotfiles, simply pull the latest changes to the repo and run the stow command again.
cd ~/dotfiles
git pull origin main
stow .Updates for Brew, Ruby, npm and macOS have all been bundled into a single command within the .zshrc file.
updateThis will ask for sudo permissions as they are required for updating some Rubygems and macOS itself.