Laptop is a script to set up an OS X computer for web 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.
- macOS Ventura (13.0.1)
Older versions may work but aren't regularly tested. Bug reports for older versions are welcome.
Download, review, then execute the script:
curl --remote-name https://raw.githubusercontent.com/xuncheng/laptop/master/mac
sh mac 2>&1 | tee ~/laptop.log
The script itself is available in this repo for you to review if you want to see what it does and how it works.
Note that the script will ask you to enter your OS X password at various points. This is the same password that you use to log in to your Mac.
Once the script is done, make sure to quit and relaunch Terminal.
Your last Laptop run will be saved to ~/laptop.log
. Read through it to see if
you can debug the issue yourself. If not, copy and paste the entire log into a
new GitHub Issue for us.
macOS tools:
- Homebrew for managing operating system libraries.
- Homebrew Cask for quickly installing Mac apps from the command line
- Homebrew Services so you can easily stop, start, and restart services
Unix tools:
- Exuberant Ctags for indexing files for vim tab completion
- Git for version control
- OpenSSL for Transport Layer Security (TLS)
- Selecta A fuzzy text selector for files and anything else you need to select.
- The Silver Searcher for finding things in files
- Tmux for saving project state and switching between projects
- Zsh as your shell
Image tools:
- ImageMagick for cropping and resizing images
Testing tools:
- Qt for headless JavaScript testing via Capybara Webkit
Programming languages and configuration:
- Bundler for managing Ruby libraries
- NVM for managing Node.js versions if you do not have Node.js already installed (Includes latest Node.js and NPM, for running apps and installing JavaScript packages)
- RVM for managing Ruby versions (includes Bundler and the latest Ruby)
- Ruby stable for writing general-purpose code
Databases:
- Redis for storing key-value data
It should take less than 15 minutes to install (depends on your machine and internet connection).
Your ~/.laptop.local
is run at the end of the Laptop script.
Put your customizations there.
For example:
#!/bin/sh
brew bundle --file=- <<EOF
brew "Caskroom/cask/dockertoolbox"
brew "go"
brew "ngrok"
brew "watch"
EOF
default_docker_machine() {
docker-machine ls | grep -Fq "default"
}
if ! default_docker_machine; then
docker-machine create --driver virtualbox default
fi
default_docker_machine_running() {
default_docker_machine | grep -Fq "Running"
}
if ! default_docker_machine_running; then
docker-machine start default
fi
fancy_echo "Cleaning up old Homebrew formulae ..."
brew cleanup
brew cask cleanup
if [ -r "$HOME/.rcrc" ]; then
fancy_echo "Updating dotfiles ..."
rcup
fi
Write your customizations such that they can be run safely more than once.
See the mac
script for examples.
Laptop functions such as fancy_echo
and
gem_install_or_update
can be used in your ~/.laptop.local
.
This laptop script is originally based on thoughtbot's laptop script.