Skip to main content

Initial Setup

Clone the repository and set up your dotfiles on Fedora.
1

Authenticate with GitHub

gh auth login
2

Clone and set up repository

gh repo clone shawal-mbalire/dotfiles
cp -r dotfiles/.git/ .git/
git pull
rm -rf dotfiles

Core Package Installation

Install essential packages for Hyprland and development tools.
sudo dnf install lua lua-devel luarocks go lua5.1
sudo dnf install hyprland hyprland-devel hyprlock hypridle hyprpolkitagent hyprpaper
sudo dnf install fish kitty rofi blueman pavucontrol waybar gh google-chrome nm-applet flatpak
sudo dnf install exa gammastep

Switching to Hyprland

The following commands will remove GNOME desktop environment. Make sure you have a backup and understand this is a destructive operation.
1

Install Hyprland and SDDM

sudo dnf install hyprland sddm
2

Remove GNOME shell

sudo dnf remove gnome-shell --setopt protected_packages=
3

Set Fish as default shell

echo /usr/local/bin/fish | sudo tee -a /etc/shells
chsh -s /usr/bin/fish
4

Remove remaining desktop environments

This removes all GNOME, Plasma, and KDE packages from your system.
sudo dnf remove gnome-** plasma-** kde-**
sudo dnf install nautilus

Hyprland Polkit Authentication Agent

Set up the authentication agent for graphical password prompts.
1

Enable COPR repository

sudo dnf copr enable solopasha/hypr
2

Install hyprpolkitagent

sudo dnf install hyprpolkitagent
3

Enable systemd service

Do NOT use sudo with this command. User services must be managed as your regular user.
systemctl --user enable --now hyprpolkitagent.service

Understanding User vs System Services

  • User Services: The --user flag manages services for your specific user account, not the entire system
  • Why sudo Breaks Things: Running sudo systemctl --user operates as root, looking for root’s services instead of yours
  • Always run systemctl --user as your regular user without sudo

COPR Repositories

Enable additional COPR repositories for extra software.
sudo dnf copr enable alxhr0/Obsidian

Nerd Fonts via COPR

sudo dnf copr enable zawertun/hack-fonts
sudo dnf install hack-fonts

Upgrading to Rawhide

Rawhide provides a rolling release experience with the latest fixes and patches.
1

Disable RPM Fusion repositories

sudo dnf config-manager setopt rpmfusion-free.enabled=0
sudo dnf config-manager setopt rpmfusion-free-updates.enabled=0
sudo dnf config-manager setopt rpmfusion-free-updates-debuginfo.enabled=0
sudo dnf config-manager setopt rpmfusion-free-updates-source.enabled=0
sudo dnf config-manager setopt rpmfusion-free-updates-testing.enabled=0
sudo dnf config-manager setopt rpmfusion-nonfree-updates-testing.enabled=0
2

Clean package cache

sudo dnf autoremove
sudo dnf clean all
3

Download and upgrade to Rawhide

sudo dnf system-upgrade download --releasever=rawhide

Google Chrome Setup

1

Add Google Chrome repository

echo " [google-chrome]
    1 name=google-chrome
    2 baseurl=https://dl.google.com/linux/chrome/rpm/stable/x86_64
    3 enabled=1
    4 gpgcheck=1
    5 gpgkey=https://dl.google.com/linux/linux_signing_key.pub  " >> /etc/yum.repos.d/google-chrome.repo
2

Install Chrome and remove Firefox

sudo dnf install google-chrome
sudo dnf remove firefox**

VSCodium Setup

sudo rpmkeys --import https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/-/raw/master/pub.gpg
printf "[gitlab.com_paulcarroty_vscodium_repo]\nname=download.vscodium.com\nbaseurl=https://download.vscodium.com/rpms/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=https://gitlab.com/paulcarroty/vscodium-repo/-/raw/master/pub.gpg\nmetadata_expire=1h" | sudo tee -a /etc/yum.repos.d/vscodium.repo

Repository Management

List repositories

sudo dnf repo list

Disable a repository

sudo dnf config-manager setopt repository.enabled=0

Package Groups

List groups

dnf repo list

Remove a group

sudo dnf group remove libreoffice

Neovim Dependencies

Install required packages for Neovim configuration.
sudo dnf install lua lua-devel luarocks go lua5.1

Installing Luarocks

wget https://luarocks.org/releases/luarocks-3.11.1.tar.gz
tar zxpf luarocks-3.11.1.tar.gz
cd luarocks-3.11.1
./configure && make && sudo make install
sudo luarocks install luasocket
lua

Build docs developers (and LLMs) love