Post

Arch Linux & EndeavourOS Post-Install Guide: From Fresh Install to Daily Driver

A complete post-installation setup guide for Arch Linux and EndeavourOS. Covers pacman tuning, reflector, yay, PipeWire audio, graphics drivers, zram, firewall, and essential daily utilities.

Arch Linux & EndeavourOS Post-Install Guide: From Fresh Install to Daily Driver

Completing a minimal Arch Linux install or landing on the EndeavourOS desktop is only half the battle. A freshly installed system lacks several essential optimizations: pacman mirror ranking, multilib repositories, audio plumbing, power management, and an AUR helper.

This post-install checklist walks through configuring Arch Linux or EndeavourOS into a reliable, high-performance daily workstation.


1. Optimize Pacman Configuration

Open /etc/pacman.conf:

1
sudo nano /etc/pacman.conf

Find the [options] section and make the following adjustments:

1
2
3
4
5
6
7
# Enable parallel downloads (set between 5 and 10)
ParallelDownloads = 5

# Enable terminal color output and pacman animation
Color
ILoveCandy
VerbosePkgLists

Scroll down to the repository section and uncomment the [multilib] repository to enable 32-bit software support (required for Steam, Wine, and certain 32-bit libraries):

1
2
[multilib]
Include = /etc/pacman.d/mirrorlist

Save and exit (Ctrl+O, Enter, Ctrl+X), then synchronize repository databases:

1
sudo pacman -Syu

2. Benchmark and Rank Mirrors with Reflector

Slow download speeds on Arch are usually caused by stale or geographically distant mirrors. Use reflector to fetch and rank the 15 fastest HTTPS mirrors:

1
2
sudo pacman -S --needed reflector rsync
sudo reflector --latest 15 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

To automate mirror updates on a weekly timer, enable the systemd service:

1
sudo systemctl enable --now reflector.timer

3. Install an AUR Helper (yay)

The Arch User Repository (AUR) contains nearly every package not found in the official repos. Install yay using base development tools:

1
2
3
4
5
sudo pacman -S --needed base-devel git
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si --noconfirm
cd .. && rm -rf yay-bin

Verify the installation and test an update:

1
yay -Syu

4. Verify Audio Stack (PipeWire & WirePlumber)

Modern Arch uses PipeWire as the low-latency replacement for PulseAudio and JACK. Ensure all compatibility layers and the WirePlumber session manager are installed:

1
2
3
4
5
6
7
8
sudo pacman -S --needed \
  pipewire \
  pipewire-audio \
  pipewire-alsa \
  pipewire-pulse \
  pipewire-jack \
  wireplumber \
  pavucontrol

Enable the user services:

1
systemctl --user enable --now pipewire pipewire-pulse wireplumber

Check that PulseAudio emulation is active:

1
pactl info | grep "Server Name"

Output should display: Server Name: PulseAudio (on PipeWire ...)


5. Install GPU Drivers

For NVIDIA

Install DKMS drivers so kernel updates don’t break display output:

1
sudo pacman -S --needed nvidia-dkms nvidia-utils lib32-nvidia-utils nvidia-settings

Enable NVIDIA systemd services for power management:

1
sudo systemctl enable nvidia-suspend.service nvidia-hibernate.service nvidia-resume.service

For AMD

Install the open-source Mesa drivers and Vulkan loader:

1
sudo pacman -S --needed mesa lib32-mesa xf86-video-amdgpu vulkan-radeon lib32-vulkan-radeon

For Intel

1
sudo pacman -S --needed mesa lib32-mesa intel-media-driver vulkan-intel lib32-vulkan-intel

6. Configure ZRAM Swap

ZRAM creates a compressed RAM block device used as swap, significantly improving memory efficiency under heavy loads.

Install zram-generator:

1
sudo pacman -S --needed zram-generator

Create /etc/systemd/zram-generator.conf:

1
sudo nano /etc/systemd/zram-generator.conf

Add the following configuration:

1
2
3
[zram0]
zram-size = min(ram / 2, 8192)
compression-algorithm = zstd

Start the service and verify:

1
2
3
sudo systemctl daemon-reload
sudo systemctl start systemd-zram-setup@zram0.service
zramctl

7. Enable Essential System Services

Enable SSD TRIM, Bluetooth, and network time synchronization:

1
2
3
4
5
6
7
8
9
# Periodic SSD TRIM (runs weekly)
sudo systemctl enable --now fstrim.timer

# Network time synchronization
sudo systemctl enable --now systemd-timesyncd.service

# Bluetooth (if hardware is present)
sudo pacman -S --needed bluez bluez-utils
sudo systemctl enable --now bluetooth.service

8. Configure the UFW Firewall

Install and start the Uncomplicated Firewall:

1
2
3
4
5
sudo pacman -S --needed ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
sudo systemctl enable ufw.service

9. Set Up Automated Pacman Cache Cleaning

Pacman does not delete old package tarballs automatically from /var/cache/pacman/pkg/. Use paccache from pacman-contrib to keep only the 2 most recent versions:

1
2
sudo pacman -S --needed pacman-contrib
sudo systemctl enable --now paccache.timer

10. Install Fonts, Media Codecs, and Core Tools

Prevent missing glyphs, boxes, and broken font rendering across web pages and documents:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Fonts
sudo pacman -S --needed \
  noto-fonts \
  noto-fonts-cjk \
  noto-fonts-emoji \
  ttf-liberation \
  ttf-jetbrains-mono-nerd

# Media codecs and playback
sudo pacman -S --needed \
  ffmpeg \
  gstreamer \
  gst-plugins-good \
  gst-plugins-bad \
  gst-plugins-ugly \
  gst-libav \
  mpv

# Essential CLI Utilities
sudo pacman -S --needed \
  htop \
  btop \
  fastfetch \
  curl \
  wget \
  unzip \
  p7zip \
  bash-completion

Reboot your system to apply all kernel modules, services, and display driver changes:

1
sudo reboot
This post is licensed under CC BY 4.0 by the author.