Complete Fedora Installation & Development Setup Guide
A comprehensive step-by-step guide to set up a complete development environment with niri window manager on Fedora Linux.
Prerequisites: This guide assumes you have already installed Fedora. If you need installation instructions, see Fedora Installation Process.
Post-Installation System Setup
Initial System Update
# Update all packages
sudo dnf update -y
# Update Flatpak
flatpak update
Enable RPM Fusion Repositories
https://rpmfusion.org/Configuration#Installing_Free_and_Nonfree_Repositories
# Install both free and non-free repositories
sudo dnf install 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
# For Fedora 41+, enable openh264 repository
sudo dnf config-manager setopt fedora-cisco-openh264.enabled=1
Shell Setup (Fish)
# Install Fish shell
sudo dnf install -y fish
# Set Fish as default shell
chsh -s /usr/bin/fish
# Install Fisher (Fish plugin manager)
# https://github.com/jorgebucaran/fisher
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
# Here to find fish plugins
# https://github.com/jorgebucaran/awsm.fish#readme
fisher install jethrokuan/z
Essential Account Setup & Security
Bitwarden
Password manager.
Flathub Applications Installation
For detailed application installation via Flatpak from Flathub, see Flathub Applications Guide.
Brave Browser Installation & Sync
# Install Brave Browser
sudo dnf config-manager --add-repo https://brave-browser-rpm-release.s3.brave.com/brave-browser.repo
sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc
sudo dnf install -y brave-browser
# Launch Brave and sign in to sync bookmarks, passwords, and settings
# brave-browser
GitHub SSH Key Setup
# Generate SSH key for GitHub
ssh-keygen -t ed25519 -C "[email protected]"
# Start SSH agent and add key
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# Copy public key to clipboard
cat ~/.ssh/id_ed25519.pub
# Add the copied key to your GitHub account:
# 1. Go to GitHub.com → Settings → SSH and GPG keys
# 2. Click "New SSH key"
# 3. Paste the key and give it a descriptive title
# 4. Test the connection:
ssh -T [email protected]
Essential System Tools
sudo dnf install -y tldr 7z htop unar fastfetch wget curl
# others
# Development tools
sudo dnf groupinstall -y "Development Tools" "Development Libraries"
# Compression tools
sudo dnf install -y p7zip p7zip-plugins
# System monitoring
sudo dnf install -y btop wavemon
# Network tools
sudo dnf install -y telnet
# Text processing
sudo dnf install -y fd-find ripgrep
# Modern alternatives
sudo dnf install -y bat exa
Graphics Drivers
Intel Graphics Optimization
# For screen flickering issues (XPS 13 and similar)
sudo vi /etc/default/grub
# Add i915.enable_psr=0 to GRUB_CMDLINE_LINUX line:
# GRUB_CMDLINE_LINUX="rhgb quiet i915.enable_psr=0"
# Update GRUB
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Multimedia Codecs
sudo dnf install -y gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel
niri Window Manager Setup
niri Installation & Configuration
For detailed niri installation and configuration, see niri Installation Guide.
Waybar Installation & Configuration
For detailed Waybar installation and configuration, see Waybar Configuration Guide.
Alacritty Terminal Configuration
For detailed Alacritty installation and configuration, see Alacritty Configuration Guide.
Application Launcher & Wayland Tools
# Install fuzzel launcher
sudo dnf install -y fuzzel
# Install additional Wayland tools
sudo dnf install -y grim slurp wl-clipboard
Xwayland Support (X11 Applications)
For detailed Xwayland support setup, see Xwayland Configuration Guide.
NiriSwitcher (Window/Workspace Switching)
For detailed NiriSwitcher installation and configuration, see NiriSwitcher Configuration Guide.
System Control Tools & Session Management
For detailed system control tools installation and niri session management, see System Tools Configuration Guide.
Development Environment
Modern CLI Tools
# bat (better cat)
sudo dnf install -y bat
# exa (better ls)
sudo dnf install -y exa
echo 'alias ls=exa' >> ~/.config/fish/config.fish
echo 'alias ll="exa -la"' >> ~/.config/fish/config.fish
Development Tools Manager (mise)
# Install mise
curl https://mise.run | sh
echo '~/.local/share/mise/shims' >> ~/.config/fish/fish_variables
# Install common development tools
mise install node@lts
mise install python@latest
mise install go@latest
mise install rust@latest
# Set global versions
mise global node@lts python@latest go@latest rust@latest
Docker Installation
# Add Docker repository
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
# Install Docker
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Enable and start Docker
sudo systemctl enable --now docker
# Add user to docker group
sudo usermod -aG docker $USER
# Logout and login for group changes to take effect
Essential Applications
Web Browsers
# Install Brave Browser
# https://brave.com/linux/
sudo dnf install dnf-plugins-core
sudo dnf config-manager addrepo --from-repofile=https://brave-browser-rpm-release.s3.brave.com/brave-browser.repo
sudo dnf install -y brave-browser
# Install Chrome (alternative)
# download rpm from official website
VS Code Installation & Configuration
For detailed VS Code installation and configuration, see VS Code Setup Guide.
Other Development Editors
# Install Cursor (via AppImage)
mkdir -p ~/Applications
cd ~/Applications
# Download latest Cursor AppImage from cursor.sh
# Make executable and create wrapper script
Media and Productivity
# Music player
sudo dnf install -y strawberry
# E-book manager
sudo dnf install -y calibre
# Archive manager
sudo dnf install -y file-roller
# Screenshot tool
sudo dnf install -y flameshot
# Video player
flatpak install -y flathub org.videolan.VLC
# Image viewer
sudo dnf install -y eog
Font Management
# Install font manager
sudo dnf install -y font-manager
# Install additional fonts
sudo dnf install -y \
google-noto-fonts \
google-noto-cjk-fonts \
google-noto-emoji-fonts \
fira-code-fonts \
jetbrains-mono-fonts
Advanced Configuration
AppImage Integration
# Install AppImageLauncher
sudo dnf copr enable -y probono/AppImageLauncher
sudo dnf install -y appimagelauncher
# Create ~/Applications directory for AppImages
mkdir -p ~/Applications
# Add ~/Applications to PATH
echo 'set -gx PATH $PATH ~/Applications' >> ~/.config/fish/config.fish
Tailscale VPN
# Install Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
# Enable and start
sudo systemctl enable --now tailscaled
# Connect to Tailscale network
sudo tailscale up
Syncthing Setup
# Install Syncthing via Flatpak
flatpak install -y flathub com.github.zocker_160.SyncThingy
# Configure via web interface at http://127.0.0.1:8384/
System Optimizations
# Enable fractional scaling for HiDPI displays
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
# Optimize swappiness for SSD
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
# Enable fstrim timer for SSD maintenance
sudo systemctl enable --now fstrim.timer
Security Enhancements
# Install and configure firewall
sudo dnf install -y firewalld
sudo systemctl enable --now firewalld
# Enable automatic updates (optional)
sudo dnf install -y dnf-automatic
sudo systemctl enable --now dnf-automatic-install.timer
Java Development Kit
# Install Java 21 LTS
sudo dnf install -y java-21-openjdk-devel
# Set JAVA_HOME
echo 'set -gx JAVA_HOME /usr/lib/jvm/java-21-openjdk' >> ~/.config/fish/config.fish
Final Steps & Verification
System Verification
# Verify development tools
node --version
python --version
go version
cargo --version
docker --version
# Check Git configuration
git config --list
Performance Monitoring
# Monitor system performance
htop
# Check WiFi signal strength
wavemon
# Monitor disk usage
df -h
Backup Configuration
# Create backup of configurations
mkdir -p ~/backups/dotfiles
cp -r ~/.config ~/backups/dotfiles/
cp ~/.bashrc ~/.profile ~/backups/dotfiles/ 2>/dev/null || true
Troubleshooting
Common Issues
Screen Flickering (Intel Graphics)
Already covered in the Intel Graphics section above.
AppImage Not Running
# Make AppImage executable
chmod +x your-app.AppImage
# Create wrapper script in ~/.local/bin/
mkdir -p ~/.local/bin
niri Not Starting
# Check niri logs
journalctl --user -u niri
# Verify dependencies
niri validate
Font Issues in Applications
# Install additional fonts
sudo dnf install -y fontconfig
# Refresh font cache
fc-cache -fv
Next Steps
- Customize niri: Modify
~/.config/niri/config.kdl
to fit your workflow - Install Development IDEs: Based on your programming needs
- Set up Cloud Storage: Configure Dropbox, OneDrive, or Google Drive
- Gaming Setup: Install Steam, Lutris if needed
- Backup Strategy: Set up automated backups with Timeshift or rsync
This completes your Fedora installation and development environment setup with niri window manager. The system is now ready for professional development work with modern tools and a highly efficient tiling window manager.