Overview
This guide covers the complete installation process for Gentleman.Dots on Linux systems (Ubuntu/Debian). The installation includes terminal emulators, shells, window managers, and Neovim with AI integrations.
Prerequisites
Before starting the installation, ensure you have:
Ubuntu or Debian-based Linux distribution
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 handles all dependencies and configurations automatically.
You must install the Iosevka Term Nerd Font before running the script. The font is required for proper terminal display.
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
Make the Script Executable
Grant execution permissions to the script: sudo chmod +x install-linux-mac.sh
Run the Installation
Execute the script and follow the interactive prompts: bash ./install-linux-mac.sh
The script will:
Install system dependencies (build-essential, curl, file, git)
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
Restart Your Terminal
After installation completes, restart your terminal or computer: # Restart your terminal or run
exec $SHELL
Manual Installation
Clone the Repository
First, clone the Gentleman.Dots repository: git clone [email protected] :Gentleman-Programming/Gentleman.Dots.git
cd Gentleman.Dots
Install Base Dependencies
Install the required build tools and dependencies: sudo apt-get update
sudo apt-get install -y build-essential curl file git unzip fontconfig
Install Rust
Install Rust programming language (required for some tools): curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. $HOME /.cargo/env
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)"
Install Iosevka Term Nerd Font
The Iosevka Term Nerd Font is required 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
Choose and Install a Terminal Emulator
Select one of the following terminal emulators: Alacritty
WezTerm
Ghostty
sudo add-apt-repository ppa:aslatter/ppa
sudo apt update
sudo apt install alacritty
# Copy configuration
mkdir -p ~/.config/alacritty
cp alacritty.toml ~/.config/alacritty/alacritty.toml
brew tap wez/wezterm-linuxbrew
brew install wezterm
# Copy configuration
mkdir -p ~/.config/wezterm
cp .wezterm.lua ~/.config/wezterm/wezterm.lua
# Using community package
/bin/bash -c "$( curl -fsSL https://raw.githubusercontent.com/mkasberg/ghostty-ubuntu/HEAD/install.sh)"
# Copy configuration
mkdir -p ~/.config/ghostty
cp -r GentlemanGhostty/ * ~/.config/ghostty
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/
# Install Fish and dependencies
brew install fish carapace zoxide atuin starship fzf
# Create directories
mkdir -p ~/.cache/starship
mkdir -p ~/.cache/carapace
mkdir -p ~/.local/share/atuin
# Copy configuration
cp -rf starship.toml ~/.config/
cp -rf GentlemanFish/fish ~/.config
# Install Zsh and dependencies
brew install zsh carapace zoxide atuin fzf
brew install zsh-autosuggestions zsh-syntax-highlighting zsh-autocomplete
# Create directories
mkdir -p ~/.cache/carapace
mkdir -p ~/.local/share/atuin
# Copy configuration
cp -rf GentlemanZsh/.zshrc ~/
cp -rf GentlemanZsh/.p10k.zsh ~/
cp -rf GentlemanZsh/.oh-my-zsh ~/
# Install PowerLevel10k
brew install powerlevel10k
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
# Install Zellij
cargo install zellij
# Copy configuration
mkdir -p ~/.config/zellij
cp -r GentlemanZellij/zellij/ * ~/.config/zellij/
If using Zellij, update your shell configuration to use it instead of Tmux.
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
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 "
Restart Your System
Restart your terminal or computer for all changes to take effect: # Either restart your terminal or run:
exec $SHELL
Linux-Specific Considerations
Package Manager Differences : Ubuntu/Debian use apt, while Arch uses pacman. This guide focuses on Ubuntu/Debian. Arch users should see the Arch Linux guide .
Display Server Compatibility
Wayland : Some terminal emulators (like Alacritty) work best with Wayland. Ensure your display server is properly configured.
X11 : All terminal emulators support X11 by default.
System Requirements
Kernel Version : Linux kernel 5.0 or higher recommended
GPU Drivers : Install proper GPU drivers for best terminal performance
Memory : At least 4GB RAM recommended for full Neovim setup with AI integrations
Troubleshooting
Homebrew installation fails
If Homebrew installation fails, ensure you have all build dependencies: sudo apt-get install build-essential procps curl file git
Then try installing Homebrew again.
Font not displaying correctly
If icons or fonts aren’t displaying properly:
Verify the font is installed:
Clear font cache:
Restart your terminal emulator
Shell doesn't change after installation
If your default shell doesn’t change:
Verify the shell path is in /etc/shells:
Manually change the shell:
chsh -s $( which fish ) # or zsh, nu
Log out and log back in
If you encounter permission errors during installation: # Fix Homebrew permissions
sudo chown -R $( whoami ) $( brew --prefix ) / *
# Fix config directory permissions
sudo chown -R $( whoami ) ~/.config
Neovim plugins not loading
If Neovim plugins fail to load:
Open Neovim and run:
Check for errors:
Ensure Node.js is properly installed:
node --version # Should be 18+
Next Steps
Customize Your Setup Learn how to customize terminal colors, key bindings, and more
Neovim Configuration Explore Neovim features and AI integrations
Shell Tips & Tricks Master your chosen shell with productivity tips
Join the Community Get help and share your setup with the community
After installation, explore the included configurations and customize them to match your workflow. The Gentleman.Dots setup is designed to be a starting point for your perfect development environment!