TechHeart’s 2025 Arch Linux (w/ Sauce!) Install Guide
🐧 Vanilla Arch Linux and Extra Sauce (2025 Edition) This is a full, step-by-step Arch Linux install guide, built for clarity, encryption, and customization. The goal is a clean base system with KDE Plasma, AUR support, and some visual flair.
-
Set Your Keymap localectl list-keymaps | grep loadkeys
-
Connect to the Internet ping 8.8.8.8 ip a iwctl –passphrase <SSID_PASSWORD> station connect <SSID_NAME>
-
Optimize Mirrors pacman -Sy reflector reflector –country –age 12 –latest 10 –protocol https –save /etc/pacman.d/mirrorlist cat /etc/pacman.d/mirrorlist
-
Partition and Encrypt the Disk cfdisk /dev/ lsblk cryptsetup -y -v luksFormat /dev/ cryptsetup open /dev/ luksroot lsblk mkfs.ext4 /dev/mapper/luksroot mkfs.fat -F32 /dev/
-
Mount and Install the Base System mount /dev/mapper/luksroot /mnt mkdir /mnt/boot mount /dev/ /mnt/boot lsblk
pacstrap /mnt base linux linux-firmware nano vim
- Generate fstab and Chroot genfstab -U /mnt » /mnt/etc/fstab cat /mnt/etc/fstab
arch-chroot /mnt
- Add a Swapfile dd if=/dev/zero of=/swapfile bs=1M count=16384 status=progress chmod 600 /swapfile mkswap /swapfile swapon /swapfile nano /etc/fstab
Add this to /etc/fstab:
/swapfile none swap defaults 0 0
- Timezone, Locale, Hostname ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime hwclock –systohc nano /etc/locale.gen
Uncomment:
en_US.UTF-8 UTF-8
locale-gen echo LANG=en_US.UTF-8 » /etc/locale.conf echo KEYMAP=us » /etc/vconsole.conf echo » /etc/hostname nano /etc/hosts
Add this to /etc/hosts:
127.0.0.1 localhost ::1 localhost 127.0.1.1 .localdomain
passwd
-
Install Core Packages pacman -S base-devel bluez bluez-utils cups dialog dosfstools efibootmgr git grub linux-headers mtools network-manager-applet networkmanager os-prober pulseaudio-bluetooth reflector wireless_tools wpa_supplicant xdg-user-dirs xdg-utils
-
Enable Encryption in Initramfs nano /etc/mkinitcpio.conf
Modify the HOOKS line to include:
… block encrypt filesystems …
mkinitcpio -p linux
- Install and Configure GRUB grub-install –target=x86_64-efi –efi-directory=/boot –bootloader-id=GRUB grub-mkconfig -o /boot/grub/grub.cfg blkid
Find your LUKS UUID and add it to:
nano /etc/default/grub
Change the GRUB_CMDLINE_LINUX_DEFAULT line to:
GRUB_CMDLINE_LINUX_DEFAULT=“loglevel=3 quiet cryptdevice=UUID=<YOUR_UUID>:luksroot root=/dev/mapper/luksroot”
grub-mkconfig -o /boot/grub/grub.cfg
- Enable Services and Create User systemctl enable NetworkManager systemctl enable bluetooth systemctl enable NetworkManager-dispatcher.service
useradd -mG wheel passwd visudo
Uncomment this line:
%wheel ALL=(ALL:ALL) ALL
-
Reboot into Your New Arch System reboot
-
Connect with nmtui and Install AUR Helper nmtui
cd Downloads/ git clone https://aur.archlinux.org/paru.git cd paru/ makepkg -si cd .. rm -rf paru/
- Install GPU Drivers sudo pacman -S xf86-video-intel
or for AMD sudo pacman -S amd-ucode
or for NVIDIA sudo pacman -S nvidia nvidia-utils nvidia-settings
- Add a GRUB Theme git clone –depth 1 https://gitlab.com/VandalByte/dedsec-grub-theme.git cd dedsec-grub-theme/ sudo python3 dedsec-theme.py –install
sudo reboot now
- Install KDE Plasma Desktop sudo pacman -S plasma-meta sudo pacman -S kde-applications-meta sudo systemctl enable sddm sudo systemctl status sddm
sudo reboot now
- Add Plymouth Boot Splash paru -S plymouth-theme-optimus-git paru -S plymouth-git
Edit mkinitcpio.conf:
nano /etc/mkinitcpio.conf
Add “plymouth” before “encrypt” in HOOKS:
… block plymouth encrypt filesystems …
Edit GRUB config:
nano /etc/default/grub
Update GRUB_CMDLINE_LINUX_DEFAULT:
GRUB_CMDLINE_LINUX_DEFAULT=“loglevel=3 quiet splash cryptdevice=UUID=:luksroot root=/dev/mapper/luksroot”
Then:
grub-mkconfig -o /boot/grub/grub.cfg sudo plymouth-set-default-theme -R optimus
sudo reboot now
##💾 Will be updated to a full article shortly…
localectl list-keymaps | grep <country>
loadkeys <country>
ping 8.8.8.8
ip a
iwctl --passphrase <SSID_PASSWORD> station <wlan0> connect <SSID_NAME>
pacman -Sy reflector
reflector --country <US> --age 12 --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
cat /etc/pacman.d/mirrorlist
cfdisk /dev/<sda>
lsblk
cryptsetup -y -v luksFormat /dev/<sda2>
cryptsetup open /dev/<sda2> luksroot
lsblk
mkfs.ext4 /dev/mapper/luksroot
mkfs.fat -F32 /dev/<sda1>
mount /dev/mapper/luksroot /mnt
mkdir /mnt/boot
mount /dev/<sda1> /mnt/boot
lsblk
pacstrap /mnt base linux linux-firmware nano vim <intel-ucode>
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab
arch-chroot /mnt
dd if=/dev/zero of=/swapfile bs=1M count=16384 status=progress
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
<nano> / <vim> /etc/fstab
----- Insert to /etc/fstab -----
# swap file
/swapfile none swap defaults 0 0
----- -----
ln -sf /usr/share/zoneinfo/<America>/<Los_Angeles> /etc/localtime
hwclock --systohc
<nano> / <vim> /etc/locale.gen
locale-gen
echo LANG=<en_US.UTF8> >> /etc/locale.conf
echo KEYMAP=<us> >> /etc/vconsole.conf
echo <HOSTNAME> >> /etc/hostname
<nano> / <vim> /etc/hosts
----- Insert to /etc/hosts -----
127.0.0.1 localhost
::1 localhost
127.0.0.1 <arch>.localdomain <arch>
----- -----
passwd
pacman -S base-devel bluez bluez-utils cups dialog dosfstools efibootmgr git grub linux-headers mtools network-manager-applet networkmanager os-prober pulseaudio-bluetooth reflector wireless_tools wpa_supplicant xdg-user-dirs xdg-utils
<nano> / <vim> /etc/mkinitcpio.conf
----- Insert to /etc/mkinitcpio.conf -----
<after "block"> encrypt <before "filesystems">
----- -----
mkinitcpio -p linux
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
blkid
<Find crypto_LUKS UUID - Copy it down!>
<nano> / <vim> /etc/default/grub
----- Insert to /etc/default/grub -----
<after GRUB_CMDLINE_LINUX_DEFAULT="loglevel 3 quiet> cryptdevice=UUID=<YOUR_UUID>:luksroot root=/dev/mapper/luksroot <before last ">
----- -----
grub-mkconfig -o /boot/grub/grub.cfg
systemctl enable NetworkManager
systemctl enable bluetooth
systemctl enable NetworkManager-dispatcher.service
useradd -mG wheel <username>
passwd <username>
EDITOR=<vim> / <nano>
visudo
----- Insert in visudo -----
<uncomment %wheel ALL=(ALL:ALL) ALL> (Remove the "# ')
----- -----
[After rebooting into Arch Linux installation]
nmtui
cd Downloads/
git clone https://aur.archlinux.org/paru.git
cd paru/
makepkg -si
cd ..
rm -rf paru/
sudo pacman -S xf86-video-intel
<amdpgu>
<nvidea nvidea-utils nvidea-settings>
git clone --depth 1 https://gitlab.com/VandalByte/dedsec-grub-theme.git
cd dedsec-grub-theme/
sudo python3 dedsec-theme.py --install
sudo reboot now
sudo pacman -S plasma-meta
sudo pacman -S kde-applications-meta
sudo systemctl enable sddm
sudo systemctl status sddm
sudo reboot now
cd Downloads\
paru -S plymouth-theme-optimus-git
paru -S plymouth-git
sudo <vim> / <nano> /etc/mkinitcpio.conf
----- Insert in /etc/mkinitcpio.conf -----
<after block>
plymouth
<before encrypt>
----- -----
sudo <vim> / <nano> /etc/default/grub
----- Insert in /etc/default/grub -----
<after quiet>
splash
<before cryptdevice>
----- -----
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo plymouth-set-default-theme -R optimus
sudo reboot now