Laptop
Laptop is a script to set up a macOS laptop for web and mobile 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.
This fork and branch in particular contains modifications to the original https://github.com/thoughtbot/laptop, the main difference is the removal of Ruby, Datbases and Heroku as well as adding some extra asdf plugins for the current work I do, Java, Go, Bazel.
Requirements
We support:
- macOS Mojave (10.14)
- macOS Catalina (10.15)
- macOS Big Sur (11)
Older versions may work but aren't regularly tested. Bug reports for older versions are welcome.
Install
Download the script:
curl --remote-name https://raw.githubusercontent.com/gssbzn/laptop/mongodb/mac
Review the script (avoid running scripts you haven't read!):
less mac
Execute the downloaded script:
sh mac 2>&1 | tee ~/laptop.log
Optionally, review the log:
less ~/laptop.log
Debugging
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 the lines where the script failed into a
new GitHub Issue for us.
Or, attach the whole log file as an attachment.
What it sets up
macOS tools:
- Homebrew for managing operating system libraries.
Unix tools:
- OpenSSL for Transport Layer Security (TLS)
- RCM for managing company and personal dotfiles
- The Silver Searcher for finding things in files
- Tmux for saving project state and switching between projects
- Watchman for watching for filesystem events
- Zsh as your shell
GitHub tools:
- GitHub CLI for interacting with the GitHub API
Image tools:
- ImageMagick for cropping and resizing images
Programming languages, package managers, and configuration:
- asdf-vm for managing programming language versions
- Node.js and npm asdf plugin
- Java asdf plugin
- golang asdf plugin
- Bazel asdf plugin
- Yarn for managing JavaScript packages
Databases:
- [mongshell] for storing relational data
- MongoDB asdf plugin
~/.laptop.local
Customize in 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
.
See the wiki for more customization examples.
Contributing
Edit the mac
file.
Document in the README.md
file.
Follow shell style guidelines by using ShellCheck and Syntastic.
brew install shellcheck
Thank you, contributors!
By participating in this project, you agree to abide by the thoughtbot code of conduct.
License
Laptop is © 2011-2020 thoughtbot, inc. It is free software, and may be redistributed under the terms specified in the LICENSE file.