#!/bin/bash #Automatically set up all the nice stuff in Fedora #Just a lazier way to do this: https://github.com/wz790/Fedora-Noble-Setup?tab=readme-ov-file #Check if we're running this as root if [[ $EUID > 0 ]]; then echo "We'll need root permissions for where we're going." sudo su - fi echo "adding RPM fusion repos & updating DNF" # Get the free repository (most stuff you need) dnf install -y https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm &> /dev/null # Get the nonfree repository (NVIDIA drivers, some codecs) dnf install -y https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm &> /dev/null # Installing nushell echo "[gemfury-nushell] name=Gemfury Nushell Repo baseurl=https://yum.fury.io/nushell/ enabled=1 gpgcheck=0 gpgkey=https://yum.fury.io/nushell/gpg.key" | tee /etc/yum.repos.d/fury-nushell.repo dnf install -y nushell &> /dev/null # Update everything so it all plays nice together echo "Updating everything..." dnf group upgrade core -y &> /dev/null dnf check-update &> /dev/null dnf update -y &> /dev/null ###Firmware updates # See what can be updated fwupdmgr get-devices &> /dev/null # Refresh the firmware database fwupdmgr refresh --force &> /dev/null # Check for updates fwupdmgr get-updates &> /dev/null # Apply them fwupdmgr update &> /dev/null ###Flathub echo "Fixing flathub" # Remove the limited Fedora repo flatpak remote-delete fedora &> /dev/null # Add the good stuff flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo &> /dev/null ###GFX time echo "Updating GFX drivers" # Identify the GFX chip lspci=$(lspci | grep -i 'vga\|3d\|2d') &> /dev/null # Install the appropriate drivers # AMD if [[ $lspci =~ AMD ]]; then echo "AMD GPU found, installing drivers..." dnf install -y mesa-dri-drivers mesa-vulkan-drivers vulkan-loader mesa-libGLU mesa-va-drivers-freeworld mesa-vdpau-drivers-freeworld &> /dev/null fi # Intel if [[ $lspci =~ Intel ]]; then echo "Intel GPU found, installing drivers..." dnf install -y mesa-dri-drivers mesa-vulkan-drivers vulkan-loader mesa-libGLU intel-media-driver &> /dev/null fi # Nvidia if [[ $lspci =~ Nvidia ]]; then echo "Nvidia GPU found, installing drivers..." # Install kernel headers and dev tools dnf install -y kernel-devel kernel-headers gcc make dkms acpid libglvnd-glx libglvnd-opengl libglvnd-devel pkgconfig &> /dev/null # Set open kernel module macro (one-time step for RTX 4000+) sh -c 'echo "%_with_kmod_nvidia_open 1" > /etc/rpm/macros.nvidia-kmod' &> /dev/null # Install the Nvidia driver echo "Building Nvidia driver, this step will take 5-15 minutes. Blame Nvidia, not me." dnf install -y akmod-nvidia xorg-x11-drv-nvidia-cuda &> /dev/null echo "Nvidia build complete. Check if it worked after rebooting by running nvidia-smi" dnf install -y libva-nvidia-driver &> /dev/null fi ###Video codecs echo "Installing video codecs" dnf swap -y ffmpeg-free ffmpeg --allowerasing &> /dev/null dnf install -y gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav lame\* --exclude=gstreamer1-plugins-bad-free-devel &> /dev/null dnf group install -y multimedia &> /dev/null dnf group install -y sound-and-video &> /dev/null dnf install -y ffmpeg-libs libva libva-utils openh264 gstreamer1-plugin-openh264 mozilla-openh264 &> /dev/null dnf config-manager --set-enabled fedora-cisco-openh264 &> /dev/null dnf update -y &> /dev/null ###Archive support echo "Installing archive support" dnf install -y p7zip p7zip-plugins unrar &> /dev/null ###MS fonts echo "Installing MS fonts" dnf install -y curl cabextract xorg-x11-font-utils fontconfig &> /dev/null rpm -i --nodigest --nosignature https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm &> /dev/null fc-cache -fv &> /dev/null ###AppImage support echo "Adding AppImage support" dnf install -y fuse fuse-libs &> /dev/null flatpak install -y flathub it.mijorus.gearlever &> /dev/null # AppImage autoupdate # Create the service unit tee /etc/systemd/system/flatpak-update.service > /dev/null <<'EOF' [Unit] Description=Update Flatpak apps automatically [Service] Type=oneshot ExecStart=/usr/bin/flatpak update -y --noninteractive EOF # Create the timer unit tee /etc/systemd/system/flatpak-update.timer > /dev/null <<'EOF' [Unit] Description=Run Flatpak update every 24 hours Wants=network-online.target Requires=network-online.target After=network-online.target [Timer] OnBootSec=120 OnUnitActiveSec=24h [Install] WantedBy=timers.target EOF # Reload systemd and enable the timer systemctl daemon-reload &> /dev/null systemctl enable --now flatpak-update.timer &> /dev/null ###Bit-perfect audio support sed -i 's+\#default\.clock\.rate+default.clock.rate+g' /usr/share/pipewire/pipewire.conf sed -i 's+\#default\.clock\.allowed-rates.*+default.clock.allowed-rates = [ 44100, 48000, 88200, 96000, 192000 ]+g' /usr/share/pipewire/pipewire.conf cp /etc/pipewire/pipewire.conf /etc/pipewire/pipewire.conf.bak &> /dev/null cp /usr/share/pipewire/pipewire.conf /etc/pipewire/pipewire.conf -f &> /dev/null ###All done echo "Script completed, please reboot."