💻 macOS setup script for front-end development
See the code

Formation is a shell script to set up a macOS laptop for design and development.
It can be run multiple times on the same machine safely. It installs, upgrades, or skips packages based on what is already installed on the machine.
Download the script:
git clone git@github.com/minamarkham/formation.git && cd formation
Review the script (please don't run scripts you don't understand):
less slay
Slay:
cd formation
./slay 2>&1 | tee ~/slay.log
Just follow the prompts and you’ll be fine. 👌
⚠️ Warning: I advise against running this script unless you understand what it’s doing to your computer.
I created this based on my own preferences; your mileage may vary.
Once the script is done, quit and relaunch Terminal.
It is highly recommended to run the script regularly to keep your computer up to date.
Your last Formation run will be saved to ~/slay.log. To review it, run less ~/slay.log.
That's it! ✨
The setup process will install:
See swag for the full list of apps that will be installed. Adjust it to your personal taste.
It should take less than 20 minutes to install (depends on your machine).
~/.hot-sauce
Your ~/.hot-sauce is added at the end of the Formation script. Put your customizations there.
For example:
#!/usr/bin/env bash
SETUP_ROOT=$HOME/.setup
NERDFONTS_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/ryanoasis/nerd-fonts/releases/latest)
NERDFONTS_VERSION=$(get_github_version $NERDFONTS_RELEASE)
DIRECTORIES=(
$HOME/Desktop/code
$HOME/Desktop/design
$HOME/Desktop/*dump
$HOME/Desktop/GIFs
$HOME/Desktop/projects
$HOME/Desktop/screenshots
)
NERDFONTS=(
SpaceMono
Hack
AnonymousPro
Inconsolata
)
step "Making directories…"
for dir in ${DIRECTORIES[@]}; do
mkd $dir
done
step "Installing fonts…"
for font in ${NERDFONTS[@]}; do
if [ ! -d ~/Library/Fonts/$font ]; then
printf "${indent} [↓] $font "
wget -P ~/Library/Fonts https://github.com/ryanoasis/nerd-fonts/releases/download/$NERDFONTS_VERSION/$font.zip --quiet;unzip -q ~/Library/Fonts/$font -d ~/Library/Fonts/$font
print_in_green "${bold}✓ done!${normal}\n"
else
print_muted "${indent}✓ $font already installed. Skipped."
fi
done
Write your customizations such that they can be run safely more than once.
See the slay script for examples.
Formation functions such as step and link can be used in your ~/.hot-sauce.
Cask does not recognize applications installed outside of Homebrew Cask – in the case that the script fails, you can either remove the application from the install list or uninstall the application causing the failure and try again.
Inspiration and code was taken from many sources, including:
Formation is customized for my own needs. It is free software, and may be redistributed under the terms specified in the LICENSE file.
1,120 followers · starred Jan 2026
1,573 followers · starred Sep 2018
49 followers · starred Jul 2019
2,395 followers · starred Jul 2020
💻 macOS setup script for front-end development
See the code

Formation is a shell script to set up a macOS laptop for design and development.
It can be run multiple times on the same machine safely. It installs, upgrades, or skips packages based on what is already installed on the machine.
Download the script:
git clone git@github.com/minamarkham/formation.git && cd formation
Review the script (please don't run scripts you don't understand):
less slay
Slay:
cd formation
./slay 2>&1 | tee ~/slay.log
Just follow the prompts and you’ll be fine. 👌
⚠️ Warning: I advise against running this script unless you understand what it’s doing to your computer.
I created this based on my own preferences; your mileage may vary.
Once the script is done, quit and relaunch Terminal.
It is highly recommended to run the script regularly to keep your computer up to date.
Your last Formation run will be saved to ~/slay.log. To review it, run less ~/slay.log.
That's it! ✨
The setup process will install:
See swag for the full list of apps that will be installed. Adjust it to your personal taste.
It should take less than 20 minutes to install (depends on your machine).
~/.hot-sauce
Your ~/.hot-sauce is added at the end of the Formation script. Put your customizations there.
For example:
#!/usr/bin/env bash
SETUP_ROOT=$HOME/.setup
NERDFONTS_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/ryanoasis/nerd-fonts/releases/latest)
NERDFONTS_VERSION=$(get_github_version $NERDFONTS_RELEASE)
DIRECTORIES=(
$HOME/Desktop/code
$HOME/Desktop/design
$HOME/Desktop/*dump
$HOME/Desktop/GIFs
$HOME/Desktop/projects
$HOME/Desktop/screenshots
)
NERDFONTS=(
SpaceMono
Hack
AnonymousPro
Inconsolata
)
step "Making directories…"
for dir in ${DIRECTORIES[@]}; do
mkd $dir
done
step "Installing fonts…"
for font in ${NERDFONTS[@]}; do
if [ ! -d ~/Library/Fonts/$font ]; then
printf "${indent} [↓] $font "
wget -P ~/Library/Fonts https://github.com/ryanoasis/nerd-fonts/releases/download/$NERDFONTS_VERSION/$font.zip --quiet;unzip -q ~/Library/Fonts/$font -d ~/Library/Fonts/$font
print_in_green "${bold}✓ done!${normal}\n"
else
print_muted "${indent}✓ $font already installed. Skipped."
fi
done
Write your customizations such that they can be run safely more than once.
See the slay script for examples.
Formation functions such as step and link can be used in your ~/.hot-sauce.
Cask does not recognize applications installed outside of Homebrew Cask – in the case that the script fails, you can either remove the application from the install list or uninstall the application causing the failure and try again.
Inspiration and code was taken from many sources, including:
Formation is customized for my own needs. It is free software, and may be redistributed under the terms specified in the LICENSE file.
1,120 followers · starred Jan 2026
1,573 followers · starred Sep 2018
49 followers · starred Jul 2019
2,395 followers · starred Jul 2020