Title: MmcM - WaL sOk
🐧 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.
🔧 Pre-Installation
1. Set Your Keymap
localectl list-keymaps | grep <KEYMAP>
loadkeys <KEYMAP>
2. Connect to the Internet
ping 8.8.8.8
ip a
iwctl --passphrase <SSID_PASSWORD> station <WLAN_DEVICE> connect <SSID_NAME>
3. Optimize Mirrors
pacman -Sy reflector
reflector --country <COUNTRY> --age 12 --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
cat /etc/pacman.d/mirrorlist
4. Partition and Encrypt the Disk
cfdisk /dev/<DEVICE>
lsblk
cryptsetup -y -v luksFormat /dev/<PARTITION2>
cryptsetup open /dev/<PARTITION2> luksroot
lsblk
mkfs.ext4 /dev/mapper/luksroot
mkfs.fat -F32 /dev/<PARTITION1>
5. Mount and Install the Base System
mount /dev/mapper/luksroot /mnt
mkdir /mnt/boot
mount /dev/<PARTITION1> /mnt/boot
lsblk
pacstrap /mnt base linux linux-firmware nano vim <EXTRA_PACKAGES>
💾 Base System Setup
6. Generate fstab and Chroot
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab
arch-chroot /mnt
7. 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
8. Timezone, Locale, Hostname
ln -sf /usr/share/zoneinfo/<REGION>/<CITY> /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 <HOSTNAME> >> /etc/hostname
nano /etc/hosts
Add this to /etc/hosts:
127.0.0.1 localhost
::1 localhost
127.0.1.1 <HOSTNAME>.localdomain <HOSTNAME>
passwd
9. 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
10. Enable Encryption in Initramfs
nano /etc/mkinitcpio.conf
Modify the HOOKS line to include:
... block encrypt filesystems ...
mkinitcpio -p linux
11. 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
12. Enable Services and Create User
systemctl enable NetworkManager
systemctl enable bluetooth
systemctl enable NetworkManager-dispatcher.service
useradd -mG wheel <USERNAME>
passwd <USERNAME>
visudo
Uncomment this line:
%wheel ALL=(ALL:ALL) ALL
13. Reboot into Your New Arch System
reboot
14. 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/
🎨 Desktop Environment & Extras
15. 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
16. 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
17. 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
18. 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=<YOUR_UUID>:luksroot root=/dev/mapper/luksroot"
Then:
grub-mkconfig -o /boot/grub/grub.cfg
sudo plymouth-set-default-theme -R optimus
sudo reboot now