config/linux/fedora_setup.sh
2026-01-14 12:47:07 -06:00

88 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
# Fedora New Machine Setup Script
# Run as root or with sudo where needed
# Logs everything to setup.log
set -euo pipefail # Exit on error, undefined vars, pipe failures
LOGFILE="$HOME/fedora-setup-$(date +%Y%m%d-%H%M%S).log"
exec &> >(tee -a "$LOGFILE")
echo "=== Fedora New Machine Setup Started at $(date) ==="
# Check if running as root
if [[ $EUID -ne 0 ]]; then
echo "Run this script with sudo for full functionality."
fi
echo "Creating mount points..."
sudo mkdir -p /mnt/games /mnt/media
sudo systemctl daemon-reload
echo "Installing RPM Fusion repos..."
sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
echo "Adding Signal repo..."
sudo dnf config-manager addrepo --from-repofile https://download.opensuse.org/repositories/network:im:signal/Fedora_$(rpm -E %fedora)/network:im:signal.repo
echo "Enabling Flatpak..."
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
echo "Upgrading system..."
sudo dnf upgrade -y
echo "Installing multimedia codecs..."
sudo dnf swap ffmpeg-free ffmpeg --allowerasing
sudo dnf install -y mozilla-openh264 gstreamer1-plugins-bad-freeworld ffmpeg
sudo dnf update @multimedia --setopt="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
sudo dnf install -y gstreamer1-plugins-{bad-freeworld,good,base} gstreamer1-plugin-openh264 lame* ffmpeg
sudo dnf group install -y multimedia sound-and-video --skip-unavailable
echo "Installing common apps..."
sudo dnf install -y davfs2 discord git hugo NetworkManager-openvpn openvpn
sudo dnf install -y oh-my-posh openrgb qbittorrent screenfetch signal-desktop steam thunderbird
echo "Installing Flatpaks..."
flatpak install -y flathub org.signal.Signal com.bitwarden.desktop io.missioncenter.MissionCenter io.github.martinrotter.rssguard org.kde.konversation
flatpak install -y com.spotify.Client org.kde.konversation io.github.Archeb.opentrace
echo "Installing fonts..."
sudo dnf install -y cascadia-fonts-all
sudo fc-cache -f -v
echo "Setting up VS Code repo..."
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo tee /etc/yum.repos.d/vscode.repo > /dev/null <<EOF
[code]
name=Visual Studio Code
baseurl=https://packages.microsoft.com/yumrepos/vscode
enabled=1
autorefresh=1
type=rpm-md
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
EOF
echo "Updating repos and installing VS Code..."
sudo dnf check-update
sudo dnf install -y code
echo "=== Setup completed at $(date). Check $LOGFILE for full log. ==="
echo ""
echo "⚠️ WARNING: Mount Point Configuration Required ⚠️"
echo ""
echo "TODO: Add mount points to /etc/fstab with UUIDs for /mnt/games and /mnt/media."
echo " 1. Identify UUIDs: blkid | grep -E 'TYPE=\"ntfs\"'"
echo " 2. Edit /etc/fstab (backup first: sudo cp /etc/fstab /etc/fstab.bak)"
echo " 3. Add lines like:"
echo " UUID=XXXXXX-XXXX /mnt/games ntfs defaults,nofail,uid=1000,gid=1000,exec 0 0"
echo " UUID=YYYYYY-YYYY /mnt/media ntfs defaults,nofail,uid=1000,gid=1000 0 0"
echo " 4. Test: sudo mount -a"
echo " 5. Reboot to verify."
echo ""
echo "Use KDE Partition Manager for a GUI alternative."
echo ""
echo "⚠️ ⚠️"