Arch Linux Hyprland Install Guide
This guide is for installing arch linux (UEFI) with Wayland, Hyprland, SDDM, Paru, BTRFS, Snapshots, Qemu, KVM, and Gaming.
Install ISO to USB:
After downloading the latest Arch ISO you will need to install it to a usb using a program like Balena Etcher. Plug the usb into the machine you want to install arch to and boot into the usb.
Base Install
Update Keyring and Archinstall
Once booted into the arch live ISO you need to update the keyring and archinstall packages:
pacman -Sy archlinux-keyring archinstall
Set Pacman Confs
Use nano or vim to edit the /etc/pacman.conf file:
Color # Uncomment this line
ParallelDownloads = 5 # Uncomment this line
Run Archinstall Script
Run the built in archinstall script:
archinstall
The Basics
In the installer setup the base system:
- Pick your local mirror
- Setup your locale
- Set the disk configuration, use best effort default with btrfs and subvolumes
- Choose the bootloader
- Setup swap
- Set the host name
- Set the root password
- Create a user account
- Select the pipewire audio
May have an issue due to a bug in older install scripts
- Select the kernel
- Set the network config
- Set the time zone
- Set the time sync
- Enable the multilib repository in optional repositories
Profile
AMD/Intel
:
If you aren’t using an Nvidia gpu you can set the profile to Desktop-Hyprland:
Nvidia
:
If you have an Nvidia gpu we need to select a minimal profile and install the nvidia version of hyprland:
NVIDIA ONLY Then under additional packages add the following:
qt5-wayland qt6-wayland dunst xdg-desktop-portal-hyprland nvidia nvidia-dkms nvidia-utils nvidia-settings polkit sddm qt5ct libva
Additional Packages
Add the following packages to the base install:
rofi
is the modal package.wezterm
is the terminal package.thunar
is the file explorer package.neovim
is the terminal editor package.fish
is a shell.gvfs
is the mounting and trash package.tumbler
is the thumbnail package.grim
is the wayland screenshot package.python-pywal
is the colour scheme package.swappy
is the screenshot package.lsd
is the upgraded ls package.rustup
is the rust updater package.iwd
is the wireless networking package.gnome-keyring
is needed for nextcloud-client.libsecret
is needed for nextcloud-client.
rofi git wezterm thunar neovim code firefox thunderbird fish bash-completion base-devel gvfs tumbler grim ttf-liberation wl-clipboard python-pywal swayidle swappy cliphist rustup lsd networkmanager iwd dhcpcd gnome-keyring libsecret
Finish Installer
Once everything is setup to your needs select the install option.
Post Install
After the installer finishes choose the option to chroot into the new system before restarting to finish up the install:
Make sure to switch to user level:
su [username]
Fish
Change default shell to fish:
chsh -s /bin/fish
Rustup
Rust will be needed to compile paru:
rustup toolchain install stable
rustup default stable
Paru
Installing Paru will allow access to the AUR, make sure to have switched to the user level first:
cd /tmp
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
cd ~
paru -Syu
Install VM & AUR Packages
Install final packages, select Y to replace iptables:
sudo pacman -S pacman-contrib swtpm virt-manager virt-viewer vde2 iptables-nft dnsmasq bridge-utils libvirt libvpx libde265 virtiofsd xvidcore winetricks vulkan-icd-loader lib32-vulkan-icd-loader eza freerdp thunar-volman thunar-archive-plugin thunar-media-tags-plugin lib32-nvidia-utils libreoffice-still godot blender gimp inkscape keepassxc obs-studio lutris steam discord nerd-fonts kdenlive file-roller pavucontrol mpv nextcloud-client rofi-calc nfs-utils ttf-font-awesome ttf-fira-sans ttf-fira-code ttf-firacode-nerd linux-zen-headers wireplumber neofetch starship cpupower acpi
If the machine is a VM install the agents:
sudo pacman -S qemu-guest-agent spice-vdagent
Install the rest of the packages from the AUR:
paru -S jellyfin-media-player arc-icon-theme mangohud jmtpfs hyprland-nvidia waybar-hyprland swww sddm-sugar-dark wlogout ant-dracula-gtk-theme trizen libva-nvidia-driver-git ovmf qemu-arch-extra ebtables bibata-cursor-theme xfce-polkit
Setup Nvidia:
sudo systemctl enable nvidia-persistenced.service
Setup SDDM:
sudo systemctl enable sddm
sudo mkdir /etc/sddm.conf.d
sudo cp /usr/lib/sddm/sddm.conf.d/default.conf /etc/sddm.conf.d/sddm.conf
sudo nvim /etc/sddm.conf.d/sddm.conf
Change the theme value:
[Theme]
Current=sugar-dark
Setup VM:
sudo systemctl enable libvirtd
sudo systemctl enable virtlogd.socket
sudo usermod -aG kvm,libvirt [user_name]
Setup Git:
git config --global user.name "Your Name"
git config --global user.email "youremail@yourdomain.com"
Nvidia BS For Hyprland
Nvidia is notoriously garbage for Linux and will need several tweaks:
- Update systemd-boot by adding
nvidia_drm.modeset=1
to the end of/boot/loader/entries/[ENTRY_NAME].conf
:
sudo nvim /boot/loader/entries/[ENTRY_NAME].conf
- Update mkinit by adding
nvidia nvidia_modeset nvidia_uvm nvidia_drm
to the MODULES section of/etc/mkinitcpio.conf
:
sudo nvim /etc/mkinitcpio.conf
MODULES=(btrfs nvidia nvidia_modeset nvidia_uvm nvidia_drm)
then running the generator:
mkinitcpio -p linux-zen
#sudo mkinitcpio --config /etc/mkinitcpio.conf --generate /boot/initramfs-custom.img
- Add
options nvidia-drm modeset=1
to the end of/etc/modprobe.d/nvidia.conf
, create the file if non existant:
sudo nvim /etc/modprobe.d/nvidia.conf
options nvidia-drm modeset=1
Remote Setup
sudo pacman -S freerdp
paru -S xrdp
sudo systemctl enable xrdp.service
Config Hyprland With Dotfiles:
If using dotfiles:
git clone https://github.com/rassweiler/dotfiles.git
cd dotfiles
git checkout arch-hyprland
./install
./init.sh
Complete and Exit
exit
exit
reboot
First Boot
Log into the machine and open the terminal
Finish Setup
Config Hyprland Without Dotfiles:
Since we aren’t using kitty or dolphin we need to change some config options before boot:
cp /usr
nvim ~/.config/hypr/hyperland.conf
Comment out the warning:
#autogenerated = 1
Uncomment and modify the following:
exec-once = waybar
bind = $mainMod, Q, exec, wezterm
bind = $mainMod, E, exec, thunar
Set Themes
Set the GTK themes if NOT using my configs:
gsettings set org.gnome.desktop.interface gtk-theme "Dracula"
gsettings set org.gnome.desktop.wm.preferences theme "Dracula"
gsettings set org.gnome.desktop.interface icon-theme "Dracula"
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
VM
sudovirsh net-autostart default
Pywal If Not Using Dotfiles
pywal -i [path_to_image]