Standard setup for mac
By: Casey, Kees
Tags: Terminal, Setup, Software, Mac, Installation

There’s one thing I love most of a new job, and one thing I don’t like at all — getting a new machine.

Or, worse, setting up the machine again once in a while, just so it feels more neat, or Apple decides to throw in a new update.

Or I screwed up — again, in the terminal or otherwise.

So to make that process simple, over the years I’ve developed a bit of a flow to get to where I want to be, setting up my machine and installing software.

/Please be aware that a lot of this contains the terminal. It can be a bit of a daunting environment at first, but once you get the hang of it, a lot faster than your regular mouse setup!/

Getting started with a new installation

So to actually get started, especially in an upgrade case, I usually start out completely fresh. For that I create a boot drive (A USB Drive works fine) using Apple’s createinstallmedia command you can find here; How to create a bootable installer for macOS - Apple Support

That allows me to:

Completely delete the contents of the original harddrive (of course make a Time Machine backup up front!) Install the OS new without relying on an internet connection through recovery.

Installing the standard software

Now while you’ve booted into your fresh clean OS, please make sure that you always update the OS first before continuing with the rest.

So. We’re here, ready for the terminal? Use spotlight (CMD+space) to find the terminal application and open it;

it looks a bit like above.

You know the ‘software upgrade’ feature to update your OS, you can do that quite easily from the terminal as well. Just type along;

To explain this a little bit;

The sudo part asks your computer to use the softwareupdate command with a bit more rights, so it allows you to install Mac OS updates for instance. The -ia part is as it’s called a ‘parameter’ or ‘flag’, in this case asking for the installation (the i part) of all (the a part) the available updates.

In case you’re interested, type softwareupdate —help to look at all the other available flags.

Homebrew / cask

Now things get really interesting. We’re going to dive into The Missing Package Manager for macOS (or Linux) — Homebrew. a.k.a. BREW.

In short, see (home)brew as a way to install applications directly onto your mac without any process of Google, click to download, getting the wrong link, finding an outdated version or forgetting what the program was called again.

I’m keeping a list of all my application and utilities that brew supports close to me, so I can always get going easily.

First step, install brew

On brew.sh you can find a quick installer on the top;

I’m being honest in not completely knowing what this command does, but it installs a lot of stuff including the brew package manager. From that moment on, the command brew will work in your terminal.

Second step, installing useful brew packages.

Of all packages available, I currently use five:

(You can use the entire script above completely if you’d like)

The difference between brew / homebrew is quite easily explained, ‘brew’ is only used for open source, free to use software, where homebrew also allows closed source applications to be installed, of course without the whole hassle of finding the software through other ways.

Third step, installing useful homebrew packages

This list has become quite extensive over the years, but in my installation consists of;

alfred

choosy

firefox

font-cascadia

font-cascadia-mono

font-cascadia-mono-pl

font-cascadia-pl

font-hack-nerd-font

font-ibm-plex

google-chrome

iina

iterm2

miro-formerly-realtimeboard

moom

onyx

pock

visual-studio-code

To find your software, type:

for firefox for instance.

It will how you exactly where to find firefox, and allows you to install it by typing:

mind you, this also includes the cask command, since it is an application, not an open source utility.

And well, you can do whatever you want of course in regards to finding applications.

Cool trick

You can actually add an entire list of stuff to install things one after the other, so for instance:

Will install firefox and chrome and iina (best mac media player)

Exceptions;

The only thing that doesn’t work that well are the adobe tools, photoshop and lightroom don’t let you install them that easily unfortunately.

Fourth step, installing Mac App Store packages through the terminal

I’m not sure if this is any quicker the first time you do it, because you need to find each unique ID belonging to each app, but boy is it quicker the second time you do it!

So, type along!

This will search for ‘things’, my favourite GTD app. It will return you a listing of apps that contain the word things, in my case for instance:

904280696 Things 3 (3.12)

966085870 TickTick: Things & Tasks To Do (3.4.52)

892274130 All Things Money Lite (1.4.0)

1107759193 Doo - Get Things Done (2.3.3)

782925777 All Things Money (1.4.0)

1020146983 Explain 3D How things work (2.4)

577932305 Todo Things (1.3)

435972315 The Next Big Thing - Lite (1.0)

430203668 The Next Big Thing (1.1)

All I need to do is take the number, and use it to install the application again, so:

and back to the cool trick

Will of course install all these apps. Currently I’m using:

So I will be fully ready by running:

Will install all of it! Nice huh!

For everyone keeping up to the end

A few additional tricks that I really like;

Using dockutil to clean out your dock with inactive applications: dockutil —remove all (but you can also use it to add your standard dock items) Using Onyx to get rid of a lot of standard stuff in my mac, like animations of the dock, transparency stuff and those kind of wacky things I use Setapp to install a bunch of other tools, that I just pay a monthly fee for. Usually these would be the kind of tools I don’t really need every day, but they are very useful from time to time.

Things that are still manual

Maybe you have an idea on how to make these things automated? Would be great to do so with ‘freeware’ / open source solutions like Brew! Let me know with a quick response!