.. _pop_os:
*******************
Pop!_OS Overview
*******************
`Pop!_OS `_ is a
user-friendly Linux distribution developed by
`System76 `_, based on Ubuntu. It is designed to
provide a smooth out-of-the-box experience, particularly for developers,
engineers, and users working with graphics-intensive applications. Pop!_OS
includes built-in support for NVIDIA GPUs, a customized GNOME-based desktop
(COSMIC), and a curated set of tools aimed at productivity and system stability.
The strength of Pop!_OS lies in its balance between usability and performance.
It offers a polished desktop environment, reliable package management through
APT, and strong hardware compatibility, making it an excellent choice for both
beginners and experienced users. On the downside, it provides less low-level
customization compared to Arch Linux, and its release cycle does not deliver
updates as rapidly as rolling-release distributions.
Pre-Installation
================
Before beginning the installation, download the Pop!_OS ISO image and create a
bootable USB drive.
Download the ISO Image
----------------------
Navigate to the `Pop!_OS download page `_.
Available options include:
- **Intel/AMD (Standard)** — for most systems
- **NVIDIA** — for systems with NVIDIA GPUs
- **Raspberry Pi** — for ARM-based devices
Select the appropriate version and download the ISO file.
Flash the ISO to a USB Drive
----------------------------
Use a tool such as
`USB Imager `_ to create a bootable USB.
.. image:: images/usb_imager.png
:alt: USB Imager download options
.. image:: images/imager.png
:alt: USB Imager graphical interface
Steps:
1. Select the downloaded ``.iso`` file
2. Select the USB drive
3. Enable **Verify**
4. Click **Write**
.. warning::
All data on the USB drive will be erased.
Installation
============
Booting the Installer
---------------------
Insert the USB drive and power on the system. Enter the boot menu
(commonly accessed via ``F2``, ``F10``, ``F12``, or ``DEL``).
Select the USB device.
Expected option:
.. code-block:: bash
Pop!_OS install medium (x86_64, UEFI)
Select and press ``Enter``.
Installer Workflow
------------------
The Pop!_OS graphical installer will guide you through:
- Language and keyboard selection
- Network configuration
- Disk selection
- Installation type
Disk Encryption (Recommended)
-----------------------------
Enable full disk encryption unless you have a specific reason not to.
Expected behavior:
- System prompts for encryption password at boot
- Disk is automatically configured with encryption
Complete Installation
---------------------
Follow the remaining prompts to:
- Create a user account
- Set a password
- Complete installation
Once complete:
1. Remove the USB drive
2. Reboot
Expected result:
- System boots into the Pop!_OS desktop
- Login screen appears
Post Installation
=================
This section describes how to install core packages for a development
environment on Pop!_OS. Configuration of these tools is handled in
:ref:`System `.
Update System
-------------
Update package lists and upgrade installed packages:
.. code-block:: bash
sudo apt update
sudo apt upgrade
Install Core Packages
---------------------
Install commonly used utilities:
.. code-block:: bash
sudo apt install \
git gh \
fzf bat tree htop btop \
zsh tmux rsync \
xclip fail2ban \
libreoffice neofetch
Verify installation:
.. code-block:: bash
git --version
gh --version
zsh --version
GitHub Setup
------------
Authenticate GitHub CLI:
.. code-block:: bash
gh auth login
Follow the prompts to authenticate.
Update Terminal
---------------
Pop!_OS includes a capable terminal by default through the COSMIC desktop
environment. However, this guide uses ``ghostty`` as the preferred terminal.
Install ``ghostty`` with the following command:
.. code-block:: bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/mkasberg/ghostty-ubuntu/HEAD/install.sh)"
Development Directory Structure
-------------------------------
Create development directories:
.. code-block:: bash
mkdir -p ~/Code_Dev/{Python,C,C++,OS}
Install Google Chrome
---------------------
Download the Debian package from:
`Google Chrome `_
Install:
.. code-block:: bash
cd ~/Downloads
sudo apt install ./google-chrome-stable_current_amd64.deb
Install Fonts
-------------
Create fonts directory:
.. code-block:: bash
mkdir -p ~/.fonts
Download fonts from:
`Nerd Fonts `_
Install fonts:
.. code-block:: bash
unzip .zip -d ~/.fonts
fc-cache -fc
Install Neovim
--------------
Install Neovim from the official release:
.. code-block:: bash
mkdir -p ~/.local/bin
cd ~/.local/bin
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz
tar xzf nvim-linux-x86_64.tar.gz
ln -sf ~/.local/bin/nvim-linux-x86_64/bin/nvim ~/.local/bin/nvim
.. note::
Ensure ``~/.local/bin`` is in your PATH:
.. code-block:: bash
export PATH="$HOME/.local/bin:$PATH"
Install Node.js and Tree-sitter
-------------------------------
.. code-block:: bash
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install nodejs
npm install -g tree-sitter-cli
Install tmux
------------
.. code-block:: bash
sudo apt install tmux
Install LaTeX
-------------
.. code-block:: bash
sudo apt install texlive-latex-base texlive-fonts-recommended texlive-fonts-extra
System Utilities
----------------
Install additional tools:
.. code-block:: bash
sudo apt install snapd