note
My Mac Development setup
My Mac Development setup
This is the process that I follow to setup environment in a MacOS system. These steps are mainly focused on creating a development environment with all the dependencies needed for web and mobile development. But it also comes with my favourite apps and configuration that is focused on using your Mac with pure keyboard.
Prerequisites
Bootstrap
This single command installs Homebrew, core tooling (coreutils curl git mise stow), clones the dotfiles repo into ~/dotfiles, and symlinks the configs via GNU Stow.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/FeernandoOFF/dotfiles/master/scripts/setup.sh)"
You will need to add homebrew to your zshrcPATH
ZSH
Sets up oh-my-zsh, powerlevel10k and zsh-syntax-highlighting (run after the bootstrap has cloned the repo).
~/dotfiles/scripts/zsh.sh
Basics
The bootstrap command above installs the following dependencies along with a dotfiles folder located at your home directory, it comes with configurations for many other apps that I use and I’ll be covering it as I walk trough this guide.
- Brew
- Mise
- Dotfiles
- OhMyZSH
Development Workspace
Editors & Apps
- NeoVim : General Text/Code editor
- XCode : iOS development IDE.
- Jetbrains IDEs : IDE for Android Development, installed trough Jetbrains toolbox.
- Ghostty: Is a terminal emulator, replacement for the terminal app.
- Herdr : Terminal multiplexor and what I use NeoVim with
- Yazi : Terminal-based file navigator.
- Lazygit : A terminal git client.Useful to quickly visualise and perform git operations
- LazyDocker : A terminal docker client.Useful to easely manage containers.
- FZF: A Fuzzy finder for locating files on a whole OS
~/dotfiles/scripts/terminal_apps.sh
Tools
JavaScript
- Bun
- Node
- Pnpm
- Python
- Golang
- Podman
- Wasmer - WebAssembly
- zoxide
~/dotfiles/scripts/tools.sh
Configuring Apps
cd ~/dotfiles && make stow
Stow-managed: zsh, tmux, nvim, zellij, ghostty, lazygit, herdr, ideavim.
Manual imports (see repo README): Raycast, JetBrains, Xcode, Warp, Obsidian, Vimium.
Mac-Specific
Mac enhancement
Although MacOS is a great system and comes with good enough defaults, I have my preferences that can be divided in two parts, the first is default settings on the general OS, and the second are apps that affect OS-wide, like change the launcher or window manager.
Settings
This section focuses on modifying the default values from macOS to suit my preferences. The following script will affect these areas:
- Dock: We will set an autohide
- Finder: Show path (View → Show Path)
- Fonts: Install Fira core & Jetbrains
~/dotfiles/scripts/mac_defaults.sh
Apps
As I mentioned before macOS comes with good defaults, but there are apps that are primordial for my workflow to work properly, these are the following apps.
- Raycast : Raycast is a replacement to spotlight that offers a huge amount of plugins and keyboard navigation.
Karabiner: Karabiner is a keyboard customiser for macOS. I mainly use it to make BlockMay a hyper key.
Escape = SuperKey
{
"description": "Hyper Key: map Caps Lock to Shift-Command-Control (Escape if alone)",
"manipulators": [
{
"from": {
"key_code": "caps_lock",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "left_shift",
"modifiers": ["left_command", "left_control"]
}
],
"to_if_alone": [{ "key_code": "escape" }],
"type": "basic"
}
]
}
- Homerow: Homerow allows you to use Vim Motions in the whole OS.
- Proton Pass : I use ProtonPass as my password manager, but also as my SSH key storage, so it will be needed for any ssh-related credentials
- Zen Browser : After arc got deprecated I use zen as my main browser
- Ice: Hide items on your bar
Archive
- 1Password** : **
I use 1Password as my password manager but also as my SSH key store, so anything to do with git credentials is stored there - Install this from the website.\
Arc : Arc is the best browser available for MacOS,Windows and iPhone.
- Sync
- Install 1Password extension
- Install UBlock Extension
Install VimiumC
:https:// [^ G H L d f g j k u]
~/dotfiles/scripts/mac_apps.sh
Extra apps
For extra apps, you can refer to my Apps, on the MacOS section. Where I list all the apps that I use on my device, not only for development, but also for design and other use cases.
Also you can dive deep in each specific app and see my configuration.
Some that are not worth to be included are:
- IntelliJ Toolbox
- Podman
- NordVPN
Keybindings
For a comprehensive list of how I use this software almost fully on keyboard, please see: