Skip to main content

Overview

This guide covers the installation of Gentleman.Dots on Arch Linux systems. Arch Linux uses the pacman package manager and provides bleeding-edge packages, making it an excellent platform for development environments.
This guide is specifically for Arch Linux and Arch-based distributions (Manjaro, EndeavourOS, etc.). For Ubuntu/Debian systems, see the Linux guide.

Prerequisites

Before starting the installation, ensure you have:
  • Arch Linux or Arch-based distribution (Manjaro, EndeavourOS, etc.)
  • Base development tools (will be installed during setup)
  • Administrator privileges (sudo access)
  • Internet connection for downloading packages
  • At least 2GB of free disk space

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 detects Arch Linux and uses the appropriate package manager.
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 automatically:
  • Detect Arch Linux and use pacman
  • Install base-devel and required dependencies
  • Install Rust and Homebrew
  • Configure your chosen terminal emulator
  • Set up your selected shell (Fish, Zsh, or Nushell)
  • Install your preferred window manager (Tmux or Zellij)
  • Configure Neovim with AI integrations
4

Restart Your Terminal

After installation completes, restart your terminal:
exec $SHELL

Manual Installation

1

Clone the Repository

First, clone the Gentleman.Dots repository:
git clone [email protected]:Gentleman-Programming/Gentleman.Dots.git
cd Gentleman.Dots
2

Update System and Install Base Dependencies

Update your system and install the base development tools:
sudo pacman -Syu --noconfirm
sudo pacman -S --needed --noconfirm base-devel curl file git wget unzip fontconfig
The base-devel package group includes essential build tools like gcc, make, and more.
3

Install Rust

Install Rust programming language (required for some tools):
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 "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.zshrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
While Arch has the AUR, Homebrew provides consistent package versions across platforms and is used in the Gentleman.Dots configuration.
5

Install Iosevka Term Nerd Font

Install the required Nerd Font for proper icon display:
mkdir -p ~/.local/share/fonts
wget -O ~/.local/share/fonts/Iosevka.zip https://github.com/ryanoasis/nerd-fonts/releases/download/v3.3.0/IosevkaTerm.zip
unzip ~/.local/share/fonts/Iosevka.zip -d ~/.local/share/fonts/
fc-cache -fv
Alternatively, you can install from the AUR:
yay -S ttf-iosevka-nerd
6

Choose and Install a Terminal Emulator

Select one of the following terminal emulators:
# Install Alacritty
sudo pacman -S --noconfirm alacritty

# 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
mkdir -p ~/.config/nushell
cp -rf GentlemanNushell/* ~/.config/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
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 System

Restart your terminal or computer for all changes to take effect:
# Either restart your terminal or run:
exec $SHELL

Arch Linux-Specific Considerations

Package Management

Arch Linux uses pacman as the package manager and has access to the AUR (Arch User Repository). The installation script automatically detects Arch and uses pacman for system packages.

Using AUR Helpers

While Homebrew is used in the configuration, you can also use AUR helpers for Arch-specific packages:
# Install yay (AUR helper)
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

# Install packages from AUR
yay -S <package-name>

Bleeding Edge Packages

Arch provides the latest versions of most packages:
  • Neovim: Usually on the latest stable or nightly version
  • Rust: Latest stable release
  • Node.js: Latest LTS and current versions available

Display Server Options

Wayland Support: Most terminal emulators have excellent Wayland support on Arch. If you’re using Wayland, ensure your compositor is properly configured.
  • X11: Fully supported by all terminal emulators
  • Wayland: Alacritty, WezTerm, and Ghostty have native Wayland support

Graphics Drivers

For optimal terminal performance, ensure proper graphics drivers:
# NVIDIA (proprietary)
sudo pacman -S nvidia nvidia-utils

# AMD (open source)
sudo pacman -S mesa vulkan-radeon

# Intel (open source)
sudo pacman -S mesa vulkan-intel

Troubleshooting

If you encounter package conflicts during installation:
# Update package database
sudo pacman -Syu

# Remove conflicting packages
sudo pacman -R <conflicting-package>

# Clear package cache if needed
sudo pacman -Scc
If Homebrew installation fails on Arch:
  1. Ensure base-devel is installed:
    sudo pacman -S --needed base-devel
    
  2. Check for conflicting packages:
    pacman -Qo /usr/bin/brew
    
  3. Reinstall if necessary:
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
If fonts don’t render correctly:
  1. Rebuild font cache:
    fc-cache -fv
    
  2. Check font configuration:
    fc-list | grep Iosevka
    
  3. Install fontconfig if not present:
    sudo pacman -S fontconfig
    
If the default shell doesn’t change:
  1. Verify the shell is in /etc/shells:
    cat /etc/shells
    
  2. Manually add if missing:
    which fish | sudo tee -a /etc/shells
    
  3. Log out and log back in (not just restart terminal)
If Neovim plugins don’t install:
  1. Check Node.js installation:
    node --version  # Should be 18+
    npm --version
    
  2. Update Neovim:
    sudo pacman -S neovim
    
  3. Manually sync plugins in Neovim:
    :Lazy sync
    :checkhealth
    
If AUR packages fail to build:
  1. Ensure base-devel is installed:
    sudo pacman -S --needed base-devel
    
  2. Clear build cache:
    yay -Sc
    
  3. Update keyring:
    sudo pacman -S archlinux-keyring
    

Arch Linux Advantages

Rolling Release

Always get the latest versions of development tools without waiting for distribution releases

AUR Access

Massive repository of user-contributed packages for any tool you need

Minimalist Base

Clean installation with only what you need, perfect for customization

Arch Wiki

Best Linux documentation available for troubleshooting and configuration

Next Steps

Customize Your Setup

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

Neovim Configuration

Explore Neovim features and AI integrations

Arch Wiki

Explore the comprehensive Arch Linux documentation

Join the Community

Get help and share your setup with the community
Arch Linux Pro Tip: The Arch Wiki is an incredible resource for configuring any aspect of your system. If you encounter issues, check the wiki first - it often has detailed solutions and explanations.

Build docs developers (and LLMs) love