Skip to main content

Overview

This guide covers the installation of Gentleman.Dots on macOS systems. The setup includes terminal emulators, shells, window managers, and Neovim with AI integrations optimized for macOS.
Want bleeding edge features? Check out the nix-migration branch for the latest experimental macOS-focused configurations. Note that it may have occasional instabilities.

Prerequisites

Before starting the installation, ensure you have:
  • macOS 10.15 (Catalina) or later
  • Administrator privileges
  • Internet connection for downloading packages
  • At least 2GB of free disk space
  • Xcode Command Line Tools (installed automatically during setup)

Installation Methods

Automatic Installation

Recommended: Use the automated script for quick setup

Manual Installation

Step-by-step manual configuration for advanced users

Automatic Installation

The automated installation script is the quickest way to get started with Gentleman.Dots on macOS.
You must install the Iosevka Term Nerd Font before running the script. The font is required for proper terminal display.
1

Download the Installation Script

Download the automated installation script from the repository:
curl -O https://raw.githubusercontent.com/Gentleman-Programming/Gentleman.Dots/refs/heads/main/install-linux-mac.sh
2

Make the Script Executable

Grant execution permissions to the script:
sudo chmod +x install-linux-mac.sh
3

Run the Installation

Execute the script and follow the interactive prompts:
bash ./install-linux-mac.sh
The script will:
  • Install Xcode Command Line Tools (if needed)
  • Install Rust and Homebrew
  • Configure your chosen terminal emulator (Alacritty, WezTerm, Kitty, or Ghostty)
  • Set up your selected shell (Fish, Zsh, or Nushell)
  • Install your preferred window manager (Tmux or Zellij)
  • Configure Neovim with AI integrations (OpenCode, Claude Code, Gemini)
4

Restart Your Terminal

After installation completes, restart your terminal:
exec $SHELL

Manual Installation

1

Install Xcode Command Line Tools

Install the Xcode Command Line Tools (required for compilation):
xcode-select --install
Follow the prompts to complete the installation.
2

Clone the Repository

Clone the Gentleman.Dots repository:
git clone [email protected]:Gentleman-Programming/Gentleman.Dots.git
cd Gentleman.Dots
3

Install Rust

Install Rust programming language:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. $HOME/.cargo/env
4

Install Homebrew

Install Homebrew package manager:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Add Homebrew to your PATH
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.bashrc
eval "$(/opt/homebrew/bin/brew shellenv)"
5

Install Iosevka Term Nerd Font

Install the required Nerd Font using Homebrew:
brew tap homebrew/cask-fonts
brew install --cask font-iosevka-term-nerd-font
6

Choose and Install a Terminal Emulator

Select one of the following terminal emulators:
brew install alacritty --cask

# Copy configuration
mkdir -p ~/.config/alacritty
cp alacritty.toml ~/.config/alacritty/alacritty.toml
7

Choose and Install a Shell

Select and configure your preferred shell:
# Install Nushell and dependencies
brew install nushell carapace zoxide atuin jq bash starship fzf

# Create directories
mkdir -p ~/.cache/starship
mkdir -p ~/.cache/carapace
mkdir -p ~/.local/share/atuin

# Copy configuration files
cp -rf bash-env-json ~/.config/
cp -rf bash-env.nu ~/.config/
cp -rf starship.toml ~/.config/

# Copy Nushell config (macOS-specific location)
mkdir -p ~/Library/Application\ Support/nushell

# Update config for macOS Homebrew path
if grep -q "/home/linuxbrew/.linuxbrew/bin" GentlemanNushell/env.nu; then
  awk -v search="/home/linuxbrew/.linuxbrew/bin" -v replace="    | prepend '/opt/homebrew/bin'" '
  $0 ~ search {print replace; next}
  {print}
  ' GentlemanNushell/env.nu > GentlemanNushell/env.nu.tmp && mv GentlemanNushell/env.nu.tmp GentlemanNushell/env.nu
else
  echo "    | prepend '/opt/homebrew/bin'" >> GentlemanNushell/env.nu
fi

cp -rf GentlemanNushell/* ~/Library/Application\ Support/nushell/
8

Choose and Install a Window Manager

Select either Tmux or Zellij:
# Install Tmux
brew install tmux

# Install Tmux Plugin Manager
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

# Copy configuration
mkdir -p ~/.tmux
cp -r GentlemanTmux/.tmux/* ~/.tmux/
cp GentlemanTmux/.tmux.conf ~/

# Install plugins
tmux new-session -d -s plugin-installation 'source ~/.tmux.conf; tmux run-shell ~/.tmux/plugins/tpm/bin/install_plugins'
tmux kill-session -t plugin-installation
9

Install Neovim

Install Neovim and all required dependencies:
# Install core dependencies
brew install nvim node npm git gcc fzf fd ripgrep coreutils bat curl lazygit tree-sitter

# Install AI CLI tools
curl -fsSL https://opencode.ai/install | bash
curl -fsSL https://claude.ai/install.sh | bash
brew install gemini-cli

# Copy Neovim configuration
mkdir -p ~/.config/nvim
cp -r GentlemanNvim/nvim/* ~/.config/nvim/

# Configure OpenCode with Gentleman theme and agent
mkdir -p ~/.config/opencode/themes
cp GentlemanOpenCode/opencode.json ~/.config/opencode/
cp GentlemanOpenCode/themes/gentleman.json ~/.config/opencode/themes/

# Configure Obsidian path (optional)
mkdir -p ~/.config/obsidian/templates
nvim ~/.config/nvim/lua/plugins/obsidian.lua
# Update the path field to your Obsidian vault location
10

Set Default Shell

Set your chosen shell as the default:
shell_path=$(which fish)
sudo sh -c "grep -Fxq \"$shell_path\" /etc/shells || echo \"$shell_path\" >> /etc/shells"
sudo chsh -s "$shell_path" "$USER"
11

Restart Your Terminal

Restart your terminal for all changes to take effect:
exec $SHELL

macOS-Specific Considerations

Homebrew Paths

On Apple Silicon Macs (M1/M2/M3), Homebrew installs to /opt/homebrew. On Intel Macs, it installs to /usr/local. The installation script handles this automatically.

Nushell Configuration Location

Unlike Linux, Nushell configuration on macOS is stored in:
~/Library/Application Support/nushell/
The installation script automatically handles this difference.

Terminal Emulator Integration

All terminal emulators integrate seamlessly with macOS features:
  • Kitty: Full support for macOS keyboard shortcuts
  • Alacritty: Native macOS window management
  • WezTerm: macOS menu bar integration
  • Ghostty: Optimized for macOS performance

System Preferences

For the best experience, enable “Use Option as Meta key” in your Terminal preferences. This allows proper key binding functionality in Neovim and other CLI tools.

Troubleshooting

If Xcode installation fails:
  1. Try installing from the App Store:
    • Open the App Store
    • Search for “Xcode”
    • Install the full Xcode application
  2. Then install command line tools:
    sudo xcode-select --reset
    xcode-select --install
    
If Homebrew doesn’t work on M1/M2/M3 Macs:
  1. Ensure the correct path is in your shell config:
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
    source ~/.zshrc
    
  2. Verify Homebrew is accessible:
    which brew
    # Should output: /opt/homebrew/bin/brew
    
If your terminal emulator fails to start:
  1. Check if it’s allowed in Security & Privacy:
    • Open System Preferences → Security & Privacy
    • Check if the app is blocked
    • Click “Open Anyway” if needed
  2. Reset the app:
    # For Kitty
    rm -rf ~/.config/kitty
    cp -r GentlemanKitty/* ~/.config/kitty
    
If you encounter permission errors:
# Fix Homebrew permissions
sudo chown -R $(whoami) $(brew --prefix)/*

# Fix config directory permissions
sudo chown -R $(whoami) ~/.config
If AI integrations aren’t working:
  1. Verify Node.js version:
    node --version  # Should be 18+
    
  2. Reinstall AI CLI tools:
    curl -fsSL https://opencode.ai/install | bash
    curl -fsSL https://claude.ai/install.sh | bash
    
  3. Check PATH configuration:
    echo $PATH | grep opencode
    

Next Steps

Customize Your Setup

Learn how to customize terminal colors, key bindings, and more

Neovim Configuration

Explore Neovim features and AI integrations

Explore Nix Branch

Check out the experimental nix-migration branch for cutting-edge features

Join the Community

Get help and share your setup with the community
After installation, the Gentleman.Dots configuration is ready to use! Try opening Neovim and exploring the AI integrations by typing /agent in OpenCode to select the Gentleman agent.

Build docs developers (and LLMs) love