Various post-installation tasks for a Fedora 42 Workstation setup using GNOME 48, an Nvidia GPU, and Wayland session.
# Use lsblk to find Windows EFI partition, note that,
# this case it's /dev/nvme0n1p1
lsblk
sudo nano /etc/default/grub
Change this value, or add lines and values if they don't exist:
GRUB_TIMEOUT=7
GRUB_DEFAULT="Windows Boot Manager (on /dev/nvme0n1p1)"
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_GFXMODE=1920x1080x32,1366x768x32,1280x720x32,auto
GRUB_GFXPAYLOAD_LINUX=keep
Build the new GRUB configuration:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# Firmware Updates
sudo fwupdmgr refresh --force
sudo fwupdmgr get-updates
sudo fwupdmgr update
# Set a custom hostname
sudo hostnamectl set-hostname xxxx-pc
# Configure system clock for dual-booting with Windows (optional if not dual-booting).
# For following Windows standard, set to 1 (as Windows expects the RTC to be local time).
# For following Linux / MacOS standard (default), set to 0 as it will set the hardware clock to UTC.
sudo timedatectl set-local-rtc '1'
# sudo timedatectl set-local-rtc '0'
# Optional: Disable NetworkManager-wait-online.service to potentially speed up boot
# Be cautious: may affect services that rely on network being up at boot
# sudo systemctl disable NetworkManager-wait-online.service
# Optional: Prevent GNOME Software from auto-starting
sudo mv /etc/xdg/autostart/org.gnome.Software.desktop \
/etc/xdg/autostart/org.gnome.Software.desktop.disabled
# To enable it again:
sudo mv /etc/xdg/autostart/org.gnome.Software.desktop.disabled \
/etc/xdg/autostart/org.gnome.Software.desktop
Edit local dnf.conf
sudo nano /etc/dnf/libdnf5.conf.d/80-local.conf
[main]
max_parallel_downloads=10
fastestmirror=true
# Add RPM Fusion (free and non-free)
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
# Optional: Add Terra repository (for extra packages)
# Note: Using --nogpgcheck is generally discouraged. But it seems it can't do without it for Terra
# sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' -y terra-release
# Add Flathub repository for Flatpak applications
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# Optional: Remove Fedora's own Flatpak remote if you prefer Flathub exclusively
# flatpak remote-delete fedora
# Refresh system after adding new repositories
sudo dnf upgrade --refresh -y
# Optional Pre-requisites (usually handled by akmod, but good for Secure Boot setups, manual signing is needed)
# For systems with Secure Boot, you might need to enroll RPM Fusion's keys.
# sudo dnf install -y kernel-devel kernel-headers gcc make dkms
# --- OPTIONAL BUT RECOMMENDED FOR NVIDIA RTX 4000/5000 SERIES AND NEWER ---
# These GPUs can benefit from or may require NVIDIA’s open kernel modules.
# To enable building with open kernel module support via akmod:
# This is a one-time setting. Execute this command BEFORE installing akmod-nvidia.
# sudo mkdir -p /etc/rpm/macros.d/
# echo "%_with_nvidia_open 1" | sudo tee /etc/rpm/macros.d/macros.nvidia-open
# --- End of optional step for newer NVIDIA GPUs ---
Install NVIDIA drivers and CUDA support
sudo dnf install -y akmod-nvidia xorg-x11-drv-nvidia-cuda
Note: If you enabled the nvidia-open macro above (for RTX 4xxx/5xxx), akmod will attempt to build with it.
Enable NVIDIA DRM Kernel Mode Setting (KMS) for Wayland and smoother experience
sudo grubby --update-kernel=ALL --args="nvidia-drm.modeset=1"
IMPORTANT: REBOOT REQUIRED!
sudo reboot
# Verify nvidia-drm.modeset=1 is in kernel command line
cat /proc/cmdline
# Optional: Manually inspect GRUB configuration (if needed)
# sudo nano /etc/default/grub
# Check if NVIDIA drivers are loaded and GPU is recognized
nvidia-smi
# Scale the UI for High-DPI screen
# You can now set the fractional scaling to your liking: 125%, 150%, 175%, etc. (Settings > Display)
# Personally, I prefer the Large Size Text "trick" (Settings > Accessibility > Seeing > Large Text)
# Using Large Text won't mess with the scaling of content (pictures, video, etc),
# it just scales the font and the UI will follow.
# For granular Large Text size trick can be done with Gnome Tweaks: `sudo dnf install -y gnome-tweaks`
(Potential fix for screen freeze and stutter) If you experience occasional screen freezes, cursor stuttering, or other graphical glitches, especially with NVIDIA drivers, forcing Mutter (the GNOME window manager) to use a simpler Kernel Mode Setting (KMS) mode might help. This disables Atomic KMS, which can sometimes be a source of issues.
To apply this experimental change:
sudo nano /etc/profile.d/mutter-kms-simple.sh
# Force Mutter to use simple KMS mode
export MUTTER_DEBUG_FORCE_KMS_MODE='simple'
# Make the script executable:
sudo chmod +x /etc/profile.d/mutter-kms-simple.sh
sudo reboot
To revert this change to default:
sudo rm /etc/profile.d/mutter-kms-simple.sh
sudo reboot
Disabling it because GSP is offloading some CPU task to GPU, which sometimes hurt GPU performance.
Disabling Hardware-Accelerated GPU Scheduling (HAGS) on Windows 11 are done for the same reason.
sudo nano /etc/modprobe.d/nvidia-gsp-disable.conf
Comment this line:
# options nvidia NVreg_EnableGpuFirmware=0
# Enable Cisco OpenH264
sudo dnf config-manager setopt fedora-cisco-openh264.enabled=1
# Switch to full ffmpeg
sudo dnf swap -y ffmpeg-free ffmpeg --allowerasing
# Install essential codecs and H/W Video Decoding with VA-API support
sudo dnf install -y openh264 gstreamer1-plugin-openh264 ffmpeg-libs libva libva-utils
# Wrapper that can bridge NVDEC/NVENC with VA-API
sudo dnf install -y libva-nvidia-driver
# Install additional codec
sudo dnf update -y @multimedia --setopt="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
# Install additional codec and tools for HiFi Bluetooth Audio
sudo dnf install -y pipewire-codec-aptx libfreeaptx blueman bluez-tools
# Alternative/Broader: Install sound and video group
# sudo dnf group install -y sound-and-video
# If your DAC supports higher than 48 kHz sample rate audio, you can change it from here:
# Change it from user configuration (needs to be copied first)
mkdir -p ~/.config/pipewire && \
cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/pipewire.conf
nano ~/.config/pipewire/pipewire.conf
# Note: Editing from user configuration doesn't work for me, so I edit from the system-wide.
# sudo nano /usr/share/pipewire/pipewire.conf
# If you edit from system-wide, you might need to edit /usr/share/pipewire/pipewire.conf
# after every PipeWire package updated
## Properties for the DSP configuration.
default.clock.rate = 96000
default.clock.allowed-rates = [ 44100 48000 96000 192000 384000 ]
# Restart PipeWire for the updated changes
systemctl --user restart pipewire pipewire-pulse wireplumber
# To check the bit rate and sample rate
pw-top
# Note:
# Spotify will use the media played bit rate and sample rate
# System / Gnome and most other apps will use what you set
# Install Firefox h264 Plugin
sudo dnf install -y mozilla-openh264
# Enable the h264 plugin on Firefox settings
# While you at it, also set this:
# Go to `about:config` and set:
# layers.acceleration.force-enabled → true
# media.ffmpeg.vaapi.enabled → true
# gfx.webrender.all → true
# If you want also remove Firefox completely
# sudo dnf remove -y mozilla-openh264 firefox && rm -rf ~/.mozilla/firefox/ ~/.cache/mozilla/
curl -fsS https://dl.brave.com/install.sh | sudo sh
# For better Wayland experience, go to `brave://flags` and set:
# ozone-platform-hint → Wayland
# wayland-ui-scaling → Enabled
# wayland-linux-drm-syncobj → Enabled
# To install Microsoft Edge
sudo wget https://packages.microsoft.com/yumrepos/edge/config.repo -O /etc/yum.repos.d/microsoft-edge.repo
sudo dnf makecache
sudo dnf install microsoft-edge-stable
# For better Wayland experience, go to `edge://flags` and set:
# ozone-platform-hint → Wayland
# wayland-ui-scaling → Enabled
# wayland-linux-drm-syncobj → Enabled
# To remove Microsoft Edge
sudo dnf remove microsoft-edge-stable
sudo rm /etc/yum.repos.d/microsoft-edge.repo
sudo dnf makecache
rm -rf ~/.config/microsoft-edge/
# Install Oh My Posh
curl -s https://ohmyposh.dev/install.sh | bash -s
# Install a font for Oh My Posh (it will install Nerd Font variants)
oh-my-posh font install
# Choose Nerd Font(s) you want to install/try
# Refresh font cache
fc-cache -fv
# Set your terminal fonts to use the Nerd variants.
# It has "Nerd" on its name.
# Configure Oh My Posh for Bash (add to ~/.bashrc)
omp_theme='eval "$(oh-my-posh init bash --config /home/$USER/.cache/oh-my-posh/themes/slimfat.omp.json)"' \
&& sed -i '/oh-my-posh init bash/d' ~/.bashrc \
&& echo "" >> ~/.bashrc \
&& echo "$omp_theme" >> ~/.bashrc \
&& exec bash
# For upgrade
oh-my-posh upgrade --force
sudo dnf install -y gnome-tweaks gnome-extensions-app
# Something essentials
sudo dnf install -y seahorse gnome-sound-recorder meld fastfetch btrfs-assistant btrbk ncdu # etc ...
# For Development and stuff
sudo dnf group install -y development-tools c-development && sudo dnf install -y cmake clang
These are examples, install them manually.
- Extension Manager (
Essential for installing Gnome Extensions below
) - Czkawka (
Apps to check differences of files and folders
)
These are examples, install them manually.
- Dash to Panel
Windows-like taskbar with lots of customization
- Vitals
shows hardware resource usage
- Hide Accessibility Menu
useful if using the Large Text "trick" instead of fractional scaling
- Tiling Assistant
unlocks 4 regions of window tiling
- Caffeine
button to temporarily prevent sleep / suspend
- Coverflow Alt-Tab
3D card effect for switching between windows
- Desktop Cube
3D cube effect for workspace overview / switching
- Compiz alike magic lamp effect
jelly effect when minimizing a window
- Compiz window effect
jelly effect of a window
- Burn My Windows
TV shutdown effect on closing a window
# Optional: Remove LibreOffice if replacing OnlyOffice
sudo dnf remove -y libreoffice\*
# Install OnlyOffice Desktop Editors
sudo dnf install -y \
https://download.onlyoffice.com/install/desktop/editors/linux/onlyoffice-desktopeditors.x86_64.rpm
# Import Microsoft GPG Key
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
# Add VSCode repository
echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\nautorefresh=1\ntype=rpm-md\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/vscode.repo > /dev/null
# Check for updates from the new repo and install VSCode
sudo dnf check-update
sudo dnf install -y code
# Optional VSCode Customization: Native Title Bar
# In VSCode "Preferences: Open User Settings (JSON)"
# Add: "window.titleBarStyle": "native"
# Restart VSCode.
# Add Negativo17 Spotify repository
sudo curl -o /etc/yum.repos.d/fedora-spotify.repo https://negativo17.org/repos/fedora-spotify.repo
# Install Spotify
sudo dnf install -y spotify
# Install Steam
sudo dnf install -y steam
# Install ProtonUp-Qt (it's a Proton Manager) from Flathub or via bash
flatpak install flathub net.davidotek.pupgui2
# Install latest GE-Proton
# Enable Steam Play Compatibility (for playing Steam Windows Games)
# Settings > Compatibility > Enable Steam Play for all other titles
# Use the installed GE-Proton as default
# Install Heroic Games Launcher (for EPIC, GOG, and Amazon Games)
sudo dnf copr enable atim/heroic-games-launcher
sudo dnf install heroic-games-launcher-bin
If you use your NTFS drive of Steam Library,
SYMLINK your compatdata
in your library!
WARNING! ACHTUNG! You don't want to end up corrupting your NTFS drive.
- Create a folder in your home directory, wherever it is, as long as it's inside
~
(your home folder):mkdir -p ~/whatever-folder-you-prefer/compatdata
- Link it to
/ntfs-mounted-library/steamapps/compatdata
. (Make sure thecompatdata
folder doesn't exist or delete it first if it's already populated.)ln -s ~/whatever-folder-you-prefer/compatdata /mnt/path-to/ntfs-mounted-library/steamapps/compatdata
compatdata
contains compatibility files and folders to run games on Linux, a bunch of "fake" Windows folders (C:\Users
, C:\Windows
, C:\Program Files
, etc.), "fake" drives (C: D: E:
, etc), which sometimes the way it works may create some restricted characters (like for example, a colon :
) that can't be used as a file/folder name on an NTFS drive.
sudo dnf copr enable kylegospo/preload -y && sudo dnf install preload -y && sudo systemctl enable --now preload
wget -qO- https://astral.sh/uv/install.sh | sh
# To update
uv self update
# Install Python
uv python install 3.12
# Or multiple downloads at once
uv python install 3.10.8 3.11 3.12
# Note: if you don't specify `y` in 3.x.y, it will find the latest version
# Reinstall Python
uv python install --reinstall
# To create an environment with a specific Python version
cd /path/to/your/project
uv venv .venv --python 3.12 --seed
# To activate the virtual environment
cd /path/to/your/project
source .venv/bin/activate
# To install packages that utilize the blazing-fast Rust-based pip package manager
# Activate the virtual environment
uv pip install some-packages
# You can still use pip (as long as `--seed` is used when creating the environment)
# Activate the virtual environment
pip install some-packages
# Important Note: The cache is located at: ~/.cache/uv
# To utilize the fast speed of uv,
# make sure the project and cache are on the same physical partition
# or in the same subvolume (if btrfs)
# To clean the uv pip cache:
uv cache clean
# To clean the pip cache, activate the virtual environment first.
source .venv/bin/activate
pip cache purge
sudo dnf autoremove -y
sudo dnf clean all
sudo dnf upgrade --refresh -y
You might want this even you don't use SSH thingy, because suspend is buggy now with Nvidia GPU anyway!
sudo mkdir -p /etc/systemd/sleep.conf.d && \
sudo tee /etc/systemd/sleep.conf.d/sus-hib-off.conf << EOF
[Sleep]
AllowSuspend=no
AllowHibernation=no
AllowSuspendThenHibernate=no
AllowHybridSleep=no
EOF
sudo systemctl daemon-reload
sudo systemctl restart systemd-logind.service
sudo reboot
# To revert it back to normal
# sudo rm /etc/systemd/sleep.conf.d/sus-hib-off.conf
# sudo systemctl daemon-reload
# sudo systemctl restart systemd-logind.service
# sudo reboot
Source:
- https://rpmfusion.org/Configuration#Command_Line_Setup_using_rpm
- https://rpmfusion.org/Howto/Multimedia
- https://paulsorensen.io/fedora-kde-plasma-post-installation-guide
- https://github.com/devangshekhawat/Fedora-42-Post-Install-Guide
- https://tuxdigital.com/videos/9-things-to-do-after-installing-fedora-42-post-setup-guide
- https://www.youtube.com/watch?v=ixa3ezZ9XNY
- https://discussion.fedoraproject.org/t/talk-gnome-suspends-after-15-minutes-of-user-inactivity-even-on-ac-power/80257/150
- https://www.reddit.com/r/linux_gaming/comments/1hk09og/comment/mv5j7nj/?context=3
- https://github.com/ValveSoftware/Proton/wiki/Using-a-NTFS-disk-with-Linux-and-Windows#preventing-ntfs-read-errors
- https://discussion.fedoraproject.org/t/screen-freeze-on-fedora-42-workstation-nvidia-flip-event-timeout/151080/7