Skip to main content

Choose Your Installation Method

Gentleman.Dots offers two installation approaches. The automatic installer is recommended for most users, while manual installation gives you complete control over every component.

Automatic Installation

Quick, interactive, handles everything for you (5-10 minutes)

Manual Installation

Step-by-step control over each component (20-30 minutes)

Automatic Installation

The automatic installer is an interactive bash script that detects your OS, asks for your preferences, and installs everything with progress indicators.

Prerequisites

  • macOS 11.0 (Big Sur) or later
  • Xcode Command Line Tools will be installed automatically if missing

Installation Steps

1

Download the installer

Download the installation script from the repository:
curl -O https://raw.githubusercontent.com/Gentleman-Programming/Gentleman.Dots/refs/heads/main/install-linux-mac.sh
This downloads the install-linux-mac.sh script to your current directory.
2

Make it executable

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

Run the installer

Execute the installation script:
bash ./install-linux-mac.sh
The script maintains sudo privileges automatically during installation. You’ll only need to enter your password once at the beginning.
4

Answer the prompts

The installer will ask you to choose:
  1. Operating System: mac or linux
  2. Terminal Emulator: alacritty, wezterm, kitty, ghostty, or none
  3. Font Installation: Whether you already have Iosevka Term Nerd Font
  4. Shell: fish, zsh, or nushell
  5. Window Manager: tmux or zellij
  6. Neovim: Whether to install and configure Neovim with AI
Which operating system are you using?
1) mac
2) linux
#? 1

Which terminal emulator do you want to install?
1) alacritty
2) wezterm
3) kitty
4) ghostty
5) none
#? 2

Do you already have Iosevka Term Nerd Font installed?
1) Yes
2) No
#? 2

Which shell do you want to install?
1) fish
2) zsh
3) nushell
#? 3

Which window manager do you want to install?
1) tmux
2) zellij
#? 1

Do you want to install Neovim?
1) Yes
2) No
#? 1
5

Wait for installation

The script will:
  • Clone the repository to ./Gentleman.Dots
  • Install Homebrew (if not present)
  • Install your chosen components
  • Copy configuration files to the correct locations
  • Set up AI tools (OpenCode, Claude Code, Gemini)
  • Configure your default shell
  • Clean up temporary files
Progress indicators show the status of each installation step.
6

Restart your shell

After installation completes, the script attempts to restart your shell automatically:
Configuration complete. Restarting shell...
If the shell doesn’t restart automatically:
# Restart your terminal or run:
exec $SHELL

# Or on Windows WSL, restart your terminal application

What Gets Installed

The automatic installer handles:
  • Homebrew package manager (macOS/Linux)
  • Rust toolchain via rustup
  • Node.js for Neovim plugins
  • Git, build tools, curl, wget
Your chosen terminal emulator:
# Alacritty
~/.config/alacritty/alacritty.toml

# WezTerm  
~/.config/wezterm/wezterm.lua

# Kitty (macOS only)
~/.config/kitty/

# Ghostty
~/.config/ghostty/
Shell configurations:
# Fish
~/.config/fish/config.fish

# Zsh
~/.zshrc
~/.p10k.zsh
~/.oh-my-zsh/

# Nushell
~/.config/nushell/config.nu  # Linux
~/Library/Application Support/nushell/  # macOS
Shell enhancements:
  • Starship prompt (~/.config/starship.toml)
  • Zoxide for directory jumping
  • Atuin for shell history
  • Carapace for completions
  • fzf for fuzzy finding
# Tmux
~/.tmux.conf
~/.tmux/plugins/  # TPM and plugins

# Zellij
~/.config/zellij/
# Neovim configuration
~/.config/nvim/
├── init.lua
├── lua/
   ├── config/
   └── plugins/
└── stylua.toml

# OpenCode configuration
~/.config/opencode/
├── opencode.json
└── themes/gentleman.json

# Obsidian directory
~/.config/obsidian/
└── templates/
Neovim dependencies:
  • nvim, gcc, fzf, fd, ripgrep, bat, curl
  • lazygit, tree-sitter, coreutils
  • gemini-cli for Gemini integration
AI CLIs:
  • OpenCode CLI (curl -fsSL https://opencode.ai/install | bash)
  • Claude Code CLI (curl -fsSL https://claude.ai/install.sh | bash)
Iosevka Term Nerd FontLinux:
~/.local/share/fonts/IosevkaTerm*
macOS:
# Installed via Homebrew Cask to system fonts
brew install --cask font-iosevka-term-nerd-font

Troubleshooting Automatic Install

If Homebrew installation gets stuck:
# Cancel the script (Ctrl+C) and install Homebrew manually:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Then re-run the installer
bash ./install-linux-mac.sh
If the script couldn’t change your default shell:
# Manually change to your chosen shell
# For fish:
chsh -s $(which fish)

# For zsh:
chsh -s $(which zsh)

# For nushell:
chsh -s $(which nu)

# Verify:
echo $SHELL
If Tmux plugins failed to install:
# Start tmux
tmux

# Inside tmux, press: Ctrl+a then I (capital i)
# This triggers TPM to install all plugins
First launch might show errors while plugins install:
# Open Neovim
nvim

# Wait for Lazy.nvim to install all plugins
# Then quit and reopen:
:q
nvim

Manual Installation

Manual installation gives you complete control and helps you understand each component. Perfect for customization or learning.

Prerequisites

All platforms need:
  • Administrator/sudo privileges
  • Git installed
  • Internet connection

Clone the Repository

1

Clone Gentleman.Dots

git clone [email protected]:Gentleman-Programming/Gentleman.Dots.git
cd Gentleman.Dots
All subsequent commands assume you’re in the Gentleman.Dots directory.

Platform-Specific Setup

1

Install Xcode Command Line Tools

xcode-select --install
2

Install Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. $HOME/.cargo/env
3

Install Homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
eval "$(/opt/homebrew/bin/brew shellenv)"
4

Install Iosevka Font

brew tap homebrew/cask-fonts
brew install --cask font-iosevka-term-nerd-font

Install Terminal Emulator

Choose one terminal emulator:
brew install alacritty --cask
mkdir -p ~/.config/alacritty
cp alacritty.toml ~/.config/alacritty/alacritty.toml

Install Shell

Choose one shell and install it with its dependencies:
1

Copy environment files

cp -rf bash-env-json ~/.config/
cp -rf bash-env.nu ~/.config/
2

Install Nushell and tools

brew install nushell carapace zoxide atuin jq bash starship fzf
mkdir -p ~/.cache/starship
mkdir -p ~/.cache/carapace
mkdir -p ~/.local/share/atuin
cp -rf starship.toml ~/.config/
3

Configure Nushell

mkdir -p ~/Library/Application\ Support/nushell

# Update config for macOS
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/

Install Window Manager

1

Install Tmux

brew install tmux
2

Install TPM (Tmux Plugin Manager)

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
3

Copy configuration

mkdir -p ~/.tmux
cp -r GentlemanTmux/.tmux/* ~/.tmux/
cp GentlemanTmux/.tmux.conf ~/
4

Install plugins

tmux new-session -d -s plugin-installation 'source ~/.tmux.conf; tmux run-shell ~/.tmux/plugins/tpm/bin/install_plugins'
# Wait a few seconds for installation
sleep 5
tmux kill-session -t plugin-installation
Or manually after starting tmux: Press Ctrl+a then I (capital i)

Install Neovim

1

Create Obsidian directory

mkdir -p ~/.config/obsidian/templates
This directory will be used for note-taking with the Obsidian plugin.
2

Install Node.js (if needed)

# Check if Node.js is installed
node --version

# If not installed:
brew install node
3

Install AI CLI tools

# Install Claude Code
curl -fsSL https://claude.ai/install.sh | bash

# Install OpenCode
curl -fsSL https://opencode.ai/install | bash

# Install Gemini CLI
brew install gemini-cli
4

Configure OpenCode

mkdir -p ~/.config/opencode/themes
cp GentlemanOpenCode/opencode.json ~/.config/opencode/
cp GentlemanOpenCode/themes/gentleman.json ~/.config/opencode/themes/
5

Install Neovim and dependencies

brew install nvim git gcc fzf fd ripgrep coreutils bat curl lazygit tree-sitter
6

Copy Neovim configuration

mkdir -p ~/.config/nvim
cp -r GentlemanNvim/nvim/* ~/.config/nvim/
7

Configure Obsidian vault (optional)

Update the Obsidian plugin configuration with your vault path:
# Edit the config file
nvim ~/.config/nvim/lua/plugins/obsidian.lua

# Change this line:
# path = "/your/notes/path",
# To your actual path, for example:
# path = "~/.config/obsidian",
8

Launch Neovim

nvim
Lazy.nvim will automatically install all plugins on first launch. This may take a few minutes.

Set Default Shell

1

Find shell path

# For Fish
which fish

# For Zsh
which zsh

# For Nushell
which nu
2

Add shell to /etc/shells

# Replace SHELL_PATH with output from previous step
SHELL_PATH=$(which fish)  # or zsh, or nu

sudo sh -c "grep -Fxq \"$SHELL_PATH\" /etc/shells || echo \"$SHELL_PATH\" >> /etc/shells"
3

Change default shell

sudo chsh -s $SHELL_PATH $USER
On some systems, you may need to log out and back in for the change to take effect.
4

Verify

echo $SHELL
# Should show your new shell path

Restart Shell

# Restart your shell
exec $SHELL

# Or close and reopen your terminal

Windows WSL Setup

Windows users must complete these steps before running the automatic installer or following the manual installation guide.
1

Install WSL

Open PowerShell as Administrator and run:
wsl --install
wsl --set-default-version 2
Restart your computer when prompted.
2

Install Ubuntu

wsl --install -d Ubuntu
To see other available distributions:
wsl --list --online
To install a different distribution:
wsl --install -d <distribution-name>
3

Install Iosevka Font on Windows

  1. Download Iosevka Term Nerd Font from Nerd Fonts GitHub
  2. Extract the ZIP file
  3. Right-click each .ttf or .otf font file
  4. Select “Install for all users”
4

Install Terminal Emulator on Windows

Choose one:Alacritty:
  1. Download from GitHub Releases
  2. Place alacritty.exe in your PATH
  3. Copy config:
mkdir $env:APPDATA\alacritty
Copy-Item -Path alacritty.toml -Destination $env:APPDATA\alacritty\alacritty.toml
  1. In alacritty.toml, uncomment:
[shell]
program = "wsl.exe"
args = ["--cd", "~"]
WezTerm:
  1. Download and install
  2. Create environment variable HOME = C:\Users\your-username
  3. Copy config:
Copy-Item -Path .wezterm.lua -Destination $HOME
  1. In .wezterm.lua, uncomment:
config.default_domain = 'WSL:Ubuntu'
config.front_end = "WebGpu"
config.max_fps = 120
If WezTerm doesn’t load config:
mkdir $HOME\.config\wezterm
Copy-Item -Path .wezterm.lua -Destination $HOME\.config\wezterm\wezterm.lua
Kitty:
  1. Download and install
  2. Copy config:
Copy-Item -Path GentlemanKitty\* -Destination $HOME\.config\kitty -Recurse
5

Install Chocolatey and win32yank

In PowerShell as Administrator:
# Install Chocolatey
Set-ExecutionPolicy Bypass -Scope Process -Force; `
[System.Net.ServicePointManager]::SecurityProtocol = `
[System.Net.ServicePointManager]::SecurityProtocol -bor 3072; `
iwr https://community.chocolatey.org/install.ps1 -UseBasicParsing | iex

# Install win32yank (required for Neovim clipboard)
choco install win32yank
6

Launch WSL and update

Open your installed WSL distribution and update:
sudo apt-get update
sudo apt-get upgrade
7

Continue with installation

Now you can proceed with either the automatic installation or manual installation inside WSL.

Post-Installation

1

Verify installations

# Check shell
echo $SHELL

# Check Neovim
nvim --version

# Check window manager
tmux -V  # or: zellij --version

# Check AI tools
opencode --version
claude --version
2

Test AI integration

# Start OpenCode with Gentleman agent
opencode
# Type: /agent
# Select: gentleman
3

Customize (optional)

  • Edit ~/.config/nvim/lua/plugins/disabled.lua to switch AI plugins
  • Edit ~/.config/opencode/opencode.json to change models or agents
  • Customize colors in ~/.config/starship.toml

Next Steps

Quickstart Guide

Learn how to use your new development environment with practical examples

If you encounter any issues during installation, check the repository’s GitHub Issues or open a new issue with details about your system and the error.

Build docs developers (and LLMs) love