Some notes on configuring a new Mac Mini M4 Pro for design & development in 2025.
Initial launch
Plugged it in and connected to
- LG 38WR85QC - W monitor via HDMI
- Logitech MX KEYS S keyboard via Bluetooth
- Logitech MX Master 3S mouse via Bluetooth
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
- Chrome
- 1Password
- Cursor (and command line)
- Right Font
- CleanShot X
- Figma
- Ghostty
- Notion
- Dropbox
- XCode from App Store
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