HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
thoughtbot
laptop
Shell2012–2021
thoughtbot / laptop

laptop

A shell script to set up a macOS laptop for web and mobile development.

22Distinct people
23Mentions
0Explicit recommenders
8.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A shell script to set up a macOS laptop for web and mobile development.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year23 dated mentions

Observed mentions: 2012-03-28 21:31:30 UTC to 2021-12-13 09:11:21 UTC.

0123452012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments20122013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 5 mentions; 2 submissions, 3 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC505
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC101
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC404
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC523
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC514
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC000
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC211
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
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. Requirements We support: macOS Tahoe (26.x) on Apple Silicon and Intel macOS Sequoia (15.x) on Apple Silicon and Intel macOS Sonoma (14.x) on Apple Silicon and Intel macOS Ventura (13.x) on Apple Silicon and Intel 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/thoughtbot/laptop/main/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 Optionally, install thoughtbot/dotfiles. 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: fzf for better command history searching Universal Ctags for indexing files for vim tab completion Git for version control 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 Heroku tools: Heroku CLI and Parity for interacting with the Heroku API 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 Bundler for managing Ruby libraries Node.js and npm, for running apps and installing JavaScript packages Ruby stable for writing general-purpose code Yarn for managing JavaScript packages Rosetta 2 for running tools that are not supported in Apple silicon processors Databases: Postgres for storing relational data Redis for storing key-value data It should take less than 15 minutes to install (depends on your machine). Customize in ~/.laptop.local 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 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 Thank you, contributors! By participating in this project, you agree to abide by the thoughtbot code of conduct. Edit the mac file. Document in the README.md file. Update the CHANGELOG. Follow shell style guidelines by using ShellCheck and ALE or deprecated Syntastic. brew install shellcheck Testing your changes Test your changes by running the script on a fresh install of macOS. You can use the free and open source emulator UTM. Tip: Make a fresh virtual machine with the installation of macOS completed and your user created and first launch complete. Then duplicate that machine to test the script each time on a fresh install that's ready to go. License Copyright © 2011 thoughtbot, inc. It is free software, and may be redistributed under the terms specified in the LICENSE file. About thoughtbot This repo is maintained and funded by thoughtbot, inc. The names and logos for thoughtbot are trademarks of thoughtbot, inc. We love open source software! See our other projects. We are available for hire.
Read the full README on GitHub

What Hacker News says

23 sources
Nice work! I’ve used a similar script for Ruby dev (actually I use it as a reference rather than just running it, but still useful): https://github.com/thoughtbot/laptop The oldest commits on this script are 11 years old and nothing in the last year, which seems quite stable. At the same time I was able to ask an intern to just run it last week, and bam! they have everything they need installed. One use for it that surprised me was hearing a colleague saying that he reinstalls his OS after every change of client and runs the setup script again so there’s no fear of IP theft but also no downtime from having an unconfigured machine.
In Show HN: We open sourced our new Mac developer setup script
I use a Macbook Air and an iMac 5K at work. I keep these synced up heavily with cloud-based solutions like GDrive, Evernote, and VPN access to the hadoop clusters I work with. Config-wise, I just built a shell script that I ran on both machines to install the same packages and libs I use for work. For my startup, we use something like this https://github.com/thoughtbot/laptop (modified to our specs of course) to keep our machines all synced up. I'm thinking of using Docker or Vagrant to consistently provision machines with regular updates though. This has to be explored.
In Ask HN: How do you keep your multiple workstations in sync?
You are paying premium for unmatched hardware and software quality. I've been using DOS, Windows 3.1+, Ubuntu 9.04+, and OS X Mavericks and Yosemite. Yosemite is the best OS in the world. Things just work. I used this script to set it up which worked flawlessly: https://github.com/thoughtbot/laptop I suggest that you invest in MacBook Pro 15" Retina, as 13" is a bit small if you want to see the pages and the DevTools at the same time, or use an IDE like WebStorm. I will never buy anything non-Aplle-made in the future :)
In Ask HN: Developer machine, Macbook vs. arbitrary Laptop with Linux, which?
You should be fine for sure. Some software you need to be using (in my opinion, at least): - iTerm 2 (use ZSH for your shell and oh-my-zsh to extend it); - Sublime (although it looks like abandonware because it hasn't been updated since December of last year); - Dash for reading documentation; - Hub (https://github.com/github/hub) to make Git better; - Homesick (https://github.com/technicalpickles/homesick) for keeping your dotfiles backed up properly Some other things you may want to look into for setting up your dev env: - Boxen (https://boxen.github.com/_ - Laptop by Thoughbot (https://github.com/thoughtbot/laptop) - Homebrew (this one's kind of obvious)
In Ask HN: MacBook Air for Web Development?

Showing the 15 most recent of 23 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.