GithubHelp home page GithubHelp logo

minamarkham / formation Goto Github PK

View Code? Open in Web Editor NEW
1.8K 13.0 174.0 4.59 MB

💻 macOS setup script for front-end development

Home Page: http://slay.sh

License: MIT License

Shell 100.00%
macos laptop development setup homebrew beyonce fresh-installs eleventy

formation's Introduction

🐝 Formation

Let's get in formation

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.

Install

Download the script:

git clone [email protected]/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! ✨

What it sets up

The setup process will install:

Basic tools:
Package Managers:
  • NVM for managing and installing multiple versions of Node.js and npm
  • Rbenv for managing versions of Ruby
  • Yarn for managing JavaScript packages
CLI Tools & Utilities:
  • asciinema for recording terminal sessions
  • Gulp the streaming build system
  • Hotel, a simple process manager for developers
  • Hub for interacting with the GitHub API
  • hugo, an open-source static site generator
  • ImageMagick to create, edit, compose, or convert bitmap images
  • mas Mac App Store command line interface
  • Tig text-mode interface for git
  • Vagrant for development environments

Apps

Productivity
  • Airmail for a better mail client.
  • Alfred for increased productivity and efficiency with macOS.
  • Fantastical for a better calendar.
  • Things for getting things done.
Development
Design
Communication
  • Bear for writing and previewing markdown.
  • Skype for free calls to friends and family.
  • Slack where work happens.
  • Ulysses for long-form writing.
Utilities
Miscellaneous
Browsers
  • Blisk for cross-device web development.
  • Brave for web browsing without ads.
  • Chrome for fast and free web browsing.
  • Firefox for web browsing and testing.
  • TorBrowser for super secret web browsing.

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).

🌶 Just add ~/.hot-sauce

I got hot sauce in my bag

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.

Known Issues

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.

Acknowledgements

Inspiration and code was taken from many sources, including:

📜 License

Formation is customized for my own needs. It is free software, and may be redistributed under the terms specified in the LICENSE file.

formation's People

Contributors

bentsai avatar karlhorky avatar mikeyavorsky avatar minamarkham avatar natedunn avatar runofthemill avatar signalnine avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

formation's Issues

Encountered an error with `sh` install

Hi Mina!
First of all, thank you so much for this wonderful tool! I think you just saved me hours.

I had a problem installing, following the readme instructions. When I switched incidences of sh to bash everything worked as expected. Not sure if its user error on my part. I'm on a brand new MacBook Pro and using Hyper as the terminal.

Thanks! 🐝

NVM install errors on new machine

Thank you so much for putting this together! I was wondering if this is safe for running on a fresh machine. First, always skips the NVM install, thinking it's already installed. If I switch the check to mimic the MAS install (placing the skip message after the if statement and moving the install steps after the else statement), it works. Also, should regular dotfiles like .bash_profile be created or cloned and synced first? When this is run on a fresh machine, the NVM install step errors when trying to add the path.

(Question) extending / configuring

This looks like a great tool for setting up new developer machines, and I really want to start using it myself.

How would you recommend I use formation within a team setting? I'd like to be able to customise the apps to be installed, and maybe extend with some different types of installation applicable to my team members.

I could fork this repo and just customise there, but would prefer not to diverge from this repo!

I've seen the example customisation script, but as that's initially written to the user's home directory, it could be tricky to keep that synced between team members.

Ideally I'd like to start a private repo with scripts which reference formation, and simply extend with our own functionality.

I don't know if anyone else has tried something like this, but I'd appreciate any guidance or discussion anyone might have to offer!

Dr Cleaner Pro Plus removed?

I noticed the link in the README to https://www.drcleaner.com/ isn't working (503 error), and a bit of research makes it look like perhaps this app is removed from the app store for spying on users? I am not sure if the Dr Cleaner Pro Plus from the formation scripts is the same as the one mentioned in this article, so I might be incorrect: https://9to5mac.com/2018/09/09/additional-mac-app-store-apps-caught-stealing-and-uploading-browser-history/. I haven't yet tried running slay to confirm that it is not there, though.

Failed at Dropbox check

Trying this out and everything was going well until it got to Dropbox.

As I already have that installed I expected it to skip, but it failed at that point with this error in the log.
`ESC(BESC[m [↓] Installing dropbox Error: It seems there is already an App at '/Applications/Dropbox.app'.

 Formation failed `

Any ideas?

Quick Question

Hi There!

I love the script and am adapting a version for myself but I was trying to figure out why the script uninstalls brew-cask. I am sorry to bug you about this and I apologize if an issue is not the correct way to reach out.
Link to the start of the uninstalling:

formation/slay

Line 131 in e337cfe

if brew list | grep -Fq brew-cask; then

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.