{"id":13631966,"url":"https://github.com/vendasta/setup-new-computer-script","last_synced_at":"2026-01-26T03:37:05.487Z","repository":{"id":43154610,"uuid":"422691567","full_name":"vendasta/setup-new-computer-script","owner":"vendasta","description":"This script will help with the quick setup and installation of tools and applications for new developers at Vendasta.","archived":false,"fork":false,"pushed_at":"2025-08-29T20:01:04.000Z","size":134,"stargazers_count":768,"open_issues_count":1,"forks_count":88,"subscribers_count":35,"default_branch":"master","last_synced_at":"2025-08-29T21:55:57.053Z","etag":null,"topics":["setup-macos","setup-script","setup-wizard"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vendasta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-10-29T19:29:30.000Z","updated_at":"2025-08-29T19:37:22.000Z","dependencies_parsed_at":"2023-02-13T02:55:12.076Z","dependency_job_id":"1bba8508-39f9-46ff-bf83-8774d31174eb","html_url":"https://github.com/vendasta/setup-new-computer-script","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vendasta/setup-new-computer-script","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vendasta%2Fsetup-new-computer-script","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vendasta%2Fsetup-new-computer-script/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vendasta%2Fsetup-new-computer-script/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vendasta%2Fsetup-new-computer-script/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vendasta","download_url":"https://codeload.github.com/vendasta/setup-new-computer-script/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vendasta%2Fsetup-new-computer-script/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28765954,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T03:19:35.311Z","status":"ssl_error","status_checked_at":"2026-01-26T03:19:13.815Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["setup-macos","setup-script","setup-wizard"],"created_at":"2024-08-01T22:02:46.521Z","updated_at":"2026-01-26T03:37:05.482Z","avatar_url":"https://github.com/vendasta.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# Setup a New Developer Computer\nThis script will help with the quick setup and installation of tools and applications for new developers at Vendasta. Tested in Mac OS 10.14 to 12. This script works on both Intel and M1/M2 Macs. \n\nYou can run this script multiple times without issue. You can also run it on a partially set-up computer and it will only install what is missing.\n\nThe script will create/modify `.bash_profile` and `.zprofile` with path and autocomplete sources. If you do run it on an already set-up computer, please check these files for any duplicated paths/imports/etc.\n\n\u003cbr\u003e\n\nLooking to use this script at your own company? Check out the [tips for using the script at your own company](#tips-for-using-the-script-at-your-own-company) section.\n\n\u003cbr\u003e\n\n## Quick Install Instructions\n\nPaste the command below in a Mac OS Terminal:\n```\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/vendasta/setup-new-computer-script/master/setup-new-computer.sh)\"\n```\n\n## Manual Install Instructions\n\n* Download the script `setup-new-computer.sh` to your home folder\n* Open Terminal and navigate to where you saved it\n* Make the script executable:\n   ```sh\n   chmod +x ./setup-new-computer.sh\n   ```\n* Run the script:\n   ```sh\n   ./setup-new-computer.sh\n   ```\n\n* Some installs will need your password\n* You will be prompted to fill out your git email and name. Use the email and name you use for Github\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## Post Installation Instructions\nAfter you have run the script, please complete the following steps to finish setting up your computers:\n\n   \n1. **Github Command-line SSH Authentication**\\\n   Git is now configured to use SSH by default for github urls. You will need to generate and add an SSH key to your Github account or you will run into errors. Do the following to authorize Github on your computer:\n   - [Generate an SSH key for your new computer][generate key]\n   - [Add the SSH public key to your Github account][add to github]\n     \n   [generate key]: https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent\n   [add to github]: https://help.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account\n   \n   \u003cbr\u003e\n\n2. **Vendasta specific tools**\\\n   Follow our onboarding document to complete your setup:\n   - [Onboarding New Developers - Setup New Developer’s Computer - Next Steps][nextsteps]\n   \n   [nextsteps]: https://vendasta.jira.com/wiki/spaces/RD/pages/199032984/Onboarding+New+Developers#New-Dev%5BhardBreak%5DSetup-New-Developer%E2%80%99s-Computer-with-a-script\n\n3. **Google Cloud SDK authentication and Kubernetes context**\\\n   The setup script runs these at the end. If you skipped them or need to re-run:\n   ```sh\n   gcloud auth login\n   gcloud auth application-default login\n   gcloud auth configure-docker\n   kubectl config set-context gke_repcore-prod_us-central1_vendasta-central\n   gcloud beta container clusters get-credentials vendasta-central --region us-central1 --project repcore-prod\n   gcloud auth print-identity-token\n   ```\n\n4. **Install MSCLI (Vendasta)**\\\n   The setup script installs MSCLI and then prompts for auth at the end. If you skipped them or need to re-run:\n   ```sh\n   go install github.com/vendasta/mscli@latest\n   mscli auth login -e demo\n   mscli auth login -e prod\n   ```\n   See the MSCLI installation docs for more details:\n   - https://github.com/vendasta/mscli#installation-and-updating\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## Post Installation Tips\n\n**Fix ZSH Errors**\\\nIf you are using ZSH as your shell (default in newer Mac OS versions) you may get this error after running the setup script:\n \n\u003e zsh compinit: insecure directories, run compaudit for list.\\\n\u003e Ignore insecure directories and continue [y] or abort compinit [n]?\n\nYou can fix this by running the following command in your terminal:\n```sh\ncompaudit | xargs chmod g-w\n```\n\n\u003cbr\u003e\n\n**Setting Up Pycharm with Python 2.7**\\\nAs Mac OS has recently removed the bundled copy of Python 2.7, please see [this help document on working with our Legacy Appengine projects](https://vendasta.jira.com/wiki/spaces/RD/pages/1688469847/Pycharm+Setup+for+Legacy+Appengine+Python+2.7)\n\n\u003cbr\u003e\n\n\n**Installing and Upgrading Node and NPM versions**\\\nThere is a handy command in your `.bash_profile` and `.zsh_profile` that will automatically install your chosen version of Node and NPM, re-install any global npm packages (like angular cli), and set the newly installed version as default.\n\nWe use Node v20 at Vendasta. To upgrade to the latest version of Node 20, re-install global npm packages, and set it as default, run the following command:\n```sh\nnode-upgrade 20\n```\n\nIf you wish to install a version of node without reinstalling all global packages or setting it to be default, you can use NVM directly ([Official docs][nvm docs]):\n```sh\n# Install a specific version of Node\nnvm install 18      # or 10.10.0, 8.9.1, etc\n```\n\n\u003cbr\u003e\n\n**Switching Node Versions**\\\nUse nvm to switch between installed versions of Node. [Official docs][nvm docs]\n```sh\n# To switch to the latest Node\nnvm use node        # \"node\" is an alias for the latest version\n\n# Switch to long term support (lts) version of Node\nnvm use --lts\n \n# To switch to a specific verison of Node\nnvm use 18          # or 10.10.0, 8.9.1, etc\n```\n\n[nvm docs]: https://github.com/nvm-sh/nvm/blob/master/README.md#usage\n\n\u003cbr\u003e\n  \n**Keeping your tools up-to-date**\\\nHomebrew can keep your command-line tools and languages up-to-date.\n```sh\n# List what needs to be updated\nbrew update\nbrew outdated\n \n# Upgrade a specific app/formula (example: git)\nbrew upgrade git\n\n# Upgrade everything\nbrew upgrade\n  \n# List previous versions installed (example: git)\nbrew switch git list\n \n# Roll back to a currently installed previous version (example: git 2.25.0)\nbrew switch git 2.25.0\n```\n\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n---\n## What's Installed\n\n### Shell Profile Setup (Bash and Zsh)\n\u003cdetails\u003e\n  \u003csummary\u003e.bash_profile\u003c/summary\u003e\n  The following will be added to your ~/.bash_profile\n\t\n   ```sh\n# --------------------------------------------------------------------\n# Begin Bash autogenerated content from setup-new-computer.sh   $VERSION\n# --------------------------------------------------------------------\n\n# Supress \"Bash no longer supported\" message\nexport BASH_SILENCE_DEPRECATION_WARNING=1\n\n# Start Homebrew\nif [[ \"$(uname -p)\" == \"arm\" ]]; then\n    # Apple Silicon M1/M2 Macs\n    eval \"$(/opt/homebrew/bin/brew shellenv)\"\nelse\n    # Intel Macs\n    eval \"$(/usr/local/bin/brew shellenv)\"\nfi\n\n# Bash Autocompletion\nif type brew \u0026\u003e/dev/null; then\n  HOMEBREW_PREFIX=\"$(brew --prefix)\"\n  if [[ -r \"${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh\" ]]; then\n    source \"${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh\"\n  else\n    for COMPLETION in \"${HOMEBREW_PREFIX}/etc/bash_completion.d/\"*; do\n      [[ -r \"$COMPLETION\" ]] \u0026\u0026 source \"$COMPLETION\"\n    done\n  fi\nfi\n\n# Google Cloud SDK\n[ -e \"$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.bash.inc\" ] \u0026\u0026 \n\tsource \"$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.bash.inc\"\n[ -e \"$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.bash.inc\" ] \u0026\u0026 \n\tsource \"$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.bash.inc\"\n\n# Golang\nexport GOPRIVATE=\"github.com/vendasta\"\nexport GOPROXY=\"direct\"\nexport GO111MODULE=\"on\"\nexport GOPATH=$HOME/go\nexport GOBIN=$GOPATH/bin\nexport PATH=$PATH:$GOBIN\n\n# NVM\n# This needs to be after \"Setting up Path for Homebrew\" to override Homebrew Node\nexport NVM_DIR=\"$HOME/.nvm\"\n[ -s \"$NVM_DIR/nvm.sh\" ] \u0026\u0026 . \"$NVM_DIR/nvm.sh\"  # This loads nvm\n[ -s \"$NVM_DIR/bash_completion\" ] \u0026\u0026 . \"$NVM_DIR/bash_completion\"  # This loads nvm bash_completion\n\n# Node\n# Increases the default memory limit for Node, so larger Anglar prjects can be built\nexport NODE_OPTIONS=--max_old_space_size=12000\n\n# Update Node to selected version and reinstall previous packages\nnode-upgrade() {\n    new_version=${1:?\"Please specify a version to upgrade to. Example: node-upgrade 20\"}\n    nvm install \"$new_version\" --reinstall-packages-from=current\n    nvm alias default \"$new_version\"\n    # nvm uninstall \"$prev_ver\"\n    nvm cache clear\n}\n\n# --------------------------------------------------------------------\n# End autogenerated content from setup-new-computer.sh   $VERSION\n# --------------------------------------------------------------------\n   ```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e.zprofile\u003c/summary\u003e\n  The following will be added to your ~/.zprofile\n\t\n   ```sh\n# --------------------------------------------------------------------\n# Begin ZSH autogenerated content from setup-new-computer.sh   $VERSION\n# --------------------------------------------------------------------\n\n# Start Homebrew\nif [[ \"$(uname -p)\" == \"arm\" ]]; then\n    # Apple Silicon M1/M2 Macs\n    eval \"$(/opt/homebrew/bin/brew shellenv)\"\nelse\n    # Intel Macs\n    eval \"$(/usr/local/bin/brew shellenv)\"\nfi\n\n# Brew Autocompletion\nif type brew \u0026\u003e/dev/null; then\n    fpath+=$(brew --prefix)/share/zsh/site-functions\nfi\n\n# Zsh Autocompletion\n# Note: must run after Brew Autocompletion\nautoload -U +X compinit \u0026\u0026 compinit\nautoload -U +X bashcompinit \u0026\u0026 bashcompinit\nfpath=(/usr/local/share/zsh-completions $fpath)\n\n# Google Cloud SDK\n[ -e \"$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc\" ] \u0026\u0026     source \"$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc\"\n[ -e \"$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc\" ] \u0026\u0026     source \"$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc\"\n\n# Golang\nexport GOPRIVATE=\"github.com/vendasta\"\nexport GOPROXY=\"direct\"\nexport GO111MODULE=\"on\"\nexport GOPATH=$HOME/go\nexport GOBIN=$GOPATH/bin\nexport PATH=$PATH:$GOBIN\n\n# NVM \n# This needs to be after \"Setting up Path for Homebrew\" to override Homebrew Node\nexport NVM_DIR=\"$HOME/.nvm\"\n[ -s \"$NVM_DIR/nvm.sh\" ] \u0026\u0026     source \"$NVM_DIR/nvm.sh\"  # This loads nvm\n[ -s \"$NVM_DIR/bash_completion\" ] \u0026\u0026     source \"$NVM_DIR/bash_completion\"  # This loads nvm bash_completion\n\n# Node\n# Increases the default memory limit for Node, so larger Anglar prjects can be built\nexport NODE_OPTIONS=--max_old_space_size=12000\n\n# Update Node to selected version and reinstall previous packages\nnode-upgrade() {\n    readonly new_version=${1:?\"Please specify a version to upgrade to. Example: node-upgrade 20\"}\n    nvm install \"$new_version\" --reinstall-packages-from=current\n    nvm alias default \"$new_version\"\n    # nvm uninstall \"$prev_ver\"\n    nvm cache clear\n}\n\n# --------------------------------------------------------------------\n# End autogenerated content from setup-new-computer.sh   $VERSION\n# --------------------------------------------------------------------\n   ```\n\u003c/details\u003e\n\n\n### Command-line tools and languages\n\u003cdetails\u003e\n  \u003csummary\u003eXcode CLI Development Tools\u003c/summary\u003e\n  \n   ```sh\n   xcode-select --install\n   ```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eHomebrew (brew)\u003c/summary\u003e\n  \n   ```sh\n   /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n   \n   # Fix brew insecure directories warning (zsh)\n   chmod go-w \"$(brew --prefix)/share\"\n   ```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eBash (with Bash Completions)\u003c/summary\u003e\n  \n   ```sh\n   brew install bash\n   brew install bash-completion\n   ```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eZsh Completions\u003c/summary\u003e\n  \n   ```sh\n   brew install zsh-completions\n   ```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eGit\u003c/summary\u003e\n  \n   ```sh\n   brew install git\n   ```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eMSCLI (Vendasta)\u003c/summary\u003e\n\n```sh\ngo install github.com/vendasta/mscli@latest\nmscli auth login -e demo\nmscli auth login -e prod\n```\n\u003c/details\u003e\n\n \n \n ### Languages\n \u003cdetails\u003e\n  \u003csummary\u003eGo\u003c/summary\u003e\n  \n   ```sh\n   mkdir -p ~/go\n   brew install go\n   go env -w GOPRIVATE=\"github.com/vendasta\"\n   ```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eNode (from nvm, with npm, nx, husky, Angular CLI, Sass, and Node-Gyp)\u003c/summary\u003e\n  \n```sh\ngetLastestNVM() {\n    # From https://gist.github.com/lukechilds/a83e1d7127b78fef38c2914c4ececc3c\n    # Get latest release from GitHub api | Get tag line | Pluck JSON value\n    curl --silent \"https://api.github.com/repos/nvm-sh/nvm/releases/latest\" | \n        grep '\"tag_name\":' |\n        sed -E 's/.*\"([^\"]+)\".*/\\1/'\n}\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/$(getLastestNVM)/install.sh | bash\nexport NVM_DIR=\"$HOME/.nvm\"\n[ -s \"$NVM_DIR/nvm.sh\" ] \u0026\u0026 \\. \"$NVM_DIR/nvm.sh\"  # This loads nvm\nnvm install 20\nnpm install --location=global @angular/cli\nnpm install --location=global nx\nnpm install --location=global husky\nnpm install --location=global sass\nnpm install --location=global node-gyp\n```\n  We will also create a new file called `~/.huskyrc` and fill it with:\n```\n# --------------------------------------------------------------------\n# Begin Husky autogenerated content from setup-new-computer.sh   vX\n# --------------------------------------------------------------------\n\n# This loads nvm.sh and sets the correct PATH before running hook\n\nexport NVM_DIR=\"$HOME/.nvm\"\n[ -s \"$NVM_DIR/nvm.sh\" ] \u0026\u0026 source \"$NVM_DIR/nvm.sh\"\n   \n\n# --------------------------------------------------------------------\n# End autogenerated content from setup-new-computer.sh   vX\n# --------------------------------------------------------------------\n\n```\n  \n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eRuby\u003c/summary\u003e\n  \n```sh\nbrew install ruby\n```\n\u003c/details\u003e\n\t   \n\n\u003cdetails\u003e\n  \u003csummary\u003eGoogle Cloud Components\u003c/summary\u003e\n  \n```sh\nbrew install --cask google-cloud-sdk\nsource \"$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.bash.inc\"\nsource \"$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.bash.inc\"\nif [ -e ~/google-cloud-sdk ]; then\n    echo \"✔ ~/google-cloud-sdk exists. Skipping\"\nelse\n    echo \"✔ Creating ~/google-cloud-sdk symlink\"\n    ln -s \"$(brew --prefix)/Caskroom/google-cloud-sdk\" ~/google-cloud-sdk \u0026\u003e/dev/null\n    # make a convenience symlink at the install path for google-cloud-sdk when installed manually\nfi\ngcloud components install app-engine-go --quiet\ngcloud components install app-engine-python --quiet\ngcloud components install app-engine-python-extras --quiet\ngcloud components install kubectl --quiet\ngcloud components install docker-credential-gcr --quiet\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eGoogle Cloud authentication and Kubernetes context\u003c/summary\u003e\n\n```sh\ngcloud auth login\ngcloud auth application-default login\ngcloud auth configure-docker\nkubectl config set-context gke_repcore-prod_us-central1_vendasta-central\ngcloud beta container clusters get-credentials vendasta-central --region us-central1 --project repcore-prod\ngcloud auth print-identity-token\n```\n\u003c/details\u003e\n\n\n### Applications\n\n\u003cdetails\u003e\n  \u003csummary\u003eFirefox\u003c/summary\u003e\n  \n```sh\nbrew install --cask firefox\n```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eGoogle Chrome\u003c/summary\u003e\n  \n```sh\nbrew install --cask google-chrome\n```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eRancher Desktop (Docker Desktop alternative)\u003c/summary\u003e\n\n```sh\nbrew install --cask rancher\n```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003ePostman\u003c/summary\u003e\n\n```sh\nbrew install --cask postman\n```\n\u003c/details\u003e\n\n\n### Optional IDEs and Tools\n\n\u003cdetails\u003e\n  \u003csummary\u003eVisual Studio Code\u003c/summary\u003e\n  \n```sh\nbrew install --cask visual-studio-code\n```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eJetbrains Toolbox\u003c/summary\u003e\n  \n```sh\nbrew install --cask jetbrains-toolbox\n```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003ePycharm\u003c/summary\u003e\n  \n```sh\nbrew install --cask pycharm\n```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eGoland\u003c/summary\u003e\n  \n```sh\nbrew install --cask goland\n```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eWebStorm\u003c/summary\u003e\n  \n```sh\nbrew install --cask webstorm\n```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eSublime Text\u003c/summary\u003e\n  \n```sh\nbrew install --cask sublime-text\n```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eiTerm2\u003c/summary\u003e\n  \n```sh\nbrew install --cask iterm2\n```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eCursor\u003c/summary\u003e\n  \n```sh\nbrew install --cask cursor\n```\n\u003c/details\u003e\n\n\n### System Tweaks\n\n\u003cdetails\u003e\n  \u003csummary\u003eGeneral: Expand save and print panel by default\u003c/summary\u003e\n  \n```sh\ndefaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true\ndefaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true\ndefaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true\ndefaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eGeneral: Save to disk (not to iCloud) by default\u003c/summary\u003e\n  \n```sh\ndefaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eGeneral: Avoid creating .DS_Store files on network volumes\u003c/summary\u003e\n  \n```sh\ndefaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eTyping: Disable smart quotes and dashes as they cause problems when typing code\u003c/summary\u003e\n  \n```sh\ndefaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false\ndefaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eTyping: Disable press-and-hold for keys in favor of key repeat\u003c/summary\u003e\n  \n```sh\ndefaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eFinder: Show status bar and path bar\u003c/summary\u003e\n  \n```sh\ndefaults write com.apple.finder ShowStatusBar -bool true\ndefaults write com.apple.finder ShowPathbar -bool true\t\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eFinder: Disable the warning when changing a file extension\u003c/summary\u003e\n  \n```sh\ndefaults write com.apple.finder FXEnableExtensionChangeWarning -bool false\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eFinder: Show the ~/Library folder\u003c/summary\u003e\n  \n```sh\nchflags nohidden ~/Library\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eSafari: Enable Safari’s Developer Settings\u003c/summary\u003e\n  \n```sh\ndefaults write com.apple.Safari IncludeInternalDebugMenu -bool true\ndefaults write com.apple.Safari IncludeDevelopMenu -bool true\ndefaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true\ndefaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled -bool true\ndefaults write NSGlobalDomain WebKitDeveloperExtras -bool true\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eChrome: Disable the all too sensitive backswipe on Trackpads and Magic Mice\u003c/summary\u003e\n\n```sh\n# Note: The chrome defaults can cause your Chrome browser to display a message stating\n# that Chrome is \"Managed by your organization\" when it isn't\n# \n# To view policies that are affecting this message, view the following pages:\n# chrome://policy and chrome://management/\n# \n# To quickly remove Chrome default overrides, run the following commands:\n# defaults delete com.google.Chrome\n# defaults delete com.google.Chrome.canary\n#\ndefaults write com.google.Chrome AppleEnableSwipeNavigateWithScrolls -bool false\ndefaults write com.google.Chrome.canary AppleEnableSwipeNavigateWithScrolls -bool false\ndefaults write com.google.Chrome AppleEnableMouseSwipeNavigateWithScrolls -bool false\ndefaults write com.google.Chrome.canary AppleEnableMouseSwipeNavigateWithScrolls -bool false\t\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eChrome: Use the system print dialog and expand dialog by default\u003c/summary\u003e\n  \n```sh\n# Note: The chrome defaults can cause your Chrome browser to display a message stating\n# that Chrome is \"Managed by your organization\" when it isn't\n# \n# To view policies that are affecting this message, view the following pages:\n# chrome://policy and chrome://management/\n# \n# To quickly remove Chrome default overrides, run the following commands:\n# defaults delete com.google.Chrome\n# defaults delete com.google.Chrome.canary\n#\ndefaults write com.google.Chrome DisablePrintPreview -bool true\ndefaults write com.google.Chrome.canary DisablePrintPreview -bool true\ndefaults write com.google.Chrome PMPrintingExpandedStateForPrint2 -bool true\ndefaults write com.google.Chrome.canary PMPrintingExpandedStateForPrint2 -bool true\n```\n\u003c/details\u003e\n\n\n\n### Set up Git\n\n\u003cdetails\u003e\n  \u003csummary\u003eConfigure git to always ssh when dealing with https github repos\u003c/summary\u003e\n  \n```sh\ngit config --global url.\"git@github.com:\".insteadOf https://github.com/\n# you can remove this change by editing your ~/.gitconfig file\n```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eSet Git to store credentials in Keychain\u003c/summary\u003e\n  \n```sh\ngit config --global credential.helper osxkeychain\n```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eSet git display name and email\u003c/summary\u003e\n  \n```sh\nif [ -n \"$(git config --global user.email)\" ]; then\n  echo \"✔ Git email is set to $(git config --global user.email)\"\nelse\n  read -p 'What is your Git email address?: ' gitEmail\n  git config --global user.email \"$gitEmail\"\nfi\n\nif [ -n \"$(git config --global user.name)\" ]; then\n  echo \"✔ Git display name is set to $(git config --global user.name)\"\nelse\n  read -p 'What is your Git display name (Firstname Lastname)?: ' gitName\n  git config --global user.name \"$gitName\"\nfi\n```\n\u003c/details\u003e\n\n\n\u003cbr\u003e\n\t   \n---   \n\n\u003cbr\u003e\n\n\n## Tips for using the script at your own company\n\nThis script helps new developers at Vendasta setup their laptops quicker, letting them hit the ground running. Before, it could take 2-5 days to install and configure everything, leading to a frustrating first week. With this script and fast internet, the process can be done in under 30 min.\n\t   \nI have tried to make this script simple and useful. You will want to customize the installation and configuration to match the tools and services you use at your company.\n\t   \n- At Vendasta, we are using Go, Angular, and Google Cloud. You most likely do not use all of these, so remove, change, and tweak to meet your needs.\n- We lock our Node version at 20 (using NVM) for best compatibility with Angular and NX. You will likely want to change this. \n- To customize the [welcome logo](https://github.com/vendasta/setup-new-computer-script/blob/47b7c97f21b293e143a0566cafecec2cfc69c528/setup-new-computer.sh#L74-L90) and add a bit of style, I used the handy [Text to ASCII Art Generator](https://patorjk.com/software/taag/#p=testall\u0026f=Isometric1\u0026t=Vendasta)\n- When you update the script, remember to update the readme \"What's Installed\" section too\n- Be sure to update both the `.bash_profile` and `.zprofile`\n- This is MIT licensed, so be sure to include the [LICENSE file](https://github.com/vendasta/setup-new-computer-script/blob/master/LICENSE)\n- Let me know! It is good to know if you find this helpful\n\n\n## Resources and inspiration\n\nThe following examples were helpful in building this script.\n\t\n* macOS Dev Setup\\\n  https://github.com/nicolashery/mac-dev-setup\n* dev-setup\\\n  https://github.com/donnemartin/dev-setup#dev-setup\n* thoughtbot/laptop\\\n  https://github.com/thoughtbot/laptop\n\n\n## Testing in Virtual Machines\n\nI recommend testing your script on a fresh Mac VM to make sure your changes will work properly. Installing on a clean Mac install will let you find problems you may not see if you run the script repeatedly on your own computer.\n\n- Testing in Intel Macs - Install Intel Mac OS VMs with Virtualbox \\\n  https://github.com/myspaghetti/macos-virtualbox\n- Testing on M1/M2 Macs - Install VirtualBuddy to run Mac OS VMs using Apple's Virtualization.framework \\\n  https://github.com/insidegui/VirtualBuddy\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvendasta%2Fsetup-new-computer-script","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvendasta%2Fsetup-new-computer-script","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvendasta%2Fsetup-new-computer-script/lists"}