{"id":13563706,"url":"https://github.com/minamarkham/formation","last_synced_at":"2025-05-14T11:10:04.993Z","repository":{"id":45413331,"uuid":"141380542","full_name":"minamarkham/formation","owner":"minamarkham","description":"💻 macOS setup script for front-end development","archived":false,"fork":false,"pushed_at":"2025-03-22T06:25:32.000Z","size":5306,"stargazers_count":1777,"open_issues_count":8,"forks_count":172,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-05-12T15:09:54.123Z","etag":null,"topics":["beyonce","development","eleventy","fresh-installs","homebrew","laptop","macos","setup"],"latest_commit_sha":null,"homepage":"http://slay.sh","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/minamarkham.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-07-18T04:21:55.000Z","updated_at":"2025-05-07T00:23:33.000Z","dependencies_parsed_at":"2022-08-22T00:40:25.492Z","dependency_job_id":"0c28cf15-f882-45f7-829a-b0d186d6ee66","html_url":"https://github.com/minamarkham/formation","commit_stats":{"total_commits":13,"total_committers":9,"mean_commits":"1.4444444444444444","dds":0.6153846153846154,"last_synced_commit":"70a331a4d440eb840a19f972602211ed9d18d374"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minamarkham%2Fformation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minamarkham%2Fformation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minamarkham%2Fformation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minamarkham%2Fformation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/minamarkham","download_url":"https://codeload.github.com/minamarkham/formation/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254129489,"owners_count":22019628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beyonce","development","eleventy","fresh-installs","homebrew","laptop","macos","setup"],"created_at":"2024-08-01T13:01:22.432Z","updated_at":"2025-05-14T11:10:04.924Z","avatar_url":"https://github.com/minamarkham.png","language":"Shell","readme":"# 🐝 Formation \u003ca href=\"https://www.patreon.com/minamarkham\"\u003e\u003cimg src=\"https://c5.patreon.com/external/logo/become_a_patron_button@2x.png\" width=\"100\"\u003e\u003c/a\u003e\n\n![Let's get in formation](assets/formation.gif)\n\u003e Formation is a shell script to set up a macOS laptop for design and development.\n\nIt 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.\n\n## Install\n\nDownload the script:\n\n```sh\ngit clone git@github.com/minamarkham/formation.git \u0026\u0026 cd formation\n```\n\nReview the script (please don't run scripts you don't understand):\n\n```sh\nless slay\n```\n\nSlay:\n\n```sh\ncd formation\n./slay 2\u003e\u00261 | tee ~/slay.log\n```\nJust follow the prompts and you’ll be fine. 👌\n\n:warning: Warning: I advise against running [this script](slay) unless you understand what it’s doing to your computer.\n\nI created this based on my own preferences; your mileage may vary.\n\nOnce the script is done, quit and relaunch Terminal.\n\nIt is highly recommended to run the script regularly to keep your computer up to date.\n\nYour last Formation run will be saved to `~/slay.log`. To review it, run `less ~/slay.log`.\n\nThat's it! :sparkles:\n\n## What it sets up\nThe setup process will install:\n\n\u003cdetails\u003e\n\u003csummary\u003eBasic tools:\u003c/summary\u003e\n\n* [XCode Command Line Tools](https://developer.apple.com/xcode/downloads/) for developer essentials.\n* [Bash-it](https://github.com/Bash-it/bash-it/), for a more powerful bash.\n* [Git](https://git-scm.com/) for version control\n* [Homebrew](http://brew.sh/) for managing operating system libraries.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003ePackage Managers:\u003c/summary\u003e\n\n* [NVM](https://github.com/creationix/nvm/) for managing and installing multiple versions of [Node.js](http://nodejs.org/) and [npm](https://www.npmjs.org/)\n* [Rbenv](https://github.com/sstephenson/rbenv) for managing versions of Ruby\n* [Yarn](https://yarnpkg.com/en/) for managing JavaScript packages\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eCLI Tools \u0026 Utilities:\u003c/summary\u003e\n\n* [asciinema](https://asciinema.org/) for recording terminal sessions\n* [Gulp](https://gulpjs.com/) the streaming build system\n* [Hotel](https://github.com/typicode/hotel), a simple process manager for developers\n* [Hub](http://hub.github.com/) for interacting with the GitHub API\n* [hugo](https://gohugo.io/), an open-source static site generator\n* [ImageMagick](http://www.imagemagick.org/) to create, edit, compose, or convert bitmap images\n* [mas](https://github.com/mas-cli/mas) Mac App Store command line interface\n* [Tig](https://github.com/jonas/tig) text-mode interface for git\n* [Vagrant](https://www.vagrantup.com/) for development environments\n\u003c/details\u003e\n\n### Apps\n\n\u003cdetails\u003e\n\u003csummary\u003eProductivity\u003c/summary\u003e\n\n* [Airmail](http://airmailapp.com/) for a better mail client.\n* [Alfred](https://www.alfredapp.com/) for increased productivity and efficiency with macOS.\n* [Fantastical](https://flexibits.com/fantastical) for a better calendar.\n* [Things](https://culturedcode.com/things/) for getting things done.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eDevelopment\u003c/summary\u003e\n\n* [Dash](https://kapeli.com/dash) offline access to API documentation sets\n* [ForkLift](https://www.binarynights.com/forklift/) FTP client\n* [Hyper](https://hyper.is/) for an alternative terminal.\n* [ImageOptim](https://imageoptim.com/mac) for image optimization.\n* [iTerm](https://www.iterm2.com/) for a better terminal.\n* [Kaleidoscope](https://www.kaleidoscopeapp.com/) for a better diff tool.\n* [Virtual Box](https://www.virtualbox.org/) powerful virtualization tool\n* [Visual Studio Code](https://code.visualstudio.com/) IDE\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eDesign\u003c/summary\u003e\n\n* [Affinity Designer](https://affinity.serif.com/en-us/designer/)\n* [Affinity Photo](https://affinity.serif.com/en-us/photo/)\n* [Sip](http://sipapp.io/) collect, organize \u0026 share your colors\n* [Sketch](https://www.sketchapp.com/) for design.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eCommunication\u003c/summary\u003e\n\n* [Bear](http://www.bear-writer.com/) for writing and previewing markdown.\n* [Skype](https://www.skype.com/en/) for free calls to friends and family.\n* [Slack](https://slack.com/) where work happens.\n* [Ulysses](https://ulyssesapp.com/) for long-form writing.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eUtilities\u003c/summary\u003e\n\n* [1Password](https://1password.com/) for password management.\n* [Dropbox](https://www.dropbox.com) for cloud file storage.\n* [Divvy](http://mizage.com/divvy/) for better window management.\n* [Encrypto](https://macpaw.com/encrypto) for securing files.\n* [ExpressVPN](https://www.expressvpn.com/) for privacy.\n* [HyperDock](https://bahoom.com/hyperdock/)\n* [Karabiner](https://pqrs.org/osx/karabiner/) for keyboard mapping.\n* [Renamer](https://renamer.com/) for easy file renaming.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eMiscellaneous\u003c/summary\u003e\n\n* [Gifox](https://gifox.io/) for GIF making.\n* [Rocket](http://matthewpalmer.net/rocket/) for Slack-like emojis.\n* [Spotify](https://www.spotify.com/) for music.\n* [VLC](http://www.videolan.org/) for a better media player.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eBrowsers\u003c/summary\u003e\n\n* [Blisk](https://blisk.io/) for cross-device web development.\n* [Brave](https://brave.com/) for web browsing without ads.\n* [Chrome](https://www.google.com/chrome/browser/desktop/) for fast and free web browsing.\n* [Firefox](https://www.mozilla.org/en-US/firefox/new/) for web browsing and testing.\n* [TorBrowser](https://www.torproject.org/projects/torbrowser.html.en) for super secret web browsing.\n\u003c/details\u003e\n\n\u003csub\u003eSee [`swag`](swag) for the full list of apps that will be installed. Adjust it to your personal taste.\u003c/sub\u003e\n\nIt should take less than 20 minutes to install (depends on your machine).\n\n## 🌶 Just add `~/.hot-sauce`\n\n![I got hot sauce in my bag](assets/hot-sauce.gif)\n\nYour `~/.hot-sauce` is added at the end of the Formation script. Put your customizations there.\nFor example:\n\n```sh\n#!/usr/bin/env bash\n\nSETUP_ROOT=$HOME/.setup\n\nNERDFONTS_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/ryanoasis/nerd-fonts/releases/latest)\nNERDFONTS_VERSION=$(get_github_version $NERDFONTS_RELEASE)\n\nDIRECTORIES=(\n    $HOME/Desktop/code\n    $HOME/Desktop/design\n    $HOME/Desktop/*dump\n    $HOME/Desktop/GIFs\n    $HOME/Desktop/projects\n    $HOME/Desktop/screenshots\n)\n\nNERDFONTS=(\n    SpaceMono\n    Hack\n    AnonymousPro\n    Inconsolata\n)\n\nstep \"Making directories…\"\nfor dir in ${DIRECTORIES[@]}; do\n    mkd $dir\ndone\n\nstep \"Installing fonts…\"\nfor font in ${NERDFONTS[@]}; do\n    if [ ! -d ~/Library/Fonts/$font ]; then\n        printf \"${indent}  [↓] $font \"\n        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\n        print_in_green \"${bold}✓ done!${normal}\\n\"\n    else\n        print_muted \"${indent}✓ $font already installed. Skipped.\"\n    fi\ndone\n```\n\nWrite your customizations such that they can be run safely more than once.\nSee the `slay` script for examples.\n\nFormation functions such as `step` and `link` can be used in your `~/.hot-sauce`.\n\n## Known Issues\nCask 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.\n\n## Acknowledgements\n\nInspiration and code was taken from many sources, including:\n\n* [Mathias Bynens'](https://github.com/mathiasbynens) [dotfiles](https://github.com/mathiasbynens/dotfiles)\n* thoughtbot's [laptop](https://github.com/thoughtbot/laptop/)\n\n## 📜  License\n\nFormation is customized for my own needs. It is free software, and may be redistributed under the terms specified in the [LICENSE] file.\n\n[LICENSE]: LICENSE\n","funding_links":["https://www.patreon.com/minamarkham"],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminamarkham%2Fformation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fminamarkham%2Fformation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminamarkham%2Fformation/lists"}