macOS setup is a script for provisioning a machine running macOS with a focus on client-side development.
(Also an excuse to dig into Bash/ZSH).
It can be run multiple times on the same machine; installing, upgrading or skipping packages, as necessary.
Warning: Do not run this script unless you have a clear understanding of what it is doing to your computer.
It is recommended that you:
- Sign-in to your Apple iCloud account in the App Store application
- Uninstall any previous applications that you want to control via command-line. For example, anything listed in
install/appsandinstall/casks - Ensure that the Homebrew items for installation have checksum validation, cf. Security & Homebrew packages below
When installing anything via Homebrew's brew install command, be sure it includes a checksum for package validation.
- Review the formula's JSON API file to confirm the presence of a property named
sha256. It should contain a long string of alphanumeric characters - Any missing
sha256orsha256with a value"no_check"should NOT be installed via Homebrew; use a manual installation method (from an official source) instead
Homebrew will output a warning when installing a package without a checksum or a checksum of "no_check".
Download the script ZIP file from the latest release, or clone this Git repository:
git clone https://github.com/geniemouse/macos-setup.git && cd macos-setup
From the macos-setup directory, run command:
bash ./start...or for optional file logging:
bash ./start 2>&1 | tee -a ~/macos-setup-run_$(date +%F).logDependencies
- Xcode Developer Tools from Apple
- Homebrew macOS/Linux package manager
- NVM the Node version manager
- Allows use of different
node/npmJavaScript build environments between projects - Note: The Homebrew package is not supported by NVM team; using the official channel instead
- Allows use of different
Package managers & build tools
- Eclipse Temurin for switching between different Java JDK versions
- Git for version control
- Maven for project building
- Wget useful tool for getting internet files
CLI tools & utilities
- ffmpeg for video/audio manipulation on the command-line
- git-standup to recall what you did yesterday
- ImageOptim-CLI for batch optimising images
- mas to access Mac App Store
- Prettier for automated code formatting
- Vagrant development environments & sandboxes
Browsers
Design
- Affinity Designer vector graphics editor. Similar to Adobe Illustrator, without the subscription model
- Affinity Photo image editor. Similar to Adobe Photoshop, without the subscription model
- Inkscape Vector image editor. Very good at tracing raster input to SVG output
- Shottr annotated screenshots & sketches
Development
- Docker Desktop. Run environment configurations for development
- ImageOptim image optimisation
- iTerm 2 improved terminal
- Kaleidoscope powerful diff tool
- Karabiner-Elements a powerful and stable keyboard customiser for macOS
- Nova macOS native IDE
- Sublime Text IDE for Linux, Mac & PC
- Postman API building platform for designing, prototyping & sharing APIs
- Visual Studio Code IDE for Linux, Mac & PC
- xScope on-screen measuring tool
Reading, writing & communication
Utilities & services
- Alfred macOS helper for super-charged automation & shortcuts
- Encrypto encrypting files & folders
- HandBrake the open source video transcoder
- Microsoft Remote Desktop
- Pins for Pinboard macOS client for the Pinboard bookmarking service
- Reeder 5 RSS reader
- Renamer batch file renaming tool
- The Unarchiver more powerful archive unpacking tool
- TunnelBear VPN service for privacy or testing geolocation code
- VLC media player
Fonts are installed by tapping homebrew/cask-fonts listing.
On the command-line, run the following to see more information about font recipes:
- Currently installed font recipes:
brew list --cask | grep "font-*" - Full list available to install:
brew search --cask "/font-/"
Homebrew can't overwrite applications previously installed by other methods.
The Mac App Store command-line interface (mas) will fail to correctly recognise the App Store's logged-in status on systems running macOS 12.x.x (Monterey), and above. This is a known issue to the project. In the meantime, App Store purchases may have to be installed directly via the App Store application. Repeated runs of this setup script will update any installed apps.
Inspiration, code and other things from the following people.
- Mina Markham's Formation script
- thoughbot's Laptop
- Julia Evans for "Bite Size Bash" and other zines
Go and checkout their fine work.