SlideShare a Scribd company logo
i got a new laptop
Recently, I got a new laptop. This time, instead of going and installing all the software
I needed willy nilly, I decided to document how I went about setting it up.
I documented it with BASH
I decided to document my set up as an executable.
I scripted the whole thing in a shell script, and it’s available here:
https://github.com/jonfuller/laptop/
thoughtbot
The cool guys over at thoughtbot (https://thoughtbot.com/) have done this before too.
I was inspired by their work here: https://github.com/thoughtbot/laptop
$ /usr/bin/ruby -e 
"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
If you’re a macos user, homebrew is a must.
Coined as “The missing package manager for macOS” (https://brew.sh/, also
https://github.com/Homebrew/brew/)
A developer’s best friend. It uses the “system ruby” to install itself.
$ brew tap caskroom/cask
Homebrew Cask (https://caskroom.github.io/) is a plugin on top of Homebrew. It’s for
installing things that are DMG’s and pkg’s.
Install things like slack and chrome.
$ brew cask install google-chrome
$ brew cask install slack
$ brew cask install microsoft-office
Installing chrome, slack and office with homebrew cask.
$ brew cask install p4merge
$ brew cask install sourcetree
$ brew cask install macvim
$ brew cask install virtualbox
Installing developer tools with homebrew cask.
$ brew install git
$ brew install openssl
$ brew install wget # ← WAT!?
$ brew install redis
$ brew install node
Installing developer tools with homebrew.
Sidenote: what kind of OS doesn’t ship with wget?
$ brew install mas
$ mas install `mas search "Kindle" | head -1 | cut -d ' ' -f 1`
mas (stands for Mac App Store) is a command line interface for interacting with the
Mac App Store.
This is a great way to keep system apps and updates as well as other 3rd party apps
(e.g. Twitter, Kindle, etc.) installed and up to date.
$ mas install `mas search "XCode" | head -1 | cut -d ' ' -f 1`
On macos, setting up a dev environment, starts with XCode.
That gets you GCC tools, clang, everything you’ll need for node, ruby, xamarin, ios,
etc.
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 
409B6B1796C275462A1703113804BB82D39DC0E3
$ curl -sSL https://get.rvm.io | bash -s stable
$ source ~/.rvm/scripts/rvm
$ rvm install 2.4
$ rvm install 2.3
$ rvm all do gem update --system
$ rvm all do gem install bundler
ruby is a must for most web developers; and rvm is a must for ruby developers.
Bootstrap your ruby install like this.
$ brew cask install postgres
$ mas install `mas search "PG Commander" | head -1 | cut -d ' ' -f 1`
$ bundle config build.pg --with-pg-config=/Applications/<...>/bin/pg_config
$ echo "export PATH=$PATH:/Applications/<...>/latest/bin" >> ~/.zshrc
If you’re using a database in development, you’ll probably want to try out Postgres.
Install postgres, some nice tooling, and configure bundler to point at your postgres
install.
$ brew install heroku-toolbelt
$ heroku update
$ heroku login
I love deploying apps to heroku, this’ll get you ready to go with heroku on your new
machine.
$ wget https://dl.xamarin.com/installer/XamarinInstaller.dmg
$ hdiutil attach -noautoopen XamarinInstaller.dmg
$ open /Volumes/Xamarin Installer/Install Xamarin.app
I make mobile apps in my day job with Xamarin.
There is a cask for this, but it didn’t work quite correctly. This will download and
launch the latest Xamarin installer.
$ softwareupdate -ir --verbvose
Macos is no stranger to OS updates. Thankfully softwareupdate is here to help us
invoke these from the command line as well.
$ git config --global user.name “Jon Fuller”
$ git config --global user.email “jon@sep.com”
Don’t forget to configure git.
$ git config --global merge.tool p4mergetool
$ git config --global mergetool.p4mergetool.cmd <...>
Then connect p4merge to git. (BeyondCompare is cool tool, but :heart: p4merge).
no dice
We use AnyConnect for VPN stuffs. The nature of Cisco AnyConnect is that they
don’t distribute it freely; so, I didn’t find a great way to automate the installation of it.
macos installation automation
github.com/jonfuller/laptop
I’m constantly updating this with new things I install. Follow along here:
https://github.com/jonfuller/laptop/
Ad

More Related Content

What's hot (20)

Automating Dev Environment - Introduction to Docker and Chef
Automating Dev Environment - Introduction to Docker and ChefAutomating Dev Environment - Introduction to Docker and Chef
Automating Dev Environment - Introduction to Docker and Chef
kamalikamj
 
Installaling Puppet Master and Agent
Installaling Puppet Master and AgentInstallaling Puppet Master and Agent
Installaling Puppet Master and Agent
Ranjit Avasarala
 
Baking docker using chef
Baking docker using chefBaking docker using chef
Baking docker using chef
Mukta Aphale
 
Austin - Container Days - Docker 101
Austin - Container Days - Docker 101Austin - Container Days - Docker 101
Austin - Container Days - Docker 101
Bill Maxwell
 
Automating Docker Containers with Puppet 2014 10-13
Automating Docker Containers with Puppet 2014 10-13Automating Docker Containers with Puppet 2014 10-13
Automating Docker Containers with Puppet 2014 10-13
kylog
 
Package Management on Windows with Chocolatey
Package Management on Windows with ChocolateyPackage Management on Windows with Chocolatey
Package Management on Windows with Chocolatey
Puppet
 
Packer by HashiCorp
Packer by HashiCorpPacker by HashiCorp
Packer by HashiCorp
Łukasz Cieśluk
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
Docker, Inc.
 
Docker Started
Docker StartedDocker Started
Docker Started
Victor S. Recio
 
Automated Deployment with Capistrano
Automated Deployment with CapistranoAutomated Deployment with Capistrano
Automated Deployment with Capistrano
Sumit Chhetri
 
Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]
Nicolas Poggi
 
Baking Docker Using Chef
Baking Docker Using ChefBaking Docker Using Chef
Baking Docker Using Chef
Mukta Aphale
 
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Continuous Delivery in Enterprise Environments using Docker, Ansible and JenkinsContinuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Marcel Birkner
 
SF DevOps: Introducing Vagrant
SF DevOps: Introducing VagrantSF DevOps: Introducing Vagrant
SF DevOps: Introducing Vagrant
Mitchell Hashimoto
 
Deploy django apps using docker
Deploy django apps using dockerDeploy django apps using docker
Deploy django apps using docker
Thomas Kremmel
 
Delivering eBay's CI Solution with Apache Mesos & Docker - DockerCon 2014
Delivering eBay's CI Solution with Apache Mesos & Docker - DockerCon 2014Delivering eBay's CI Solution with Apache Mesos & Docker - DockerCon 2014
Delivering eBay's CI Solution with Apache Mesos & Docker - DockerCon 2014
ahunnargikar
 
Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf
Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconfContinuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf
Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf
Julia Mateo
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
Robert Reiz
 
Docker presentation
Docker presentationDocker presentation
Docker presentation
Shankar Chaudhary
 
Dockerfile
Dockerfile Dockerfile
Dockerfile
Jeffrey Ellin
 
Automating Dev Environment - Introduction to Docker and Chef
Automating Dev Environment - Introduction to Docker and ChefAutomating Dev Environment - Introduction to Docker and Chef
Automating Dev Environment - Introduction to Docker and Chef
kamalikamj
 
Installaling Puppet Master and Agent
Installaling Puppet Master and AgentInstallaling Puppet Master and Agent
Installaling Puppet Master and Agent
Ranjit Avasarala
 
Baking docker using chef
Baking docker using chefBaking docker using chef
Baking docker using chef
Mukta Aphale
 
Austin - Container Days - Docker 101
Austin - Container Days - Docker 101Austin - Container Days - Docker 101
Austin - Container Days - Docker 101
Bill Maxwell
 
Automating Docker Containers with Puppet 2014 10-13
Automating Docker Containers with Puppet 2014 10-13Automating Docker Containers with Puppet 2014 10-13
Automating Docker Containers with Puppet 2014 10-13
kylog
 
Package Management on Windows with Chocolatey
Package Management on Windows with ChocolateyPackage Management on Windows with Chocolatey
Package Management on Windows with Chocolatey
Puppet
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
Docker, Inc.
 
Automated Deployment with Capistrano
Automated Deployment with CapistranoAutomated Deployment with Capistrano
Automated Deployment with Capistrano
Sumit Chhetri
 
Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]
Nicolas Poggi
 
Baking Docker Using Chef
Baking Docker Using ChefBaking Docker Using Chef
Baking Docker Using Chef
Mukta Aphale
 
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Continuous Delivery in Enterprise Environments using Docker, Ansible and JenkinsContinuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Marcel Birkner
 
SF DevOps: Introducing Vagrant
SF DevOps: Introducing VagrantSF DevOps: Introducing Vagrant
SF DevOps: Introducing Vagrant
Mitchell Hashimoto
 
Deploy django apps using docker
Deploy django apps using dockerDeploy django apps using docker
Deploy django apps using docker
Thomas Kremmel
 
Delivering eBay's CI Solution with Apache Mesos & Docker - DockerCon 2014
Delivering eBay's CI Solution with Apache Mesos & Docker - DockerCon 2014Delivering eBay's CI Solution with Apache Mesos & Docker - DockerCon 2014
Delivering eBay's CI Solution with Apache Mesos & Docker - DockerCon 2014
ahunnargikar
 
Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf
Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconfContinuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf
Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf
Julia Mateo
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
Robert Reiz
 

Viewers also liked (16)

Round tripping your assumptions
Round tripping your assumptionsRound tripping your assumptions
Round tripping your assumptions
Bob Nowadly
 
Puppet - Simple Configuration Management
Puppet - Simple Configuration ManagementPuppet - Simple Configuration Management
Puppet - Simple Configuration Management
Mike Rogers
 
Vietnam literature
Vietnam literatureVietnam literature
Vietnam literature
Ma Lovely
 
Redes 1
Redes 1Redes 1
Redes 1
guillermo ruiz
 
Working with Images
Working with ImagesWorking with Images
Working with Images
Nicole Ryan
 
Hoja de vida deissy mora
Hoja de vida deissy moraHoja de vida deissy mora
Hoja de vida deissy mora
💻 🧠 DEISSY PAOLA MORA
 
stains
stainsstains
stains
MLT LECTURES BY TANVEER TARA
 
Working with Video and Audio
Working with Video and AudioWorking with Video and Audio
Working with Video and Audio
Nicole Ryan
 
Cse space-mouse-report
Cse space-mouse-reportCse space-mouse-report
Cse space-mouse-report
Imkarthikreddy
 
dealing with dependencies, taking your architecture to rehab
dealing with dependencies, taking your architecture to rehabdealing with dependencies, taking your architecture to rehab
dealing with dependencies, taking your architecture to rehab
Jon Fuller
 
Ignite Talk on Chef
Ignite Talk on ChefIgnite Talk on Chef
Ignite Talk on Chef
Bob Nowadly
 
Gomez juan
Gomez juanGomez juan
Gomez juan
judavid6
 
Resisting/Unresisting
Resisting/UnresistingResisting/Unresisting
Resisting/Unresisting
ebcla
 
Estrategias centro acosta final(2)
Estrategias centro acosta final(2)Estrategias centro acosta final(2)
Estrategias centro acosta final(2)
Lisceth Hernandez Padilla
 
Servicio Comunitario Proyecto final
Servicio Comunitario Proyecto finalServicio Comunitario Proyecto final
Servicio Comunitario Proyecto final
picoso9976
 
SaltStack Configuration Management
SaltStack Configuration ManagementSaltStack Configuration Management
SaltStack Configuration Management
Nathan Sickler
 
Round tripping your assumptions
Round tripping your assumptionsRound tripping your assumptions
Round tripping your assumptions
Bob Nowadly
 
Puppet - Simple Configuration Management
Puppet - Simple Configuration ManagementPuppet - Simple Configuration Management
Puppet - Simple Configuration Management
Mike Rogers
 
Vietnam literature
Vietnam literatureVietnam literature
Vietnam literature
Ma Lovely
 
Working with Images
Working with ImagesWorking with Images
Working with Images
Nicole Ryan
 
Working with Video and Audio
Working with Video and AudioWorking with Video and Audio
Working with Video and Audio
Nicole Ryan
 
Cse space-mouse-report
Cse space-mouse-reportCse space-mouse-report
Cse space-mouse-report
Imkarthikreddy
 
dealing with dependencies, taking your architecture to rehab
dealing with dependencies, taking your architecture to rehabdealing with dependencies, taking your architecture to rehab
dealing with dependencies, taking your architecture to rehab
Jon Fuller
 
Ignite Talk on Chef
Ignite Talk on ChefIgnite Talk on Chef
Ignite Talk on Chef
Bob Nowadly
 
Gomez juan
Gomez juanGomez juan
Gomez juan
judavid6
 
Resisting/Unresisting
Resisting/UnresistingResisting/Unresisting
Resisting/Unresisting
ebcla
 
Servicio Comunitario Proyecto final
Servicio Comunitario Proyecto finalServicio Comunitario Proyecto final
Servicio Comunitario Proyecto final
picoso9976
 
SaltStack Configuration Management
SaltStack Configuration ManagementSaltStack Configuration Management
SaltStack Configuration Management
Nathan Sickler
 
Ad

Similar to macos installation automation (20)

Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11
Yury Pliashkou
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
biicode
 
Vagrant - Version control your dev environment
Vagrant - Version control your dev environmentVagrant - Version control your dev environment
Vagrant - Version control your dev environment
bocribbz
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
Pablo Godel
 
IOS 11 setup with appium latest
IOS 11 setup with appium  latestIOS 11 setup with appium  latest
IOS 11 setup with appium latest
Harikrishna Recharla
 
Composer
ComposerComposer
Composer
Tom Corrigan
 
Instruction: dev environment
Instruction: dev environmentInstruction: dev environment
Instruction: dev environment
Soshi Nemoto
 
Making environment for_infrastructure_as_code
Making environment for_infrastructure_as_codeMaking environment for_infrastructure_as_code
Making environment for_infrastructure_as_code
Soshi Nemoto
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient way
Sylvain Rayé
 
Hadoop installation on windows
Hadoop installation on windows Hadoop installation on windows
Hadoop installation on windows
habeebulla g
 
Sun raysetup
Sun raysetupSun raysetup
Sun raysetup
Portal Oliveira
 
Continuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierContinuous Delivery: The Next Frontier
Continuous Delivery: The Next Frontier
Carlos Sanchez
 
Hadoop on osx
Hadoop on osxHadoop on osx
Hadoop on osx
Devopam Mittra
 
May The Nodejs Be With You
May The Nodejs Be With YouMay The Nodejs Be With You
May The Nodejs Be With You
Dalibor Gogic
 
DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)
Soshi Nemoto
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
Arto Artnik
 
How to go the extra mile on monitoring
How to go the extra mile on monitoringHow to go the extra mile on monitoring
How to go the extra mile on monitoring
Tiago Simões
 
FreeBSD: Dev to Prod
FreeBSD: Dev to ProdFreeBSD: Dev to Prod
FreeBSD: Dev to Prod
Sean Chittenden
 
grate techniques
grate techniquesgrate techniques
grate techniques
junaid novapex
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on Docker
Daniel Ku
 
Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11
Yury Pliashkou
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
biicode
 
Vagrant - Version control your dev environment
Vagrant - Version control your dev environmentVagrant - Version control your dev environment
Vagrant - Version control your dev environment
bocribbz
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
Pablo Godel
 
Instruction: dev environment
Instruction: dev environmentInstruction: dev environment
Instruction: dev environment
Soshi Nemoto
 
Making environment for_infrastructure_as_code
Making environment for_infrastructure_as_codeMaking environment for_infrastructure_as_code
Making environment for_infrastructure_as_code
Soshi Nemoto
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient way
Sylvain Rayé
 
Hadoop installation on windows
Hadoop installation on windows Hadoop installation on windows
Hadoop installation on windows
habeebulla g
 
Continuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierContinuous Delivery: The Next Frontier
Continuous Delivery: The Next Frontier
Carlos Sanchez
 
May The Nodejs Be With You
May The Nodejs Be With YouMay The Nodejs Be With You
May The Nodejs Be With You
Dalibor Gogic
 
DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)
Soshi Nemoto
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
Arto Artnik
 
How to go the extra mile on monitoring
How to go the extra mile on monitoringHow to go the extra mile on monitoring
How to go the extra mile on monitoring
Tiago Simões
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on Docker
Daniel Ku
 
Ad

Recently uploaded (20)

QA/QC Manager (Quality management Expert)
QA/QC Manager (Quality management Expert)QA/QC Manager (Quality management Expert)
QA/QC Manager (Quality management Expert)
rccbatchplant
 
five-year-soluhhhhhhhhhhhhhhhhhtions.pdf
five-year-soluhhhhhhhhhhhhhhhhhtions.pdffive-year-soluhhhhhhhhhhhhhhhhhtions.pdf
five-year-soluhhhhhhhhhhhhhhhhhtions.pdf
AdityaSharma944496
 
AI-assisted Software Testing (3-hours tutorial)
AI-assisted Software Testing (3-hours tutorial)AI-assisted Software Testing (3-hours tutorial)
AI-assisted Software Testing (3-hours tutorial)
Vəhid Gəruslu
 
MAQUINARIA MINAS CEMA 6th Edition (1).pdf
MAQUINARIA MINAS CEMA 6th Edition (1).pdfMAQUINARIA MINAS CEMA 6th Edition (1).pdf
MAQUINARIA MINAS CEMA 6th Edition (1).pdf
ssuser562df4
 
Process Parameter Optimization for Minimizing Springback in Cold Drawing Proc...
Process Parameter Optimization for Minimizing Springback in Cold Drawing Proc...Process Parameter Optimization for Minimizing Springback in Cold Drawing Proc...
Process Parameter Optimization for Minimizing Springback in Cold Drawing Proc...
Journal of Soft Computing in Civil Engineering
 
"Feed Water Heaters in Thermal Power Plants: Types, Working, and Efficiency G...
"Feed Water Heaters in Thermal Power Plants: Types, Working, and Efficiency G..."Feed Water Heaters in Thermal Power Plants: Types, Working, and Efficiency G...
"Feed Water Heaters in Thermal Power Plants: Types, Working, and Efficiency G...
Infopitaara
 
International Journal of Distributed and Parallel systems (IJDPS)
International Journal of Distributed and Parallel systems (IJDPS)International Journal of Distributed and Parallel systems (IJDPS)
International Journal of Distributed and Parallel systems (IJDPS)
samueljackson3773
 
Metal alkyne complexes.pptx in chemistry
Metal alkyne complexes.pptx in chemistryMetal alkyne complexes.pptx in chemistry
Metal alkyne complexes.pptx in chemistry
mee23nu
 
Introduction to FLUID MECHANICS & KINEMATICS
Introduction to FLUID MECHANICS &  KINEMATICSIntroduction to FLUID MECHANICS &  KINEMATICS
Introduction to FLUID MECHANICS & KINEMATICS
narayanaswamygdas
 
Lidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptx
Lidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptxLidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptx
Lidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptx
RishavKumar530754
 
Data Structures_Searching and Sorting.pptx
Data Structures_Searching and Sorting.pptxData Structures_Searching and Sorting.pptx
Data Structures_Searching and Sorting.pptx
RushaliDeshmukh2
 
DT REPORT by Tech titan GROUP to introduce the subject design Thinking
DT REPORT by Tech titan GROUP to introduce the subject design ThinkingDT REPORT by Tech titan GROUP to introduce the subject design Thinking
DT REPORT by Tech titan GROUP to introduce the subject design Thinking
DhruvChotaliya2
 
Introduction to Zoomlion Earthmoving.pptx
Introduction to Zoomlion Earthmoving.pptxIntroduction to Zoomlion Earthmoving.pptx
Introduction to Zoomlion Earthmoving.pptx
AS1920
 
Smart Storage Solutions.pptx for production engineering
Smart Storage Solutions.pptx for production engineeringSmart Storage Solutions.pptx for production engineering
Smart Storage Solutions.pptx for production engineering
rushikeshnavghare94
 
ELectronics Boards & Product Testing_Shiju.pdf
ELectronics Boards & Product Testing_Shiju.pdfELectronics Boards & Product Testing_Shiju.pdf
ELectronics Boards & Product Testing_Shiju.pdf
Shiju Jacob
 
Structural Response of Reinforced Self-Compacting Concrete Deep Beam Using Fi...
Structural Response of Reinforced Self-Compacting Concrete Deep Beam Using Fi...Structural Response of Reinforced Self-Compacting Concrete Deep Beam Using Fi...
Structural Response of Reinforced Self-Compacting Concrete Deep Beam Using Fi...
Journal of Soft Computing in Civil Engineering
 
Reagent dosing (Bredel) presentation.pptx
Reagent dosing (Bredel) presentation.pptxReagent dosing (Bredel) presentation.pptx
Reagent dosing (Bredel) presentation.pptx
AlejandroOdio
 
fluke dealers in bangalore..............
fluke dealers in bangalore..............fluke dealers in bangalore..............
fluke dealers in bangalore..............
Haresh Vaswani
 
IntroSlides-April-BuildWithAI-VertexAI.pdf
IntroSlides-April-BuildWithAI-VertexAI.pdfIntroSlides-April-BuildWithAI-VertexAI.pdf
IntroSlides-April-BuildWithAI-VertexAI.pdf
Luiz Carneiro
 
Avnet Silica's PCIM 2025 Highlights Flyer
Avnet Silica's PCIM 2025 Highlights FlyerAvnet Silica's PCIM 2025 Highlights Flyer
Avnet Silica's PCIM 2025 Highlights Flyer
WillDavies22
 
QA/QC Manager (Quality management Expert)
QA/QC Manager (Quality management Expert)QA/QC Manager (Quality management Expert)
QA/QC Manager (Quality management Expert)
rccbatchplant
 
five-year-soluhhhhhhhhhhhhhhhhhtions.pdf
five-year-soluhhhhhhhhhhhhhhhhhtions.pdffive-year-soluhhhhhhhhhhhhhhhhhtions.pdf
five-year-soluhhhhhhhhhhhhhhhhhtions.pdf
AdityaSharma944496
 
AI-assisted Software Testing (3-hours tutorial)
AI-assisted Software Testing (3-hours tutorial)AI-assisted Software Testing (3-hours tutorial)
AI-assisted Software Testing (3-hours tutorial)
Vəhid Gəruslu
 
MAQUINARIA MINAS CEMA 6th Edition (1).pdf
MAQUINARIA MINAS CEMA 6th Edition (1).pdfMAQUINARIA MINAS CEMA 6th Edition (1).pdf
MAQUINARIA MINAS CEMA 6th Edition (1).pdf
ssuser562df4
 
"Feed Water Heaters in Thermal Power Plants: Types, Working, and Efficiency G...
"Feed Water Heaters in Thermal Power Plants: Types, Working, and Efficiency G..."Feed Water Heaters in Thermal Power Plants: Types, Working, and Efficiency G...
"Feed Water Heaters in Thermal Power Plants: Types, Working, and Efficiency G...
Infopitaara
 
International Journal of Distributed and Parallel systems (IJDPS)
International Journal of Distributed and Parallel systems (IJDPS)International Journal of Distributed and Parallel systems (IJDPS)
International Journal of Distributed and Parallel systems (IJDPS)
samueljackson3773
 
Metal alkyne complexes.pptx in chemistry
Metal alkyne complexes.pptx in chemistryMetal alkyne complexes.pptx in chemistry
Metal alkyne complexes.pptx in chemistry
mee23nu
 
Introduction to FLUID MECHANICS & KINEMATICS
Introduction to FLUID MECHANICS &  KINEMATICSIntroduction to FLUID MECHANICS &  KINEMATICS
Introduction to FLUID MECHANICS & KINEMATICS
narayanaswamygdas
 
Lidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptx
Lidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptxLidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptx
Lidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptx
RishavKumar530754
 
Data Structures_Searching and Sorting.pptx
Data Structures_Searching and Sorting.pptxData Structures_Searching and Sorting.pptx
Data Structures_Searching and Sorting.pptx
RushaliDeshmukh2
 
DT REPORT by Tech titan GROUP to introduce the subject design Thinking
DT REPORT by Tech titan GROUP to introduce the subject design ThinkingDT REPORT by Tech titan GROUP to introduce the subject design Thinking
DT REPORT by Tech titan GROUP to introduce the subject design Thinking
DhruvChotaliya2
 
Introduction to Zoomlion Earthmoving.pptx
Introduction to Zoomlion Earthmoving.pptxIntroduction to Zoomlion Earthmoving.pptx
Introduction to Zoomlion Earthmoving.pptx
AS1920
 
Smart Storage Solutions.pptx for production engineering
Smart Storage Solutions.pptx for production engineeringSmart Storage Solutions.pptx for production engineering
Smart Storage Solutions.pptx for production engineering
rushikeshnavghare94
 
ELectronics Boards & Product Testing_Shiju.pdf
ELectronics Boards & Product Testing_Shiju.pdfELectronics Boards & Product Testing_Shiju.pdf
ELectronics Boards & Product Testing_Shiju.pdf
Shiju Jacob
 
Reagent dosing (Bredel) presentation.pptx
Reagent dosing (Bredel) presentation.pptxReagent dosing (Bredel) presentation.pptx
Reagent dosing (Bredel) presentation.pptx
AlejandroOdio
 
fluke dealers in bangalore..............
fluke dealers in bangalore..............fluke dealers in bangalore..............
fluke dealers in bangalore..............
Haresh Vaswani
 
IntroSlides-April-BuildWithAI-VertexAI.pdf
IntroSlides-April-BuildWithAI-VertexAI.pdfIntroSlides-April-BuildWithAI-VertexAI.pdf
IntroSlides-April-BuildWithAI-VertexAI.pdf
Luiz Carneiro
 
Avnet Silica's PCIM 2025 Highlights Flyer
Avnet Silica's PCIM 2025 Highlights FlyerAvnet Silica's PCIM 2025 Highlights Flyer
Avnet Silica's PCIM 2025 Highlights Flyer
WillDavies22
 

macos installation automation

  • 1. i got a new laptop Recently, I got a new laptop. This time, instead of going and installing all the software I needed willy nilly, I decided to document how I went about setting it up.
  • 2. I documented it with BASH I decided to document my set up as an executable. I scripted the whole thing in a shell script, and it’s available here: https://github.com/jonfuller/laptop/
  • 3. thoughtbot The cool guys over at thoughtbot (https://thoughtbot.com/) have done this before too. I was inspired by their work here: https://github.com/thoughtbot/laptop
  • 4. $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" If you’re a macos user, homebrew is a must. Coined as “The missing package manager for macOS” (https://brew.sh/, also https://github.com/Homebrew/brew/) A developer’s best friend. It uses the “system ruby” to install itself.
  • 5. $ brew tap caskroom/cask Homebrew Cask (https://caskroom.github.io/) is a plugin on top of Homebrew. It’s for installing things that are DMG’s and pkg’s. Install things like slack and chrome.
  • 6. $ brew cask install google-chrome $ brew cask install slack $ brew cask install microsoft-office Installing chrome, slack and office with homebrew cask.
  • 7. $ brew cask install p4merge $ brew cask install sourcetree $ brew cask install macvim $ brew cask install virtualbox Installing developer tools with homebrew cask.
  • 8. $ brew install git $ brew install openssl $ brew install wget # ← WAT!? $ brew install redis $ brew install node Installing developer tools with homebrew. Sidenote: what kind of OS doesn’t ship with wget?
  • 9. $ brew install mas $ mas install `mas search "Kindle" | head -1 | cut -d ' ' -f 1` mas (stands for Mac App Store) is a command line interface for interacting with the Mac App Store. This is a great way to keep system apps and updates as well as other 3rd party apps (e.g. Twitter, Kindle, etc.) installed and up to date.
  • 10. $ mas install `mas search "XCode" | head -1 | cut -d ' ' -f 1` On macos, setting up a dev environment, starts with XCode. That gets you GCC tools, clang, everything you’ll need for node, ruby, xamarin, ios, etc.
  • 11. $ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 $ curl -sSL https://get.rvm.io | bash -s stable $ source ~/.rvm/scripts/rvm $ rvm install 2.4 $ rvm install 2.3 $ rvm all do gem update --system $ rvm all do gem install bundler ruby is a must for most web developers; and rvm is a must for ruby developers. Bootstrap your ruby install like this.
  • 12. $ brew cask install postgres $ mas install `mas search "PG Commander" | head -1 | cut -d ' ' -f 1` $ bundle config build.pg --with-pg-config=/Applications/<...>/bin/pg_config $ echo "export PATH=$PATH:/Applications/<...>/latest/bin" >> ~/.zshrc If you’re using a database in development, you’ll probably want to try out Postgres. Install postgres, some nice tooling, and configure bundler to point at your postgres install.
  • 13. $ brew install heroku-toolbelt $ heroku update $ heroku login I love deploying apps to heroku, this’ll get you ready to go with heroku on your new machine.
  • 14. $ wget https://dl.xamarin.com/installer/XamarinInstaller.dmg $ hdiutil attach -noautoopen XamarinInstaller.dmg $ open /Volumes/Xamarin Installer/Install Xamarin.app I make mobile apps in my day job with Xamarin. There is a cask for this, but it didn’t work quite correctly. This will download and launch the latest Xamarin installer.
  • 15. $ softwareupdate -ir --verbvose Macos is no stranger to OS updates. Thankfully softwareupdate is here to help us invoke these from the command line as well.
  • 16. $ git config --global user.name “Jon Fuller” $ git config --global user.email “[email protected]” Don’t forget to configure git.
  • 17. $ git config --global merge.tool p4mergetool $ git config --global mergetool.p4mergetool.cmd <...> Then connect p4merge to git. (BeyondCompare is cool tool, but :heart: p4merge).
  • 18. no dice We use AnyConnect for VPN stuffs. The nature of Cisco AnyConnect is that they don’t distribute it freely; so, I didn’t find a great way to automate the installation of it.
  • 20. github.com/jonfuller/laptop I’m constantly updating this with new things I install. Follow along here: https://github.com/jonfuller/laptop/