EndeavourOS installation notes

by Perroboc

6 min read

Holy crap that was easy.

Installation

  1. Select KDE Plasma as desktop environment.
  2. Don't install EndeavourOS software, nor KDE EndeavourOS apps.
  3. Don't install firewalld, we will configure it later.
  4. Select systemd-boot as the bootloader.
  5. Format whole disk, swap file, btrfs filesystem.

TL;DR

I'm in a hurry, just give me the copy pasta magic:

  1. Packages setup
    yay -Rsu networkmanager-openconnect xterm kdeconnect
    yay -S plasma-wayland-session xdg-desktop-portal xdg-desktop-portal-kde xdg-desktop-portal-gtk vulkan-radeon lib32-vulkan-radeon libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau discover flatpak flatpak-kcm avahi nss-mdns cups-pdf system-config-printer endeavouros-theming kde-system octopi octopi-notifier-qt5 noto-fonts-emoji noto-color-emoji-fontconfig plasma-browser-integration lib32-fontconfig lib32-freetype2 lib32-gdk-pixbuf2 lib32-glib2 lib32-libice lib32-libnm lib32-openal lib32-libpipewire lib32-libpulse lib32-sdl2 lib32-libsm lib32-libxrandr lib32-libxinerama lib32-libvdpau lib32-libva lib32-gtk2 steam yay -S plasma-firewall firewalld btrfs-assistant snapper-support hunspell-en_us hunspell-es_cl hunspell fwupd
    sudo systemctl enable --now avahi-daemon.service
    sudo systemctl enable --now cups.service
    sudo systemctl enable --now bluetooth
    sudo systemctl enable --now firewalld.service
    
  2. Change the US International keyboard layout to behave like the Microsoft Windows (TM) version of the layout
    curl https://raw.githubusercontent.com/raelgc/win_us_intl/master/.XCompose --output ${HOME}/.XCompose
    
  3. Disable Suspend, Sleep
    sudo mkdir --parents /etc/systemd/sleep.conf.d/
    sudo tee /etc/systemd/sleep.conf.d/disable-suspend.conf > /dev/null <<EOT
    [Sleep]
    AllowSuspend=no
    AllowHibernation=no
    AllowSuspendThenHibernate=no
    AllowHybridSleep=no
    EOT
    
  4. Set environment variables
    mkdir --parents ${HOME}/.config/environment.d
    tee ${HOME}/.config/environment.d/envvars.conf > /dev/null <<EOT
    # Steam: force 2x scaling
    STEAM_FORCE_DESKTOPUI_SCALING=2.0
    
    # Firefox: enable Wayland
    MOZ_ENABLE_WAYLAND=1
    
    # Visual Studio Code KDE File Dialog (breaks 1password file upload)
    #GTK_USE_PORTAL=1
    EOT
    
  5. Hide useless icons
    mkdir --parents ${HOME}/.local/share/applications/
    cp --force /usr/share/applications/avahi-discover.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/avahi-discover.desktop
    cp --force /usr/share/applications/bssh.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/bssh.desktop
    cp --force /usr/share/applications/bvnc.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/bvnc.desktop
    cp --force /usr/share/applications/assistant.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/assistant.desktop
    cp --force /usr/share/applications/designer.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/designer.desktop
    cp --force /usr/share/applications/linguist.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/linguist.desktop
    cp --force /usr/share/applications/qdbusviewer.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/qdbusviewer.desktop
    cp --force /usr/share/applications/geoclue-demo-agent.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/geoclue-demo-agent.desktop
    cp --force /usr/share/applications/geoclue-where-am-i.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/geoclue-where-am-i.desktop
    cp --force /usr/share/applications/google-maps-geo-handler.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/google-maps-geo-handler.desktop
    cp --force /usr/share/applications/lstopo.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/lstopo.desktop
    cp --force /usr/share/applications/qv4l2.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/qv4l2.desktop
    cp --force /usr/share/applications/qvidcap.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/qvidcap.desktop
    cp --force /usr/share/applications/qwant-maps-geo-handler.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/qwant-maps-geo-handler.desktop
    cp --force /usr/share/applications/wheelmap-geo-handler.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/wheelmap-geo-handler.desktop
    cp --force /usr/share/applications/org.kde.kuserfeedback-console.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/org.kde.kuserfeedback-console.desktop
    cp --force /usr/share/applications/org.kde.kinfocenter.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/org.kde.kinfocenter.desktop
    cp --force /usr/share/applications/cmake-gui.desktop ${HOME}/.local/share/applications
    echo "NoDisplay=true" >> ${HOME}/.local/share/applications/cmake-gui.desktop
    
  6. Reboot!

Post-installation essentials

Here's a list of things I'm missing from the default installation, that I think every user should have.

Wayland

  1. Install Wayland:
    yay -S plasma-wayland-session
    
  2. Install basic portals for Wayland compatibility:
    yay -S xdg-desktop-portal xdg-desktop-portal-kde xdg-desktop-portal-gtk
    
  3. Log Out.
  4. In the Log In screen, select Plasma (Wayland) from the session menu before logging in.

GPU Drivers (AMD)

  1. Install Vulkan for AMD GPU:
    yay -S vulkan-radeon lib32-vulkan-radeon libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau
    
  2. Reboot.

Flatpak store

Install Flatpak and Discover:

yay -S discover flatpak flatpak-kcm

.local hostname resolution

Enable hostname.local resolution. Avahi: Hostname Resolution

Install Avahi and NSS:

yay -S avahi nss-mdns
sudo systemctl enable --now avahi-daemon.service

Printer setup

yay -S cups-pdf system-config-printer
sudo systemctl enable --now cups.service

Endeavour missing icons

yay -S endeavouros-theming

Post-installation extras

Mount non OS disks on startup

By default, non OS disks (as in disks not containing the OS) are not mounted on startup. To change this, you can use KDE Partition Manager to set the mount point of the disk to /run/media/disk_name. This will mount the disk on startup.

  1. Install KDE System Tools:
    yay -S kde-system
    
  2. Create the mount point folder:
    sudo mkdir /run/media/disk_name
    
  3. Open KDE Partition Manager. You can find it in the application menu, or by running partitionmanager in the terminal.
  4. Select the Device, then right click on the Partition you want to mount on startup, and select Edit Mount Point
  5. Set the mount point to boot from UUID, and select the folder you created in step 2. Leave everything else as default
  6. Reboot

Quality of life

This is a list of things I like to change from the default installation that I think most users would like to change as well.

Useful software

These are some useful software that I like to install.

yay -S octopi octopi-notifier-qt5 noto-fonts-emoji noto-color-emoji-fontconfig

Firefox + Plasma Integration

Plasma Integration for Firefox:

yay -S plasma-browser-integration

And then install the Add-on from the Firefox Add-ons page.

Steam

Steam, by default, is missing some Steam missing 32 bits libraries, so hereś an all in one command to install Steam alongside those libraries:

yay -S lib32-fontconfig lib32-freetype2 lib32-gdk-pixbuf2 lib32-glib2 lib32-libice lib32-libnm lib32-openal lib32-libpipewire lib32-libpulse lib32-sdl2 lib32-libsm lib32-libxrandr lib32-libxinerama lib32-libvdpau lib32-libva lib32-gtk2 steam

Then remember to enable Steam Play for all titles in the Steam Play settings, under Compatibility.

Customization

English International Keyboard

Be sure to set keyboard language to English (US, intl., with dead keys) in KDE. Then:

curl https://raw.githubusercontent.com/raelgc/win_us_intl/master/.XCompose --output ${HOME}/.XCompose

Disable suspend

Just follow the instructions in the Arch Wiki:

sudo mkdir --parents /etc/systemd/sleep.conf.d/
kwrite /etc/systemd/sleep.conf.d/disable-suspend.conf
[Sleep]
AllowSuspend=no
AllowHibernation=no
AllowSuspendThenHibernate=no
AllowHybridSleep=no

Plymouth

  1. Install Plymouth:

    yay -S plymouth-git plymouth-kcm breeze-plymouth
    
  2. Configure dracut:

    kwrite /etc/dracut.conf.d/myflags.conf
    
    add_dracutmodules+=" plymouth "
    force_drivers+=" amdgpu "
    
  3. Configure kernel options

    kwrite /etc/kernel/cmdline
    
    + nvme_load=YES nowatchdog rw rootflags=subvol=/@ root=UUID=60e03a50-4407-4d46-a548-fcdfd4464dad quiet loglevel=3 splash
    - nvme_load=YES nowatchdog rw rootflags=subvol=/@ root=UUID=60e03a50-4407-4d46-a548-fcdfd4464dad
    
  4. Configure Plymouth

    sudo plymouth-set-default-theme bgrt
    kwrite /etc/plymouth/plymouthd.conf
    
    + DeviceScale=2
    
  5. Reinstall kernel with updated settings

    sudo reinstall-kernels
    

Environment Variables

These can be placed in a config file (i.e. ~/.config/environment.d/envvars.conf) for systemd to pick up.

Changing them requires a reboot.

mkdir --parents ${HOME}/.config/environment.d
kwrite ${HOME}/.config/environment.d/envvars.conf
# Steam: force 2x scaling
STEAM_FORCE_DESKTOPUI_SCALING=2.0

# Firefox: enable Wayland
MOZ_ENABLE_WAYLAND=1

# Visual Studio Code KDE File Dialog (breaks 1password file upload)
#GTK_USE_PORTAL=1

Cleanup

Hide useless applications

Vanilla Plasma comes with some required dependencies I find to be not very useful, so I just hide them from the Application Launcher menu with a bash script:

apps_to_hide=(\
"avahi-discover.desktop" \
"bssh.desktop" \
"bvnc.desktop" \
"assistant.desktop" \
"designer.desktop" \
"linguist.desktop" \
"qdbusviewer.desktop" \
"geoclue-demo-agent.desktop" \
"geoclue-where-am-i.desktop" \
"google-maps-geo-handler.desktop" \
"lstopo.desktop" \
"qv4l2.desktop" \
"qvidcap.desktop" \
"qwant-maps-geo-handler.desktop" \
"wheelmap-geo-handler.desktop" \
"org.kde.kuserfeedback-console.desktop" \
"org.kde.kinfocenter.desktop" \
)
mkdir --parents ~/.local/share/applications/
for str in ${apps_to_hide[@]}; do
  echo "Disabling $str"
  cp -f /usr/share/applications/$str ~/.local/share/applications
  echo "NoDisplay=true" >> ~/.local/share/applications/$str
done

Remove unused packages

Endeavour has some pretty cool apps, but other ones are just not for me. Here's a list of packages I remove after installation:

yay -Rsu networkmanager-openconnect xterm