Skip to Content
FedoraComplete Fedora Installation & Development Setup Guide

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

  1. Customize niri: Modify ~/.config/niri/config.kdl to fit your workflow
  2. Install Development IDEs: Based on your programming needs
  3. Set up Cloud Storage: Configure Dropbox, OneDrive, or Google Drive
  4. Gaming Setup: Install Steam, Lutris if needed
  5. 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.

Last updated on