This repository contains a unified, zero-dependency Bash script designed to automate post-installation configuration, system optimization, package management, and custom desktop/terminal modifications on a fresh installation of Fedora Linux.
By running this script, you can quickly bootstrap your Fedora desktop into a fully configured, high-performance development workstation.
On a fresh Fedora installation, open your terminal and run the following command to initiate the entire setup automatically:
curl -fsSL https://raw.githubusercontent.com/roguehunter7/fedora-setup/main/setup.sh | sudo bashThis single command fetches the setup script directly and executes it with root privileges to configure your system.
The steps run in the order listed below.
- DNF Speed Optimizations: Configures
max_parallel_downloads=20anddefaultyes=Truefor both DNF and DNF5 to make package updates much faster. - App Cleanup (Removal): Uninstalls the default Firefox browser (Chrome is the preferred browser).
- System-wide Package Upgrade + Firmware: Upgrades all pre-installed system packages to their latest versions (including the core package group), then refreshes LVFS metadata and installs pending device firmware updates via
fwupdmgr. - Repository Configuration:
- Enables RPM Fusion (Free & Non-Free) repositories.
- Enables the Terra Repository (maintained by Fyra Labs).
- Configures the official repositories for Visual Studio Code, Google Chrome, and the Google Cloud CLI (architecture-aware via
$basearch). - Enables the CachyOS COPR repository for sched-ext.
- Disables unused, limited third-party repositories (NVIDIA and Steam subsets) to prevent DNF metadata bloat on AMD hardware.
- Multimedia Swap & Video Acceleration:
- Swaps out Fedora's restricted
ffmpeg-freefor fullffmpegfrom RPM Fusion. - Installs the
@multimediapackage group. - Installs hardware-accelerated video decoding drivers (
mesa-va-drivers-freeworldandintel-media-driver).
- Swaps out Fedora's restricted
- Consolidated Package Installation: Installs all application, runtime, and development packages in a single DNF transaction:
- Applications: VLC, GNOME Boxes, Google Chrome, Visual Studio Code, LibreOffice.
- Runtimes & Build Tools: Python 3 (with pip and dev headers), Node.js, and the Fedora Development Tools group.
- Container tools: Distrobox.
- System tools: flatpak, cabextract, mkfontscale, fontconfig, plus archive support (
unrar,7zip,7zip-standalone).
- General Linux & Storage Optimizations:
- Memory Tuning: Configures
vm.swappiness = 10,vm.vfs_cache_pressure = 50,kernel.nmi_watchdog = 0(disables NMI watchdog), andvm.dirty_writeback_centisecs = 1500via a custom sysctl drop-in file (/etc/sysctl.d/99-swappiness.conf). - Btrfs Performance Tuning: Safely updates
/etc/fstabto append thenoatimeoption to Btrfs subvolumes, reducing write amplification on SSDs/NVMes, then remounts the root filesystem. - Bluetooth Battery Reporting: Enables BlueZ experimental features to show battery levels for connected Bluetooth devices in the GNOME Quick Settings.
- SSD TRIM & Lifespan: Activates the weekly
fstrim.timer. - Boot Speed: Disables
NetworkManager-wait-online.service(saves seconds on boot), caps the systemd journal at 500MB, reduces the GRUB timeout to 2 seconds, and masks unneeded services (ModemManager,cups,abrtd) when present.
- Memory Tuning: Configures
- GNOME Customization & Desktop Tweaks:
- Installs GNOME Tweaks and the graphical GNOME Extensions App.
- Installs and enables the Dash to Dock and AppIndicator extensions.
- Configures window controls to enable Minimize and Maximize buttons.
- Sets the global system color scheme preference to Dark Mode.
- Applies desktop polish via gsettings: battery percentage, night light, tap-to-click, and pinned favorite apps (Files, Chrome, VS Code).
- Disables GNOME Software autostart and its search provider to save memory.
- Performance Scheduler (sched-ext): Installs SCX from the CachyOS COPR and configures the system to use the
scx_bpflandscheduler (pure-BPF, battery-friendly — ideal for laptops) for desktop responsiveness. - Flatpak Integration: Registers Flathub, removes the Fedora Flatpak remote, and updates installed Flatpaks.
- LibreOffice Microsoft Compatibility: Configures LibreOffice to default to saving in Microsoft Office XML formats (DOCX, XLSX, PPTX) via a global registry override.
- Font Polish (Nerd Fonts & Microsoft Fonts):
- Downloads and extracts the Fira Code Nerd Font into the user's local fonts directory.
- Installs the Microsoft TrueType Core Fonts installer, plus metric-compatible Carlito and Caladea fonts.
- Rebuilds the system font cache.
- Dev Toolchains & Language Servers:
- TypeScript and the TypeScript language server via npm.
- Reasonix (terminal coding agent) via npm.
- Usability & Shell Customization (Zsh):
- Installs Zsh and the official plugins zsh-syntax-highlighting and zsh-autosuggestions.
- Sets the default shell to Zsh.
- Configures
~/.zshrcto initialize the Starship prompt and put local binaries (~/.local/bin) onPATH. - Enables Sudo Password Feedback (shows asterisks as you type passwords).
- DNS: Enables
systemd-resolvedwith Cloudflare 1.1.1.1 / 1.0.0.1, falling back to Google 8.8.8.8, with DNS over TLS — run last so the network restart cannot interrupt earlier steps.
If you prefer to download and run the script manually:
git clone https://github.com/roguehunter7/fedora-setup.git
cd fedora-setupchmod +x setup.shsudo ./setup.sh