Setting Up a New Mac

AppleMacDesignDevelopment
4 Aug 2025

Some notes on configuring a new Mac Mini M4 Pro for design & development in 2025.

Initial launch

Plugged it in and connected to

Updating system

Updating computer names

You can update the name of the computer directly from the

 > General > About

But can also update the additional names via the command line

sudo scutil --set HostName ComputerName
sudo scutil --set LocalHostName ComputerName
sudo scutil --set ComputerName ComputerName

Installing software

Setting up for development

Homebrew

Install by pasting the command from website into terminal.

Setup .zprofile as suggested at the end of the installation

echo >> /Users/username/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/username/.zprofile
echo >> /Users/username/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/username/.zprofile

Then reload the shell

source ~/.zprofile
source ~/.zprofile

Check everything is OK by running brew doctor.

Git

Install git via Homebrew

 brew install git
 brew install git

Check that it's the right version of git being used (not Apple's)

which git
/opt/homebrew/bin/git
which git
/opt/homebrew/bin/git

Setup identity

git config --global user.email "you@example.com"
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Working with Github

Setting up an SSH Key

By default macs don't have ssh keys set up so generate a key and copy it to the clipboard.

ssh-keygen -t ed25519 -C "youraddress@email.com"
pbcopy < ~/.ssh/id_ed25519.pub
ssh-keygen -t ed25519 -C "youraddress@email.com"
pbcopy < ~/.ssh/id_ed25519.pub

The add that to Github via SSH Keys page.

Bonus: 1Password now has an SSH file option.

Cloning a repo locally

This should be enough to start cloning repositories.

git clone git@github.com:username/repo-name.git
git clone git@github.com:username/repo-name.git

NVM & Node

NVM allows for mulitple version of Node and NPM to exist on the same machine.

Install by pasting the command from the website into terminal.

Then install the most recent LTS version as the default.

nvm install --lts
nvm install --lts

This should add some lines to .zprofile

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

Installing Bun

Install by pasting the command from the website into terminal.

This should add some lines to .zprofile

export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

Setting up terminal

Using Ghostty instead of terminal, means styling can be customised more easily. Oh My Zsh is also useful for customising the command prompt and some extra DX like autosuggestions.

Oh My Zsh

This is useful for changing the command prompt to this

~ »
~ »

Install by pasting the command from the Github page

Autosuggestions plugin via

git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions

Check the Github page

Now, organise .zprofile and .zshrc better

# .zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

export ZSH="$HOME/.oh-my-zsh"

# nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

# bun
export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"
# .zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

export ZSH="$HOME/.oh-my-zsh"

# nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

# bun
export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"
# .zshrc
ZSH_THEME="minimal"

plugins=(
    git
    zsh-autosuggestions
)

DISABLE_AUTO_TITLE="true"

source $ZSH/oh-my-zsh.sh

# bun completions
[ -s "/Users/chrismasters/.bun/_bun" ] && source "/Users/chrismasters/.bun/_bun"

# nvm completions
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# .zshrc
ZSH_THEME="minimal"

plugins=(
    git
    zsh-autosuggestions
)

DISABLE_AUTO_TITLE="true"

source $ZSH/oh-my-zsh.sh

# bun completions
[ -s "/Users/chrismasters/.bun/_bun" ] && source "/Users/chrismasters/.bun/_bun"

# nvm completions
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

Ghostty

For a full guide to options see the documentation.

Create a new config file at this location ~/.config/ghostty/config

font-family = "SF Mono"
font-size = 10.5

shell-integration-features = no-cursor
cursor-style = block
cursor-opacity = 0.3

background-opacity = 0.9
font-family = "SF Mono"
font-size = 10.5

shell-integration-features = no-cursor
cursor-style = block
cursor-opacity = 0.3

background-opacity = 0.9

Note: to use SF Mono it needs to be installed from Apple Fonts

Remove last login on launch

Adding ~/.hushlogin prevents this

touch .hushlogin