Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Setup Checklist

Tested on Fedora Workstation 44, RTX 5060 Ti eGPU, ThinkPad X1 Yoga

Base System Fedora Everything 44

  1. Download Fedora Everything 44

  2. Install:

    • Select “Fedora Custom Operation System”

      • AND Common NetworkManager Submodules

      • AND Standard (common set of utilities)

    • Partitioning: Use automatic (Btrfs)

    • User: Create your account with sudo access

Fix Wifi

nmcli device status

In case this does not list the WiFi device, connect your Hotspot via USB Tethering and run the following commands:

wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/intel/iwlwifi/iwlwifi-so-a0-gf-a0-89.ucode
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/intel/iwlwifi/iwlwifi-so-a0-gf-a0.pnvm

sudo mv iwlwifi-so-* /lib/firmware/

sudo chown root:root /lib/firmware/iwlwifi-so-*
sudo chmod 644 /lib/firmware/iwlwifi-so-*

sudo modprobe -r iwlwifi
sudo modprobe iwlwifi

Then, check again and connect to your WLAN:

nmcli device status
nmcli device wifi connect <SSID> --ask

Install Desktop

After first boot, run the following commands on the command line:

sudo dnf install niri niri-settings
sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release
sudo dnf install noctalia
sudo dnf install noctalia-greeter
sudo noctalia-greeter-apply-appearance --setup-system  # setup default config in /var/lib/noctalia-greeter
# Use Kitty as Terminal Emulator:
sudo dnf install kitty
sudo dnf remove alacritty
# Add this to your local ~/.ssh/config:
# Host *
#   SetEnv TERM=xterm-256color

Start Noctalia from Niri:

# ~/.config/niri/config.kdl:
spawn-at-startup "noctalia"
...
# Mod+T hotkey-overlay-title="Open a Terminal: alacritty" { spawn "alacritty"; }
Mod+T hotkey-overlay-title="Open a Terminal" { spawn "kitty"; }

Then make sure to configure greetd:

# /etc/greetd/config.toml:
[terminal]
vt = 1

[default_session]
command = "env XKB_DEFAULT_LAYOUT=ch /usr/bin/noctalia-greeter-session"
user = "greetd"

And finally boot into your lightweight Niri + Noctalia desktop:

sudo systemctl set-default graphical.target
sudo systemctl enable greetd --now

Fix Sound

In case you don’t have any sound, fix it with:

sudo dnf install alsa-sof-firmware

echo "options snd-intel-dspcfg dsp_driver=3" | sudo tee /etc/modprobe.d/use-sof.conf
sudo dracut --regenerate-all --force
sudo grubby --update-kernel=ALL --args="snd-intel-dspcfg.dsp_driver=3"
sudo reboot

Configure Fingerprint Reader

sudo dnf install fprintd
sudo fprintd-enroll $USER
sudo authselect enable-feature with-fingerprint
sudo authselect select apply-changes
sudo systemctl enable --now fprintd

Make sure GTK apps prefer dark theme

gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'

AppImageLauncher

  1. Download RPM from GitHub Release page

  2. Install the RPM with sudo dnf install $HOME/Downloads/appimagelauncher_*.rpm

Paymo

Downoad Paymo Track from their Website and integrate the AppImage using the installed AppImageLauncher.

Online Accounts

sudo dnf install evolution evolution-ews

Study & Work

  1. Start Evolution

  2. Start the New Mail Account Wizard: Click File > New > Mail Account

  3. Enter your Email Address and uncheck Look up mail server details…, click Next

  4. Select Server Type: Exchange Web Services

Unified Inbox in Evolution

To have a grouped inbox view in Evolution I am going to use the Search Folders feature. Go to Edit > Preferences and enable Search Folders. Then drag it the top. Then create a new Search Folder in Edit > Search Folders > Add with the following settings:

Repeat the above steps for any Unified Folder you want to have (e.g. for Archive)

Private

ServerPortEncryption
Incoming Mail (IMAP)imappro.zoho.eu993STARTTLS
Outgoing Mail (SMTP)smtp.zoho.eu587STARTTLS

zoho.com/mail/help/imap-access

eGPU: RTX 5060 Ti

  1. Plugin eGPU

  2. Authorize Thunderbolt:

    sudo dnf install bolt
    boltctl list
    # if the device is not authorized:
    boltctl authorize DEVICE_UUID
    boltctl enroll DEVICE_UUID # store permanently
  3. Install proprietary NVIDIA drivers from RPM Fusion Non-Free:

    # https://linuxcapable.com/how-to-install-nvidia-drivers-on-fedora-linux/#install-nvidia-drivers-on-fedora-44
    # Enable non-free repo (required for NVIDIA)
    sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
    
    # Update
    sudo dnf groupupdate core
    sudo dnf update
    
    sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda
    sudo dnf mark user akmod-nvidia
    
    # Full driver (includes CUDA + desktop)
    sudo dnf install nvidia-driver nvidia-driver-cuda
    sudo dracut -f
    
    # Edit `/etc/default/grub` and add these parameters to `GRUB_CMDLINE_LINUX`:
    pcie_ports=native pcie=hpbussize=0x33,realloc,hpmmiosize=128M,hpmmioprefsize=512M pcie_aspm=off pcie_port_pm=off rd.driver.blacklist=nouveau,nova_core modprobe.blacklist=nouveau,nova_core,nvidia_drm
    
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    sudo reboot

Fix GPU Instabilities

If you run into stability issues when your eGPU is under load (i.e. it is “falling of the bus”), then try to cap the transfer speed of the Thunderbolt Link. Unfortunately, this issue is quite common when using a Blackwell GPU attached via Thunderbolt.

# Symptom: Under load, you can see bursts of the following error up until the GPU driver crashes:
$ journalctl -kf | grep -E 'BadDLLP|Xid|fallen' 
kernel: pcieport 0000:21:01.0:    [ 7] BadDLLP               
kernel: pcieport 0000:21:01.0:    [ 7] BadDLLP

# Fix it by capping the transfer speed of the Thunderbolt Link.
# The NVIDIA driver does have its own way to limit link speed: a registry key called RMPcieLinkSpeed.
# See NVIDIA's open driver header (nvrm_registry.h): Each PCIe generation gets a 2-bit field,
# where 01 = allow and 10 = disallow:
#
# ┌────────────┬────────────┬────────────┬────────────┬────────────┐
# │ Gen6 (9:8) │ Gen5 (7:6) │ Gen4 (5:4) │ Gen3 (3:2) │ Gen2 (1:0) │
# ├────────────┼────────────┼────────────┼────────────┼────────────┤
# │ 10 off     │ 10 off     │ 10 off     │ 10 off     │ 01 on      │
# └────────────┴────────────┴────────────┴────────────┴────────────┘
#
# For Gen2, that works out to 0b10_1010_1001 = 0x2A9:
echo 'options nvidia NVreg_RegistryDwords="RMPcieLinkSpeed=0x2a9"' | sudo tee /etc/modprobe.d/nvidia-egpu.conf

# Reload the driver and check the flag has been applied:
sudo modprobe -r nvidia_uvm nvidia && sudo modprobe nvidia
grep RegistryDwords /proc/driver/nvidia/params   # should show RMPcieLinkSpeed=0x2a9

Now test the eGPU again under load while watching its link speed and in parallel watch out for burts of the original error messages:

# We want 5.0 GT/s max:
watch -n1 "cat /sys/bus/pci/devices/0000:<egpu-bus-id>/current_link_speed"

and

# The error should now no longer appear in bursts (if at all):
journalctl -kf | grep -E 'BadDLLP|Xid|fallen'