/scripts

A shell script to set up macOS for dev (+ other utilities)

Primary LanguageShell

scripts

My scripts for bootstrapping a dev environment on a fresh macOS installation.

What it sets up

Somewhat Sane Defaults:

  • The OS X defaults file is heavily commented so you can take out the parts you don’t want

Tools:

Apps:

Install

  1. Clone this repo anywhere on your machine
  2. Read the scripts! osx.sh in particular does a lot of opinonated stuff to your machine
  3. Run sh bootstrap/bootstrap.sh

That’s it! Altogether it takes around 20 minutes.

What it does

Symlinks

Upon bootstrap, this script generates an SSH key and uses it to install my dotfiles repo.

If you configure this on your own dotfiles repo, be warned that this script will symlink every file and folder you have in there to your home directory, unless:

  1. it’s an .org or .md file
  2. it lives inside the .excludes/ directory (files you need/want to install manually here)
  3. it’s something you’d probably add to a /.gitignore file (for example /.DS_Store)

This can lead to surprising behavior if you’re not expecting it.

See excluded files regex to alter this behavior.

Brew install

Homebrew installs a bunch of packages and applications for you.

See brew.sh to change what will be installed. Note that Cask will force app installs.

Meaning if an app already exists in your Applications folder, it will be removed and reinstalled. This will ensure you get the latest version, but might also lose that app’s config.

Debugging

See the Postinstall Checklist if something goes wrong (or if you’re looking to do more advanced config).

Known Issues:

TODO: oh-my-fish gets excited sometimes and interrupts

During shell configuration, sometimes OMF will decide to launch fish, interrupting the process.

This doesn’t break anything, you just have to run the bootstrap script again (I’d skip the SSH and Homebrew steps the 2nd time around).

TODO: fix fzf being fishy.

If fzf doesn’t work right away after configuring fish, try making sure Oh My Fish is up to date and on the dev channel by doing:

$ omf channel dev

$ omf update

You’ll know it’s working if you can hit ^+R or ^+F to search through history, or find a file.