FoRmation is a shell script to set up a macOS laptop for design, development, and R. It is entirely based on Mina Markham's excellent Formation. 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/ajaypillarisetti/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.
Mina created this based on her own preferences; I updated it to include things I need for work, including R, Creative Cloud, and other stuff. Your mileage will 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
.
The setup process will install:
Basic tools:
- XCode Command Line Tools for developer essentials.
- Bash-it, for a more powerful bash.
- Git for version control
- Homebrew for managing operating system libraries.
CLI Tools & Utilities:
Productivity
- Alfred for increased productivity and efficiency with macOS.
- Better Blocker for privacy.
- Endnote for citation management.
- Fantastical for a better calendar.
- iWork mainly for Keynote
- Magnet for managing windows on your Mac.
- Microsoft Office
- Papers for better citation management.
- Soulver for a better calculator.
- Spark for a better mail client.
- Things for getting things done.
- Toggl for tracking time.
- Tweetbot for non-productivity.
Development
- Apple Remote Desktop lol check out that website.
- BasicTex for a smaller TeX installation.
- Coda for old-school web development.
- Kaleidoscope for a better diff tool.
- Launch Control a GUI for controling launchd.
- Parallels for virtualization. Expensive, worth it?
- R
- R-Studio Sometimes you need it.
- Reggy for testing regular expressions.
- SequelPro for MySQL/Maria management.
- Sublime Text for Ajay's favorite text editor.
- Transmit The best FTP client
- XQuartz
Design
- Adobe Creative Cloud
- Sip collect, organize & share your colors
- Sketch for design.
Utilities
Miscellaneous
* [Beamer](https://beamer-app.com) for sending video from your mac to other screens. * [Handbrake](https://handbrake.fr) for encoding video. * [Kindle](https://apps.apple.com/us/app/kindle/id405399194?mt=12) * [NetNewsWire](https://ranchero.com/netnewswire/) the once and future king of RSS readers. * [Plex Media Player](https://www.plex.tv/blog/introducing-the-plex-media-player/) for accessing remove media libraries. * [VLC](http://www.videolan.org/) for a better media player.R Packages
- assertthat
- data.table
- dbplyr
- doMC
- dplyr
- DT
- dygraphs
- ggplot2
- httr
- knitr
- lubridate
- magrittr
- nlme
- plyr
- purrr
- readxl
- reshape2
- rsconnect
- shiny
- shiny.semantic
- shinydashboard
- shinyjs
- stringr
- testthat
- tidyr
- tint
- tufte
- writexl
- zoo
Also installed all of the package dependencies. Currently writtent to support only packages on CRAN.
Your ~/.hot-sauce
is added at the end of the FoRmation script. Put your customizations there.
For example:
#!/usr/bin/env bash
NERDFONTS_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/ryanoasis/nerd-fonts/releases/latest)
NERDFONTS_VERSION=$(get_github_version $NERDFONTS_RELEASE)
NERDFONTS=(
SpaceMono
Hack
AnonymousPro
SourceCodePro
Inconsolata
)
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
step "Installing R Packages"
for package in $(<$cwd/swag/rpackages); do
if [ ! -d /Library/Frameworks/R.framework/Versions/Current/Resources/library/$package ]; then
printf "${indent} [↓] $package "
Rscript ~/Documents/formation-pillarisetti/swag/install_packages.R $package
print_in_green "${bold}✓ done!${normal}\n"
else
print_muted "${indent}✓ $package already installed. Skipped."
fi
done
Write your customizations such that they can be run safely more than once.
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.