Fedora 44 from scratch on a Surface Go: my full setup
Every time I reinstall Fedora I spend a couple of hours trying to remember what I did last time. This post is my personal reference so I never have to improvise again. If it’s useful to you too, great.
Hardware: Surface Go with Intel Pentium/Core m3. Distro: Fedora 44 with DNF5, kernel 7.0 and GNOME 50.
1. Optimize DNF
First thing before touching anything else. Edit /etc/dnf/dnf.conf:
sudo vim /etc/dnf/dnf.conf
Add at the end of the [main] section:
fastestmirror=True
max_parallel_downloads=10
defaultyes=True
best=False
clean_requirements_on_remove=True
fastestmirrorautomatically picks the fastest mirror.max_parallel_downloads=10downloads in parallel (default is 3).defaultyesskips confirmation on every operation.best=Falseavoids unnecessary dependency errors.clean_requirements_on_removecleans up orphaned packages on uninstall.
2. Vim as default editor
sudo dnf install -y vim
echo 'export EDITOR=vim' >> ~/.bashrc
echo 'export VISUAL=vim' >> ~/.bashrc
source ~/.bashrc
Make sudo inherit the editor:
sudo EDITOR=vim visudo
Find Defaults env_reset and add below it:
Defaults env_keep += "EDITOR VISUAL"
From now on sudo visudo opens vim directly.
3. DNF without password for your user
sudo EDITOR=vim visudo -f /etc/sudoers.d/dnf-nopasswd
Content:
qtekfun ALL=(ALL) NOPASSWD: /usr/bin/dnf
Verify the file is valid:
sudo visudo -c -f /etc/sudoers.d/dnf-nopasswd
4. RPM Fusion
sudo dnf install -y \
https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
5. Flathub
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Prioritize Flathub over Fedora’s OCI repo:
flatpak remote-modify --prio=1 flathub
flatpak remote-modify --prio=0 fedora
6. Firmware
sudo fwupdmgr refresh
sudo fwupdmgr get-updates
sudo fwupdmgr update
7. Multimedia codecs
With RPM Fusion already active:
sudo dnf group install multimedia -y
sudo dnf group install sound-and-video -y
8. Intel drivers (Surface Go)
The Surface Go uses a 7th-8th gen Intel GPU, so the correct driver is the legacy libva-intel-driver, not intel-media-driver.
sudo dnf install -y libva-intel-driver mesa-vulkan-drivers vulkan-tools libva-utils
Verify VA-API is working:
vainfo
You should see H264, HEVC and VP9 profiles without errors. If the driver loads as iHD driver for Intel Gen Graphics, everything is correct.
9. Disable unnecessary repos
On a Surface Go with Intel you don’t need the NVIDIA or Steam repos from RPM Fusion:
sudo dnf config-manager setopt rpmfusion-nonfree-nvidia-driver.enabled=0
sudo dnf config-manager setopt rpmfusion-nonfree-steam.enabled=0
10. VS Code
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
sudo dnf install -y code
11. Prompt: Starship + Nerd Font
Install Starship
curl -sS https://starship.rs/install.sh | sh
echo 'eval "$(starship init bash)"' >> ~/.bashrc
source ~/.bashrc
Gruvbox Rainbow preset
starship preset gruvbox-rainbow -o ~/.config/starship.toml
JetBrains Mono Nerd Font
The version in Fedora’s repo doesn’t include the icons. Download the official Nerd Font:
mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts
curl -fLo "JetBrainsMono.zip" https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip
unzip JetBrainsMono.zip
rm JetBrainsMono.zip
fc-cache -fv
Configure Terminator
Go to Preferences → Profiles → Default → General, disable the system font and select JetBrainsMono Nerd Font Mono at size 12.
End result
qtekfun ~/repos/qtekfun.github.io master 12:40
Username, directory, git branch and time. No noise, no weird dependencies, reproducible in under 5 minutes on any fresh install.
Notes on the Surface kernel
The stock Fedora 44 kernel (7.0) has decent Surface Go support out of the box. The linux-surface project provides a patched kernel, but the official repo has no Fedora 44 packages yet and the F43 workaround conflicts with libwacom, which can take GNOME down with it. Not worth the risk until the project updates the repo.