Files
dotfiles/set_up_dev/fedora.sh
T
2026-01-30 11:47:45 +00:00

149 lines
4.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# ------------------------------------------------------------
# Fedora System Set Up Script
# ------------------------------------------------------------
# ============================================================
# PACKAGE LISTING
# ============================================================
# List all packages we want from dnf
package_list=(
"kitty"
"fastfetch"
"zsh"
"btop"
"steam"
"code"
"just"
"neovim"
"fira-code-fonts"
)
# List all the flatpaks we want to install
flatpacks_to_install=(
"com.discordapp.Discord"
"com.spotify.Client"
"app.zen_browser.zen"
"md.obsidian.Obsidian"
)
# List all the folders we want to link from our dotfiles folder to our .config folder
folders_to_link=(
# "alacritty"
"git"
"zsh"
"kitty"
"starship.toml"
)
# ============================================================
# SCRIPT SETUP
# ============================================================
set -euo pipefail # safer shell behaviour
shopt -s expand_aliases # if you use aliases inside the script
# ============================================================
# SYSTEM UPDATE
# ============================================================
echo "==> Updating Fedora base packages..."
sudo dnf upgrade --refresh -y
# ============================================================
# REPOSITORY SETUP
# ============================================================
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
# Prep for vs-code install
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\nautorefresh=1\ntype=rpm-md\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/vscode.repo > /dev/null
# ============================================================
# PACKAGE INSTALLATION
# ============================================================
# Create a string of packages
package_string=$(IFS=' ' ; echo "${package_list[@]}")
# Install packages listed
echo "==> Installing dnf Packages..."
sudo dnf install $package_string -y --skip-unavailable
# ============================================================
# FLATPAK SETUP
# ============================================================
# 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..."
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpack_string=$(IFS=' ' ; echo "${flatpacks_to_install[@]}")
echo "==> Installing flatpaks..."
flatpak install -y flathub $flatpack_string
# ============================================================
# WEB INSTALLATION
# ============================================================
# 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
# Bazecore for the Dygma Keyboard
./bazecore_grab.sh
# Starship because command line glory
curl -sS https://starship.rs/install.sh | sh
## Tailscale for that private network.
curl -fsSL https://tailscale.com/install.sh | sh
# ============================================================
# SYMBOLIC LINKING
# ============================================================
for folder in "${folders_to_link[@]}"; do
config_path="$HOME/dotfiles/$folder"
target_path="$HOME/.config/$folder"
ln -s "$config_path" "$target_path"
done
# Sym link other bits.
ln -s $HOME/dotfiles/git/gitconfig $HOME/.gitconfig
ln -s $HOME/dotfiles/.justfile $HOME/.justfile
# slightly tested zshrc sym link
sudo rm -f /etc/zshrc
sudo ln -s $HOME/dotfiles/zsh/.zshrc /etc/zshrc
# ============================================================
# NVIM SETUP
# ============================================================
# Untested nvim kickstart clone
git clone https://github.com/Jake-Pullen/kickstart.nvim.git $HOME/.config/nvim
# ============================================================
# SHELL SETUP
# ============================================================
chsh -s /bin/zsh
# ============================================================
# CLEANUP
# ============================================================
echo "==> Cleaning up package cache..."
sudo dnf clean all
echo "===================================================="
echo "All done! Give the system a reboot!"