macOS set up for coding and development (2026 edition)
Here’s basically what I would do every time I have a set up a new macOS machine for coding. This setup is generic enough for most development and coding work. This post is now updated (May 2026) and refreshed for you new 2024 Macs! I’ve cleaned up all the old commands and validated it as I ran all of the installs below on my work 14″ MacBook Pro with an M3 Pro.
This list assumes your on macOS Sonoma and Zsh should be the default macOS shell.
The primary MacOS set up for coding
1. Install Homebrew
I shouldn’t even need to tell you to install Homebrew 😄
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. Install iTerm 2
Yup. This is #2 on the list. iTerm 2 is really that much better than Terminal.app.
brew install iterm2
3. Install QuickLook Plugins
Starting from macOS 15.0 Sequoia, third-party .qlgenerator plugins no longer works. Therefore, you would need to find the newer quick look apps that is compatible with the current macOS. Thankfully there is one called Glance that works generally well and is available for free.

brew install --cask glance-chamburr
4. Install Wget
A reminder to also install wget.
brew install wget
5. Install Visual Studio Code
brew install visual-studio-code
Brew will install appropriate version (Intel or Apple Silicon) for your Mac. If you’re interested, you can check out the cask code for visual-studio-code here. I personally prefer installing using brew vs downloading from visualstudio.com because the default installer is the universal binary and you will need to get to the alternative downloads page to get the architecture specific downloads.
Then configure Code for use in shell.
- Launch VS Code.
- Open the Command Palette (⇧⌘P) and type ‘shell command’ to find the
- Shell Command: Install ‘code’ command in PATH command.
(Source: https://izziswift.com/run-open-vscode-from-mac-terminal/)
7. Install Temurin (previously known as AdoptOpenJDK)
Note: This has been updated since AdoptOpenJDK is now deprecated in favour of Temurin.
Temurin is my current go-to JDK. You can also easily install it using Homebrew.
By default, it would install the latest version of its release.
brew install temurin
If you need specific versions like version 11 (LTS), then install it accordingly.
brew install temurin11
8. Install Tree
You can visually view the directory in a tree structure. Useful to see what’s nested in a specific directory.

brew install tree
9. Install jq
Really useful to process all those json files, especially if you deal with a lot of REST APIs and JSON configuration files.
brew install jq
10. Install rg
A blazing-fast alternative to grep that recursively searches your directories, respects .gitignore by default, and is especially handy when hunting through large codebases or config files. I only started using this recently. And I’ll confess, it was GitHub Copilot that kept suggesting rg commands until I finally gave in and installed it.
brew install rg
11. API testing tool: RapidAPI (Now free!) or Postman (Free)
I personally use Paw app for all my API prototyping and testing work. The app is now called RapidAPI since its acquisition. It’s really powerful, especially when you start to use the extensions and plugins. I have used it back when they were an independent provider. This is a $49.99 USD paid app. RapidAPI has since made the app free!

brew install --cask rapidapi
The alternative of course is Postman which has a free tier.
brew install --cask postman
12. Install Brave Browser
If you need a Chrome-based browser, Brave is a good option. I’ve also been testing with the Comet browser from Perplexity to see how good an LLM-integrated browser would be.
brew install --cask brave-browser
Customise zSH with Powerlevel10K
I’ve played around with a few other zSH setup, but the one below is still my favourite to date.
I was inspired by this guide here but have reconfigured my set up significantly with Powerlevel10k. In the previous version of my writeup, I had used Powerlevel9k theme. But thanks to a reader (see comments below), I’ve come to know of Powerlevel10k. The performance is so much faster to the point that I think its really useful to update this article to reflect my latest configuration. So, read on to see how I get iTerm2 to look like the screenshot below.

1. Install the MesloLGS NF fonts
Download the MesloLGS NF fonts listed here. There are 4 font files in total.
Install all of them.
2. Customise iTerm2 with a profile preset
Download the profile I’m using here and import it into iTerm2. To import the profile preset, go to iTerm2 -> Preferences -> Profile -> Other Actions… -> Import JSON Profiles.
If you prefer to configure it manually, the following is what I had done.
In Colors -> Color Presets…:
- Download the colour scheme for iTerm2 and import the colour scheme. You can also find others with a Google search for other colour schemes that you prefer.
- Update: I’ve been tweaking around and have since updated to this colour scheme that I slightly tweaked from the Dracula theme.
In Text:
- Change Font to MesloLGS NF
- Set the font size to 13pt
- Change cursor to Box
- Enable Blinking cursor
In Keys:
- Load the “Natural Text Editing” preset
Before you restart iTerm2, make sure this new profile is set as the default profile. Quit and restart iTerm2.
2. Install Oh my Zsh and Zsh plugins
Oh my Zsh is a configuration framework for Zsh.
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Install the Auto suggestions plugin (for Oh My Zsh)
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
Install the and zsh syntax highlighting plugin (for Oh My Zsh)
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
Then install zsh-completions.
brew install zsh-completions
Now it’s time to edit your .zshrc and load some Oh my Zsh plugins and finish the zsh-syntax-highlighting plugin.
vi ~/.zshrc
Look for the plugins section and edit as per below. You can find more and read what the plugins does here. dotenv is particularly useful as you can create .env file with your ENV variables that the plugin will automatically load when you’re inside your project root directory.
# Which plugins would you like to load?
# Standard plugins can be found in ~/.oh-my-zsh/plugins/*
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
git
zsh-autosuggestions
zsh-syntax-highlighting
macos
sudo
brew
dotenv
)
Optionally, if you want to colorise the tabs of iTerm2 with the same colour as the background, add the following line to be at the end of the file.
# Colorise the top Tabs of Iterm2 with the same color as background # Just change the 18/26/33 wich are the rgb values echo -e "\033]6;1;bg;red;brightness;18\a" echo -e "\033]6;1;bg;green;brightness;26\a" echo -e "\033]6;1;bg;blue;brightness;33\a"
3. Install and customise Powerlevel10k theme for ZSH
Powerlevel10k has a powerful configuration wizard if you prefer to set up the theme on your own. It took me a good couple of hours to get to my preferred look and feel. I would encourage you to check out the Powerlevel10k project page to see what you can do with it.
But if all you want to do is to get the same settings as mine above, feel free to copy my configurations and set it up as I had.
Download my p10k.zsh file here. Copy it to your home folder and rename it to .p10k.zsh. Or just use the following command to do that.
wget -O ~/.p10k.zsh https://gitlab.com/peaz/iterm2-customisation/-/raw/master/p10k.zsh\?inline\=false
Next install the Powerlevel10k theme.
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
The edit and change the theme in your ~/.zshrc file. There are a bunch of items that you will be adding here that may not make sense if you are not familiar with Powerlevel10k. But if you do exactly as I did, your set up should look like my screenshot above.
Add the following lines right at the top of the .zshrc file. This is to enable Powerlevel10k’s instant prompt feature.
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
Next, look for the ZSH_THEME configuration and edit it to use powerlevel10k.
ZSH_THEME="powerlevel10k/powerlevel10k"
If you install multiple versions of JDK as I did, you will also want to add the following function at the top of your ~/.zshrc to easily switch the different JDK versions should you choose to install all the different versions.
jdk() {
version=$1
export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
java -version
}
All the Powerlevel10K customisations are located in the .p10k.zsh file you downloaded from my git repository. Add the following line right at the end in your ~/.zshrc file to load it.
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
3. If using VSCode…
The latest version of powerlevel10k supposedly works well with VSCode @terminal feature now. However, to keep things simple and stable I decided to keep zsh lean and clean within VSCode. To do so, check out the following post to see how to skip loading powerlevel10k in VSCode.
Lastly, if you use VSCode and Copilot, unfortunately Github Copilot and the @terminal feature in VSCode does not play well with powerlevel10k. You will need to edit the zshrc file a fair bit to fix the issue of Copilot not being able to read from the terminal after executing a command.
Head over to the other post here to see the fix.
4. Reload .zshrc
Reload .zshrc and your zsh terminal should now look like my setup.
source ~/.zshrc
If you want to further customise the powerline10k theme, everything is in the ~/.p10k.zsh file. FYI, do note that I’ve removed a lot of the theme’s segment configurations from my file as I do not use them.
sudo authentication with an Apple Watch
If you’re an Apple Watch user, you would find this extremely useful if you are not using a TouchID enabled Mac like my Mac Studio. I came across this guide here which installs pam-watchid for sudo authentication. If you find it useful, I recommend dropping by the author’s site to thank them in the comments.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/logicer16/pam-watchid/HEAD/install.sh)" -- enable

Source: https://linkarzu.com/posts/macos/auth-apple-watch/
Other installs
Of course, you will need to install your preferred language SDKs. For me that would be Python and Golang. For you, it would likely be something else, so I would leave this section as is. You should be able to find the best way to install the SDKs if you don’t already have a preferred method.
1. Go
brew install go
2. Python
I’ve started using pyenv to manage my python environment.
brew install pyenv
Add the following lines just before the VSCode Shell Integration line.
# pyenv export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)"
Source the .zshrc file
source ~/.zshrc
Then, install the python version of your choice using pyenv. Set the version to global.
pyenv install 3.12.0 pyenv global 3.12.0
3. VLC
Because VLC? 😄 Not exactly coding related but you always need to view some videos no?
brew install vlc
4. IINA
Or maybe use IINA instead of VLC. IINA is a modern, native macOS media player that handles virtually every format VLC does, but without the clunky feel.
brew install iina
5. Wake On LAN Utility
I use the wakeonlan command to make my home server that goes to sleep when unused.
brew install wakeonlan
6. Alfred + Powerpack
I’ve written about Alfred a few times here already. Alfred is one of the few utility apps that I can’t live without now on my Mac. Essentially, it’s a search utility, working pretty much like Spotlight of macOS. But what’s really cool and relevant for a development and coding set up is the ability to create workflows.

Find out more about what Alfred can do for you here. The basic version of Alfred is available free on the Mac App Store or from their website as well, which makes it a real no brainer to have it installed on your Mac.
7. Mos
I’ve started using Mos on my work machine as the Logitech software is getting really bloated. The only exception is for my own machine where I use a G502 x gaming mouse where the Logitech G Hub mouse is required to fully configure the mouse properly.
Mos is a free, open-source menu bar utility that smooths out mouse wheel scrolling, lets you reverse scroll direction independently for mouse and trackpad, and even supports per-app profiles and custom button bindings.
brew install --cask mos
8. Stats
Stats is a pretty good menubar utility you all the statistics you ever need to know of your Mac. Best of all, its free!
brew install --cask stats
9. Rectangle
Yet another free and open source utility, Rectangle is makes it very easy to organise the position of app windows on macOS. I still find Rectangle better than the default macOS Tahoe’s window arrangement feature.
brew install --cask rectangle
Let me know what’s missing!
Feel free to comment if there’s anything else you think I should really add to this list too! Always open to suggestions how I can improve this baseline set up.
If this post has been useful, support me by buying me a latte or two 🙂

how can we include in macOS, do you have any pointer for me,.
Can you help to clarify what you want to include? Your question is unclear to me unfortunately.
This is a great guide but Powerlevel9k isn’t maintained anymore. I’d recommend https://github.com/romkatv/powerlevel10k
Wow. I’ve not checked out 10k yet. Thanks for pointing it out. It looks awesome. Will update the article soon
How about vscode integrated terminal setup after iterm2 powerlevel10?
You just need to change the VS Code terminal fonts to match the same as iTerm and it would be good.
This was super helpful — I had a lot of this done but your pointers to other dev tools was great! Thanks!
Glad it was helpful!