Note: These scripts are not meant to be another full-fledged Arch installer. They are made to fit my devices: Dell XPS 7390 and custom desktop build (Ryzen 3700X and RX 5700XT). In any case, as long as you don't use a Nvidia GPU, they should work fine.
- LVM on LUKS
- LUKS2
- systemd-boot (with Pacman hook for automatic updates)
- systemd init hooks (instead of busybox)
- SSD Periodic TRIM
- Intel/AMD microcode
- Standard Kernel + LTS kernel as fallback
- Hibernate support
- NMI watchdog disabled
- Swappiness set to 20
- UEFI mode
- NVMe SSD
- TRIM compatible SSD
- CPU: Intel (Skylake or newer) / AMD
- GPU: AMDGPU - only if CPU vendor is AMD (this combination is hard-coded. For now, base script checks for CPU vendor and if it's AMD, then it'll also install required drivers for AMD GPU)
Name | Type | Mountpoint |
---|---|---|
nvme0n1 | disk | |
├─nvme0n1p1 | part | /boot |
├─nvme0n1p2 | part | |
└─cryptlvm | crypt | |
├─vg0-swap | lvm | [SWAP] |
└─vg0-root | lvm | / |
- Gnome / KDE / Sway / i3 (separate scripts)
- PipeWire instead of PulseAudio
- UFW (deny incoming, allow outgoing)
- Automatic login
- Fonts
- paru (AUR helper)
- Plymouth
- Flatpak support
- Syncthing
- Browsers:
- Firefox: via Flatpak, with hardware acceleration enabled (see below: MISC - Firefox required configs for VA-API support)
- Chrome: via Flatpak, with hardware acceleration enabled
- Chromium: via Flatpak, with hardware acceleration enabled
- Download and boot into the latest Arch Linux iso
- Connect to the internet. If using wifi, you can use
iwctl
to connect to a network:- scan for networks:
station wlan0 scan
- list available networks:
station wlan0 get-networks
- connect to a network:
station wlan0 connect SSID
- scan for networks:
- Give highest priority to the closest mirror to you on /etc/pacman.d/mirrorlist by moving it to the top
- Sync repos:
pacman -Sy
and install wgetpacman -S wget
wget https://raw.githubusercontent.com/exah-io/arch-linux/master/1_install.sh
- Change the variables at the top of the file (lines 3 through 9)
- continent_country must have the following format: Zone/SubZone . e.g. Europe/Berlin
- run
timedatectl list-timezones
to see full list of zones and subzones
- Make the script executable:
chmod +x 1_install.sh
- Run the script:
./1_install.sh
- Reboot into Arch Linux
- Connect to wifi with
nmtui
wget https://raw.githubusercontent.com/exah-io/arch-linux/master/2_gnome.sh
or2_plasma.sh
or2_sway.sh
- Make the script executable:
chmod +x 2_gnome.sh
orchmod +x 2_plasma.sh
orchmod +x 2_sway.sh
- Run the script:
./2_gnome.sh
or./2_plasma.sh
or./2_sway.sh
- Run
flatpak --user override --socket=wayland --env="MOZ_WEBRENDER=1 MOZ_ENABLE_WAYLAND=1 GTK_USE_PORTAL=1" org.mozilla.firefox
- At about:config set
gfx.webrender.enabled
,media.ffmpeg.vaapi.enabled
widget.wayland-dmabuf-vaapi.enabled
to true andmedia.ffvpx.enabled
to false and then restart browser- Read original blog post here
- Note: base script already sets the required environment variables. Only changing these 2 configs suffices
git clone https://aur.archlinux.org/paru-bin.git
cd paru-bin
makepkg -si --noconfirm
cd ..
rm -rf paru-bin
sudo pacman -S --noconfirm sbctl
- Confirm secure boot is disabled and delete existing keys in the bios (should automatically go into setup mode)
- Confirm status (setup mode):
sudo sbctl status
- Create new keys:
sudo sbctl create-keys
- Enroll new keys:
sudo sbctl enroll-keys
- Confirm status (setup mode should now be disabled):
sudo sbctl status
- Confirm what needs to be signed:
sudo sbctl verify
- Sign with new keys:
sudo sbctl sign-all
- OR
sudo sbctl sign -s /boot/EFI/BOOT/BOOTX64.EFI
sudo sbctl sign -s /boot/EFI/systemd/systemd-bootx64.efi
sudo sbctl sign -s /boot/vmlinuz-linux
sudo sbctl sign -s /boot/vmlinuz-linux-lts
sudo sbctl sign -s /usr/lib/fwupd/efi/fwupdx64.efi -o /usr/lib/fwupd/efi/fwupdx64.efi.signed
- Reboot and enable secure boot in the bios
- Confirm status (secure boot enabled):
sudo sbctl status
mkdir -p /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
cryptsetup luksOpen /dev/nvme0n1p2 cryptlvm
mount /dev/vg0/root /mnt
arch-chroot /mnt
echo "Installing Firefox Flatpak Gnome theme"
git clone https://github.com/rafaelmardojai/firefox-gnome-theme/ && cd firefox-gnome-theme
./scripts/install.sh -f ~/.var/app/org.mozilla.firefox/.mozilla/firefox
rm -rf ~/firefox-gnome-theme
# Sources:
# https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/wikis/Mesa-git
# https://github.com/GloriousEggroll/proton-ge-custom#flatpak
# https://github.com/flathub/net.lutris.Lutris
# Add Flatpak repos
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --user --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo
flatpak update --appstream
# Install mesa-git
flatpak install --user --assumeyes flathub-beta org.freedesktop.Platform.GL.mesa-git//20.08 org.freedesktop.Platform.GL32.mesa-git//20.08
# Install Lutris
flatpak install --user --assumeyes flathub-beta net.lutris.Lutris//beta
flatpak install --user --assumeyes flathub org.gnome.Platform.Compat.i386 org.freedesktop.Platform.GL32.default org.freedesktop.Platform.GL.default
# Give Lutris Flatpak access to external drive
flatpak override --user --filesystem=/mnt/Data/Lutris net.lutris.Lutris
# Install Steam
flatpak install --user --assumeyes flathub com.valvesoftware.Steam
flatpak install --user --assumeyes com.valvesoftware.Steam.CompatibilityTool.Proton
# Give Steam Flatpak access to external drive
flatpak override --user --filesystem=/mnt/Data/Games com.valvesoftware.Steam
# Make Steam and Lutris Flatpak use mesa-git
sed -i "s,Exec=,Exec=env FLATPAK_GL_DRIVERS=mesa-git ," ~/.local/share/flatpak/exports/share/applications/com.valvesoftware.Steam.desktop
sed -i "s,Exec=,Exec=env FLATPAK_GL_DRIVERS=mesa-git ," ~/.local/share/flatpak/exports/share/applications/net.lutris.Lutris.desktop
# Download latest release from GloriousEggroll/proton-ge-custom and move it to Steam Flatpak
curl -Ls https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep -wo "https.*tar.gz" | wget -qi -
mkdir -p ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d/
tar -xzf Proton-* -C ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d/
# To enable proton ge: https://github.com/GloriousEggroll/proton-ge-custom#enabling
# Allow Steam Link through the Firewall
sudo ufw allow from 192.168.1.0/24 to any port 27036:27037 proto tcp
sudo ufw allow from 192.168.1.0/24 to any port 27031:27036 proto udp