94 lines
2.5 KiB
Bash
Executable File
94 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
|
||
# ------------------------------------------------------------
|
||
# Fedora package bootstrap script
|
||
# Author: Jake Pullen
|
||
# Date : 2025-08-15
|
||
#
|
||
# Usage:
|
||
# chmod +x fedora-setup.sh
|
||
# sudo ./fedora-setup.sh
|
||
# ------------------------------------------------------------
|
||
|
||
set -euo pipefail # safer shell behaviour
|
||
shopt -s expand_aliases # if you use aliases inside the script
|
||
|
||
# 1. Update system first
|
||
echo "==> Updating Fedora base packages..."
|
||
sudo dnf upgrade --refresh -y
|
||
|
||
# 2. Install RPM‑Fusion repos (free & non‑free)
|
||
echo "==> Enabling RPM‑Fusion 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 \
|
||
-y
|
||
|
||
# list all packages we want from dnf
|
||
package_list=(
|
||
"alacritty"
|
||
"fastfetch"
|
||
"zsh"
|
||
"btop"
|
||
"steam"
|
||
)
|
||
|
||
# Create a string of packages
|
||
package_string=$(IFS=' ' ; echo "${package_list[@]}")
|
||
|
||
# 3. Install packages listed
|
||
echo "==> Installing dnf Packages..."
|
||
sudo dnf install $package_string -y --skip-unavailable
|
||
|
||
# 5. Install Flatpak (if not present) and set up Flathub
|
||
if ! command -v flatpak &>/dev/null; then
|
||
echo "==> Installing Flatpak..."
|
||
sudo dnf install flatpak -y
|
||
fi
|
||
|
||
echo "==> Adding Flathub repository..."
|
||
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||
|
||
# 6. Install Discord via Flatpak
|
||
echo "==> Installing Discord..."
|
||
flatpak install -y flathub com.discordapp.Discord
|
||
flatpak install -y flathub com.spotify.Client
|
||
|
||
# 7. Install stuff from around the web that we want
|
||
# UV for Python Dev
|
||
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||
|
||
# Rust, because we all love rust
|
||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||
|
||
# Zed, we like a Neovim Backup
|
||
curl -f https://zed.dev/install.sh | sh
|
||
|
||
# Bazecore for the Dygma Keyboard
|
||
./bazecore_grab.sh
|
||
|
||
# sim link config
|
||
folders_to_link=(
|
||
"alacritty"
|
||
"git"
|
||
"zsh"
|
||
)
|
||
for folder in "${folders_to_link[@]}"; do
|
||
config_path="$HOME/dotfiles/$folder"
|
||
target_path="$HOME/.config/$folder"
|
||
ln -s "$config_path" "$target_path"
|
||
done
|
||
|
||
ln -s $HOME/dotfiles/git/gitconfig $HOME/.gitconfig
|
||
|
||
|
||
# 9. Clean up (optional)
|
||
echo "==> Cleaning up package cache..."
|
||
sudo dnf clean all
|
||
|
||
echo "===================================================="
|
||
echo "All done! Your Fedora system is now ready to go."
|
||
echo "You can run 'flatpak list' to see Flatpak apps or 'dnf list installed' for rpm packages."
|
||
echo "Happy hacking!"
|
||
|