Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Ubuntu Out-of-the-Box Experience

Convenience Script

Static file: /static/scripts/ubuntu-oobe.sh

sudo apt install -y curl && curl -fSsL https://script.aaanh.app/static/scripts/ubuntu-oobe.sh | bash

If curl is not installed, install it with sudo apt install curl.

Note: This script should not be run as root. It will use sudo when needed and will prompt for your password.

What this script does?
  • Updates and upgrades system packages via apt
  • Installs essential packages: git, zsh, net-tools, build-essential, openssh-server, tmux, curl, wget, unzip, ca-certificates
  • Sets up and configures zsh with oh-my-zsh, zsh-syntax-highlighting, and flazz theme
  • Installs development tools: NVM (Node Version Manager), Go, and Rust
  • Installs GitHub CLI (gh)
  • Installs Homebrew (Linuxbrew)
  • Installs Docker Engine and adds user to docker group
  • Downloads and installs Fantasque Sans Mono fonts

Important: After running the script, you should log out and back in for all changes to take effect (especially zsh shell and docker group membership).

Dev Tools

sudo apt install -y curl && curl -fSsL https://script.aaanh.app/static/scripts/ubuntu-dev-tools.sh | bash

Manual

  1. Update and upgrade apt

    sudo apt update && sudo apt upgrade -y
    
  2. Install commonly-used packages

    sudo apt install -y git zsh net-tools build-essential openssh-server \
      tmux curl wget unzip ca-certificates
    
  3. Additional optional desktop packages

    sudo apt install gnome-tweaks grub-customizer nodejs npm
    
  4. Install and power up vim

    git clone https://github.com/aaanh/vimrc ~/.vim_runtime && cd ~/.vim_runtime && ./install_awesome_vimrc.sh
    
  5. Use local time (optional, for dual boot with Windows)

    timedatectl set-local-rtc 1 --adjust-system-clock
    
  6. Setup zsh with oh-my-zsh and plugins

    chsh -s $(which zsh)
    git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
    cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
    git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.zsh-syntax-highlighting --depth 1
    echo "source ~/.zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ~/.zshrc
    sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="flazz"/' ~/.zshrc
    
  7. Install NVM, Go, and Rust

    # NVM
    export NVM_DIR="$HOME/.nvm"
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
    
    # Go
    curl -L https://git.io/vQhTU | bash
    
    # Rust
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
    
  8. GitHub CLI

    sudo mkdir -p -m 755 /etc/apt/keyrings
    wget -nv -O- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null
    sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
    sudo apt update
    sudo apt install -y gh
    

    After installation, login with gh auth login

  9. Homebrew (Linuxbrew)

    NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
    echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.zshrc
    
  10. Docker Engine

    sudo apt-get update
    sudo apt-get install -y ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    sudo usermod -aG docker $USER
    

    Note: Log out and back in for docker group changes to take effect.

  11. Fantasque Sans Mono fonts

    TMP_DIR="$HOME/.tmp-font-install"
    FONT_ZIP_URL="https://script.aaanh.app/static/fonts/FantasqueSansMono.zip"
    mkdir -p "$TMP_DIR"
    cd "$TMP_DIR"
    curl -O "$FONT_ZIP_URL"
    unzip -q FantasqueSansMono.zip -d fantasque-mono
    sudo mkdir -p /usr/share/fonts/custom
    find fantasque-mono -type f -name "*.ttf" -exec sudo cp {} /usr/share/fonts/custom \;
    sudo fc-cache -fv
    rm -rf "$TMP_DIR"
    
  12. Additional user applications

    1. Visual Studio Code: https://code.visualstudio.com/download

    2. Discord: https://discord.com/download

    3. Anaconda: https://www.anaconda.com/products/individual

    4. Zoom: https://zoom.us/download

    5. Slack (snap or rpm): https://slack.com/downloads/linux

  13. Solid black 4K resolution wallpaper 👌

    curl -o ~/Pictures/black.png "https://script.aaanh.app/static/images/black.png"