forked from OpenSource/setup
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
238 lines
5.7 KiB
Markdown
238 lines
5.7 KiB
Markdown
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.
|
|
|
|
- original repository : https://github.com/thoughtbot/laptop
|
|
|
|
Requirements
|
|
------------
|
|
|
|
We support:
|
|
|
|
* macOS Monterey (12.3) 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:
|
|
|
|
```sh
|
|
curl --remote-name https://raw.githubusercontent.com/thoughtbot/laptop/main/mac
|
|
```
|
|
|
|
Review the script (avoid running scripts you haven't read!):
|
|
|
|
```sh
|
|
less mac
|
|
```
|
|
|
|
Execute the downloaded script:
|
|
|
|
```sh
|
|
sh mac 2>&1 | tee ~/laptop.log
|
|
```
|
|
|
|
Optionally, review the log:
|
|
|
|
```sh
|
|
less ~/laptop.log
|
|
```
|
|
|
|
Optionally, [install thoughtbot/dotfiles][dotfiles].
|
|
|
|
[dotfiles]: https://github.com/thoughtbot/dotfiles#install
|
|
|
|
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](https://github.com/thoughtbot/laptop/issues/new) for us.
|
|
Or, attach the whole log file as an attachment.
|
|
|
|
What it sets up
|
|
---------------
|
|
|
|
macOS tools:
|
|
|
|
* [Homebrew] for managing operating system libraries.
|
|
|
|
[Homebrew]: http://brew.sh/
|
|
|
|
Unix tools:
|
|
|
|
* [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
|
|
|
|
[Universal Ctags]: https://ctags.io/
|
|
[Git]: https://git-scm.com/
|
|
[OpenSSL]: https://www.openssl.org/
|
|
[RCM]: https://github.com/thoughtbot/rcm
|
|
[The Silver Searcher]: https://github.com/ggreer/the_silver_searcher
|
|
[Tmux]: http://tmux.github.io/
|
|
[Watchman]: https://facebook.github.io/watchman/
|
|
[Zsh]: http://www.zsh.org/
|
|
|
|
Heroku tools:
|
|
|
|
* [Heroku CLI] and [Parity] for interacting with the Heroku API
|
|
|
|
[Heroku CLI]: https://devcenter.heroku.com/articles/heroku-cli
|
|
[Parity]: https://github.com/thoughtbot/parity
|
|
|
|
GitHub tools:
|
|
|
|
* [GitHub CLI] for interacting with the GitHub API
|
|
|
|
[GitHub CLI]: https://cli.github.com/
|
|
|
|
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 : 2.7.5 and 3.0.3
|
|
* [Yarn] for managing JavaScript packages
|
|
|
|
[Bundler]: http://bundler.io/
|
|
[ImageMagick]: http://www.imagemagick.org/
|
|
[Node.js]: http://nodejs.org/
|
|
[npm]: https://www.npmjs.org/
|
|
[asdf-vm]: https://github.com/asdf-vm/asdf
|
|
[Ruby]: https://www.ruby-lang.org/en/
|
|
[Yarn]: https://yarnpkg.com/en/
|
|
|
|
Databases:
|
|
|
|
No databases installed, we rely on Docker containers for these.
|
|
|
|
Customize in `~/.laptop.local`
|
|
------------------------------
|
|
|
|
Your `~/.laptop.local` is run at the end of the Laptop script.
|
|
Put your customizations there.
|
|
For example:
|
|
|
|
```sh
|
|
#!/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](https://github.com/thoughtbot/laptop/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].
|
|
|
|
```sh
|
|
brew install shellcheck
|
|
```
|
|
|
|
[ShellCheck]: http://www.shellcheck.net/about.html
|
|
[Syntastic]: https://github.com/scrooloose/syntastic
|
|
|
|
### 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 thats ready to go.
|
|
|
|
[UTM]: https://mac.getutm.app
|
|
|
|
Thank you, [contributors]!
|
|
|
|
[contributors]: https://github.com/thoughtbot/laptop/graphs/contributors
|
|
|
|
By participating in this project,
|
|
you agree to abide by the thoughtbot [code of conduct].
|
|
|
|
[code of conduct]: https://thoughtbot.com/open-source-code-of-conduct
|
|
|
|
License
|
|
-------
|
|
|
|
Laptop is © 2011-2022 thoughtbot, inc.
|
|
It is free software,
|
|
and may be redistributed under the terms specified in the [LICENSE] file.
|
|
|
|
[LICENSE]: LICENSE
|
|
|
|
About thoughtbot
|
|
----------------
|
|
|
|
![thoughtbot](https://thoughtbot.com/brand_assets/93:44.svg)
|
|
|
|
Laptop is maintained and funded by thoughtbot, inc.
|
|
The names and logos for thoughtbot are trademarks of thoughtbot, inc.
|
|
|
|
We are passionate about open source software.
|
|
See [our other projects][community].
|
|
We are [available for hire][hire].
|
|
|
|
[community]: https://thoughtbot.com/community?utm_source=github
|
|
[hire]: https://thoughtbot.com?utm_source=github
|