Please note that this specific repo is a customised version of the original project by @minamarkham. All props go to her! 👏🏻
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 and review it (please don't run scripts you don't understand):
git clone git@github.com/gnclmorais/formation.git && cd formation && less slay
Slay:
git clone git@github.com/gnclmorais/formation.git && cd formation && ./slay 2>&1 | tee ~/slay.log
As an alternative, if you are setting up a new MacBook, git
is not likely to be installed yet so you can instead:
curl -L -o formation.zip -k https://github.com/gnclmorais/formation/archive/gnclmorais.zip \
&& unzip formation.zip \
&& rm formation.zip \
&& mv formation-gnclmorais formation \
&& cd formation \
&& bash ./slay 2>&1 | tee ~/slay.log
Just follow the prompts and you’ll be fine. 👌
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:
Basic tools:
- XCode Command Line Tools for developer essentials.
- fish, the friendly interactive shell.
- Git for version control
- Homebrew for managing operating system libraries.
Package Managers:
CLI Tools & Utilities:
- asciinema for recording terminal sessions.
- ImageMagick to create, edit, compose, or convert bitmap images.
- mas Mac App Store command line interface.
Productivity
Development
- Dash offline access to API documentation sets.
- Insomnia to document and test APIs.
- iTerm for a better terminal.
- PostgreSQL for powerful databases.
- Postico, a modern PostgreSQL client.
- Sublime Text for development.
- Visual Studio Code for more development.
- Virtual Box powerful virtualization tool.
Design
- ColorSlurp for a great color picker.
- ImageOptim for image optimization.
Communication
Utilities
- AppCleaner for tidier uninstallations.
- KeepingYouAwake to prevent the screen from sleeping.
- NordVPN for privacy.
- Rectangle for better window management.
- The Unarchiver to unpack any archive.
- Transmission for fast, easy, free torrents.
Miscellaneous
- coconutBattery for improved battery stats.
- Disc Inventory X for simple disc space management.
- Fliqlo for a sweet flip clock screensaver.
- GIPHY Capture for GIF making.
- Irvue to get great random background.
- Overkill to prevent iTunes from opening when media keys are pressed.
- Rocket for Slack-like emojis.
- Sonos for music around the house.
- Spotify for music.
- Vanilla to hide menu bar icons.
- VLC for a better media player.
Browsers
- Brave for web browsing without ads.
- Chrome for fast and free web browsing.
- Chrome Canary for tomorrow’s web.
- Firefox Developer Edition for a better and edgy web.
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).
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/Documents/__tmp
$HOME/Documents/_dev
$HOME/Documents/_downloads
$HOME/Documents/_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:
- Mathias Bynens' dotfiles
- thoughtbot's laptop
Formation is customized for my own needs. It is free software, and may be redistributed under the terms specified in the LICENSE file.