EndeavourOS installation notes
by Perroboc
6 min read
Holy crap that was easy.
Installation
- Select KDE Plasma as desktop environment.
- Don't install EndeavourOS software, nor KDE EndeavourOS apps.
- Don't install
firewalld
, we will configure it later. - Select
systemd-boot
as the bootloader. - Format whole disk, swap file, btrfs filesystem.
TL;DR
I'm in a hurry, just give me the copy pasta magic:
- 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
- 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
- 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
- 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
- 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
- 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
- Install Wayland:
yay -S plasma-wayland-session
- Install basic portals for Wayland compatibility:
yay -S xdg-desktop-portal xdg-desktop-portal-kde xdg-desktop-portal-gtk
- Log Out.
- In the Log In screen, select
Plasma (Wayland)
from the session menu before logging in.
GPU Drivers (AMD)
- Install Vulkan for AMD GPU:
yay -S vulkan-radeon lib32-vulkan-radeon libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau
- 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.
- Install KDE System Tools:
yay -S kde-system
- Create the mount point folder:
sudo mkdir /run/media/disk_name
- Open
KDE Partition Manager
. You can find it in the application menu, or by runningpartitionmanager
in the terminal. - Select the Device, then right click on the Partition you want to mount on startup, and select
Edit Mount Point
- Set the mount point to
boot from UUID
, and select the folder you created in step 2. Leave everything else as default - 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
-
Install Plymouth:
yay -S plymouth-git plymouth-kcm breeze-plymouth
-
Configure dracut:
kwrite /etc/dracut.conf.d/myflags.conf
add_dracutmodules+=" plymouth " force_drivers+=" amdgpu "
-
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
-
Configure Plymouth
sudo plymouth-set-default-theme bgrt kwrite /etc/plymouth/plymouthd.conf
+ DeviceScale=2
-
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