Notes on EndeavourOS
I have been using EndeavourOS on my Dragon Canyon NUC for months. It is my chosen Linux distribution because it offers an easy-to-install Arch Linux environment, and I am familiar with Arch Linux. I need to stay on the cutting edge for desktop environments, display protocols, and graphics drivers due to issues with NVIDIA and the Linux desktop (especially Wayland). Many developments are happening in real-time to improve them. With Arch Linux, I can easily install an AUR package from a merge request, as well as switch to beta drivers when they become available.
Wayland is important to me because I’m using a 27" 4K display. For the best visual size, it should be set to 150% fractional scaling. KDE Plasma supports fractional scaling under Wayland and has an option to “let Xwayland applications scale themselves” to prevent them from being blurry. That’s the reason I chose KDE as my desktop environment. Moreover, KDE Plasma 6 offers a nice experience both functionally and aesthetically.
Here is a note in Logseq that I use to track how I install and configure EndeavourOS. I’m interested in a declarative way to build operating systems and am slowly learning NixOS. However, in the meantime, I am very satisfied with my current EndeavourOS setup.
- Configure the Windows Registry to use UTC hardware time:
1
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
- Disable Secure Boot and Fast Boot in the BIOS. If Fast Boot is enabled, accessing the BIOS by pressing F2 is difficult. Instead, I have to use Settings > System > Recovery > Advanced startup in Windows, and after rebooting, choose Troubleshoot > Advanced options > UEFI Firmware Settings to access the BIOS.
- Flash the EndeavourOS ISO to a USB disk using Rufus, contrary to the documentation on the EndeavourOS website. I had to choose the GPT partition and ISO mode to make my PC recognize the boot drive.
- Change network settings in KDE settings: manually set the IP address and DNS and gateway to
192.168.1.2
. - Install EndeavourOS using the online installer, KDE desktop environment, erasing the Samsung 970 EVO disk with btrfs and without swap.
- Eject the USB disk and reboot into EndeavourOS.
- Install
nvidia-inst
usingyay
and runnvidia-inst
to install the GPU driver, then reboot again. - Disable the Dummy HDMI Plug in Display Settings and set the scale to 150%; turn off Adaptive Sync.
- Fix the suspend issue by preserving video memory as described here:
sudo nano /etc/modprobe.d/nvidia-power-management.conf
options nvidia NVreg_PreserveVideoMemoryAllocations=1 NVreg_TemporaryFilePath=/var/tmp
- sudo systemctl enable nvidia-suspend.service
- sudo systemctl enable nvidia-hibernate.service
- sudo reinstall-kernels
- Install the
xorg-xwayland-explicit-sync-git
andegl-wayland-git
AUR packages usingyay
. This will make Xwayland issues with NVIDIA more manageable. - Install
fcitx5-im
andfcitx5-chinese-addons
usingyay
, and select Fcitx 5 in System Settings > Keyboard > Virtual Keyboard; add Pinyin as an Input Method. - Copy
.ssh/id_rsa
,.ssh/config
, and.ssh/id_rsa.pub
from Windows on the same device. - Enable
mdns
andkdeconnect
in the Firewall configuration. - Configure Firefox:
- Extensions:
- Mainichi
- uBlock Origin
- Bitwarden
- floccus
- Always show the bookmark bar.
- Disable Recommend extensions and features as you browse.
- Enable Proxy DNS when using SOCKS v5.
- Disable DNS over HTTPS.
- Disable Ask to save passwords.
- Enable “Tell websites not to sell or share my data” and “Send websites a Do Not Track (DNT) request”.
- Uncheck all checkboxes in Firefox Data Collection and Use.
- Uncheck “Block dangerous and deceptive content”.
- Toggle
identity.fxaccounts.enabled
tofalse
inabout:config
. - Toggle
extensions.pocket.enabled
tofalse
inabout:config
. - Set the homepage to “Blank Page”.
- Extensions:
- Disable “Show small window previews when hovering over tasks” in task manager options.
- Arch packages installed with
pacman
:- flatpak
- thunderbird
- obsidian
- Create
.config/obsidian/user-flags.conf
with--ozone-platform-hint=wayland --enable-wayland-ime
.
- Create
- bitwarden
- Create
.config/electron28-flags.conf
with the following content:1
2--ozone-platform-hint=wayland
--enable-wayland-ime
- Create
- fastfetch
- docker
- Add the current user to the docker group:
sudo usermod -aG docker $USER
.
- Add the current user to the docker group:
- cuda
- libreoffice-fresh
- Create
.config/environment.d/env-vars.conf
withSAL_USE_VCLPLUGIN=gtk3
. This can fix text and icon sizes.
- Create
- btop
- htop
- bottom
- nvtop
- gst-plugins-qsv
- gst-plugins-bad
- libva-utils
- intel-media-driver
- intel-media-sdk
- intel-gpu-tools
- handbrake
- gimp
- krita
- thunderbird
- kdenlive
- remmina
- freerdp
- discover
- kid3
- merkuro
- zanshin
- tokodon
- kasts
- telegram-desktop
- ttf-jetbrains-mono
- zeal
- kubectl
- kubectx
- zsh
- rustup
- nextcloud-client
- neovim
- tmux
- inkscape
- pastel
- yt-dlp
- k3b
- bat
- dust
- git-delta
- eza
- eva
- fd
- gitui
- glow
- gron
- xh
- pipe-rename
- procs
- yazi
- ttf-hack-nerd
- rclone
- ripgrep
- silicon
- skim
- tokei
- viu
- zellij
- timeshift
- Setup daily btrfs snapshots.
systemctl enable cronie
.
- nvidia-container-toolkit
- speech-dispatcher
- cmatrix
- AUR packages installed with
yay
:- logseq-desktop-bin
- Note: Wayland has not been enabled for Logseq due to a bug causing the window to shrink with each start and occasional crashes on close.
- visual-studio-code-bin
- Create
.config/code-flags.conf
with the following content:1
2--ozone-platform-hint=wayland
--enable-wayland-ime
- Create
- vlc-git
- xone-dkms
- spotify
- Create
.config/spotify-flags.conf
with the following content:1
2
3--enable-features=UseOzonePlatform
--ozone-platform=wayland
--enable-wayland-ime
- Create
- drawio-desktop
- kopia-ui-bin
- Set up daily backups of the home directory.
- plex-mpv-shim
- Open TCP 3000 and UDP 32410-32414 ports in firewall settings.
- Set up auto-start in
~/.config/systemd/user/plex-mpv-shim.service
:1
2
3
4
5
6
7
8
9
10
11
12
13[Unit]
Description=Plex MPV Shim Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/plex-mpv-shim
Restart=always
RestartSec=3
Environment=GDK_BACKEND=x11
[Install]
WantedBy=default.target1
2
3systemctl --user daemon-reload
systemctl --user enable plex-mpv-shim.service
systemctl --user start plex-mpv-shim.service
- logseq-desktop-bin
- Flatpak apps:
- Ungoogled Chromium
- Create
~/.var/app/com.github.Eloston.UngoogledChromium/config/chromium-flags.conf
with--ozone-platform-hint=wayland --enable-wayland-ime
.
- Create
- Android Studio
- OpenLens
- DBeaver Community
- Zotero
- Discord
- Plexamp
- Flatseal
- Gear Lever
- Ungoogled Chromium
- AppImage apps:
- Insomnia
- Configure mpv for hardware decoding: create
~/.config/mpv.conf
and~/.config/plex-mpv-shim/mpv.conf
withhwdec=auto-copy
. Additionally, add the commandset hwdec auto-copy
in Haruna Media Player. - Install
prezto
:1
2
3
4
5
6
7
8
9
10zsh
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
chsh -s /bin/zsh- Configure Konsole command to
/bin/zsh
- Add pmodules in
.zpreztorc
:git
,syntax-highlighting
,ssh
,tmux
,fasd
beforeprompt
- Configure Konsole command to
- Install
goenv
:1
2
3
4
5git clone https://github.com/go-nv/goenv.git ~/.goenv
echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.zshenv
echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.zshenv
echo 'eval "$(goenv init -)"' >> ~/.zshrc
goenv install 1.22 - Install
fnm
:1
2curl -fsSL https://fnm.vercel.app/install | bash
fnm install 20 - Set up the rust toolchain and install some cargo applications:
1
2
3
4
5rustup install stable
cargo install cargo-update
cargo install dtool
cargo install --locked csview
cargo install fclones- Append
export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH"
to.zshrc
.
- Append
- Append aliases to
.zshrc
:1
2
3
4
5
6
7
8
9alias comet-core="ssh comet-core.lan -t 'tmux new-session -A -s main'"
alias porygon2="ssh porygon2.lan -t 'tmux new-session -A -s main'"
alias vim="nvim"
alias vi="nvim"
alias vimdiff="nvim -d"
export EDITOR="nvim"
export GIT_EDITOR="nvim" - Check that the Intel iGPU works for video encoding:
LIBVA_DRIVER_NAME=iHD vainfo --display drm --device /dev/dri/renderD129
.