/mac-dev-setup

An easy script to install your mac environnement

Primary LanguageShellThe UnlicenseUnlicense

mac-dev-setup

made-with-bash License: Unlicense Build Status

This script allow you to install all the tools you need for setting up your dev environnement on your brand new mac.

Launch installation

curl https://raw.githubusercontent.com/thomaspoignant/mac-dev-setup/master/src/mac-dev-setup.sh | bash

What does it install?

It will install all this tools:

  • Homebrew

    The Missing Package Manager for macOS, Homebrew installs the stuff you need that Apple (or your Linux system) didn’t.

    After the installation you will be available to install almost everything you need for your mac. You can list installed packages with brew list and brew cask list.

    I recommend running brew doctor every now and then to make sure things are good and brew cleanup to remove unused files.

  • iTerm2

    iTerm2 is a replacement for Terminal (https://www.iterm2.com/).

    My favorites is that you can split your terminal in multiple views.

    iTerm2 screenshot

  • zsh / oh-my-zsh

    A delightful community-driven (with 1500+ contributors) framework for managing your zsh configuration. Includes 200+ optional plugins (rails, git, OSX, hub, capistrano, brew, ant, php, python, etc), over 140 themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community. https://ohmyz.sh/

    There is a ton of great things to do with oh-my-zsh. Powerlevel10k is my theme of choice.

    There are also a lot of plugins availablem go check it you will certainly find some things great for your usage.

  • Most used command line tools.

    • ack is designed as a replacement for 99% of the uses of grep.

    • Programmable completion functions for bash.

    • Top-like interface for container metrics

      ctop provides a concise and condensed overview of real-time metrics for multiple containers:

      ctop

      as well as an [single container view][single_view] for inspecting a specific container.

      ctop comes with built-in support for Docker and runC; connectors for other container and cluster systems are planned for future releases.

    • Command line tool and library for transferring data with URLs.

    • Similar to top but allows you to scroll vertically and horizontally.

    • jq is a lightweight and flexible command-line JSON processor.

    • libpq is the postgres client command line.

    • The next gen ls command.

      Pimp your ls command to display icons and color to have a better experience.

      lsd screenshot

    • A modern and intuitive terminal-based text editor.

      micro screenshot

    • A collection of simplified and community-driven man pages.

      tldr screenshot

    • tree is a recursive directory-listing program that produces a depth indented listing of files.

      tree screenshot

    • Software package for retrieving files using HTTP, HTTPS, FTP and FTPS.

    • Tracks your most used directories, based on 'frecency'.

      After a short learning phase, z will take you to the most 'frecent' directory that matches ALL of the regexes given on the command line, in order.

      For example, z foo bar would match /foo/bar but not /bar/foo.

  • GIT

    Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

    • Some great aliases to make your life easier when using GIT command line.

      There are a lot of useful aliases, like git ls or git ll who allow to see your git history. There is a lot more you should check https://github.com/thomaspoignant/gitalias to see the list of available aliases.

    • Prevents you from committing passwords and other sensitive information to a git repository.

      You're not done yet! You MUST install the git hooks for every repo that you wish to use with git secrets --install.

  • IDE

    Jetbrains make the best IDEs in the market, Intellij, Webstorm or Goland are awesome.

    We don't want to install all of them because you propably don't need all of them, but the jetbrains toolbox allow you to manage all your installation and update of your jetbrains products.

    A great text editor who can be an IDE sometimes.

  • Development

    API

    • ngrok
      ngrok is a great tool who allow to create a port tunnel from your local development environement to internet. So you can expose your local APIs online for testing purpose.

    • postman
      postman allow to quickly and easily send REST, SOAP, and GraphQL requests directly within Postman.

    AWS

    • awscli
      Official AWS command line

    • saws
      A supercharged AWS command line interface.

    Database tools

    • DBeaver
      DBeaver is a nice database viewer who works with most of the recent DB engine.

    FTP/SFTP

    • Cyberduck
      cyberduck is a libre server and cloud storage browser for Mac.

    Docker

    Should I present what docker is?

    To work with docker we will install the docker runtime and also the docker command line completion who help you to write docker command like a boss.

    • docker
    • docker command line completion

    Languages

    The main languages I am working with are Java and Go, but here are some of the main languages you always need, on projects.

    • Java
      Install the last version of the openJDK JVM.
      It also install maven and gradle.
    • Go / Golang
      Install the last go version and set GOPATH into your shell profile file.
    • NodeJS
      Install nvm and the last version of nodejs.
    • Python
      Install python and pip so you are ready to go.
    • Terraform
      Install the last version of terraform and you are ready to code your infrastructure.
  • Productivity tools

    Development is not coding all day, you also have to collaborate with people and to use you mac for different kind of things.

    Here are the most common tools I use every day to work.

    • Note taking app.

    • This is the best screen capture app right now.

      Export your video capture as a GIF and sharing them is super easy.

    • Move and resize windows in macOS using keyboard shortcuts or snap areas.

      I use Rectangle a lot — you should master its shortcuts. The main ones I use are:

        Left half: ⌥⌘ Arrow-Left
        Right half: ⌥⌘ Arrow-Right
        Top half: ⌥⌘ Arrow-Up
        Bottom half: ⌥⌘ Arrow-Down
        Center window: ⌥⌘ C
        Maximize window: ⌥⌘ F
      
    • The Collaboration Hub. I am not sure I need to present what is slack.

    • Music streaming.

    • Messaging system. I am not sure I need to present what is whatsapp.

    • Free and open source cross-platform multimedia player that plays most multimedia files, and various streaming protocols.

  • Web browsers

    Because most of the development projects need some web related tools, you need to have most importants web browser of the market.

    Here we install, the 3 main one:

How can I contribute?

If you want to contribute, please open an issue or a pull request and let's talk about the new feature 😉