#!/usr/bin/env bash # --- Helper functions --- log() { echo -e "\033[1;34m[INFO]\033[0m $*"; } exists() { command -v "$1" >/dev/null 2>&1; } # --- Defined Paths --- PANAMA_PATH="$HOME/.local/share/Panama" echo -e "\n--- Installing Repositories ---" log "Installing RPM Fusion Free and Nonfree Repositories" sudo dnf install -y 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 > /dev/null 2>&1 log "Enabling Fedora Cisco OpenH264 Repository" sudo dnf config-manager setopt fedora-cisco-openh264.enabled=1 log "Installing RPM Fusion AppStream Metadata" sudo dnf update @core -y > /dev/null 2>&1 sudo dnf install -y rpmfusion-\*-appstream-data > /dev/null 2>&1 log "Installing Terra Repository" sudo dnf install -y --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release > /dev/null 2>&1 echo -e "\n--- Installing relevant packages ---" log "Updating all packages. This may take a while" sudo dnf update -y --refresh > /dev/null 2>&1 # --- Install all initial packages --- PACKAGES_FILE="$PANAMA_PATH/setup/packages/initial-packages" if [[ -f "$PACKAGES_FILE" ]]; then INITIAL_PACKAGES=$(tr "\n" " " <"$PACKAGES_FILE") log "Installing Initial Packages" echo -e "Includes the following packages:" echo -e "$(<"$PACKAGES_FILE")" sudo dnf install -y "$INITIAL_PACKAGES" > /dev/null 2>&1 log "Initial packages installed!" else log "Package list was not in specified path: $PACKAGES_FILE" fi # --- Install oh-my-posh if not already installed. --- LOCAL_BIN_PATH="$HOME/.local/bin" mkdir -p "$LOCAL_BIN_PATH" if [[ -x "$LOCAL_BIN_PATH/oh-my-posh" ]]; then log "oh-my-posh already installed at \"$LOCAL_BIN_PATH/oh-my-posh\"" else log "Installing oh-my-posh via curl..." curl -s https://ohmyposh.dev/install.sh | bash -s -- -d "$LOCAL_BIN_PATH" > /dev/null 2>&1 fi # --- Install Development Packages needed for Neovim --- DEV_FILE="$PANAMA_PATH/setup/packages/development-packages" if [[ -f "$DEV_FILE" ]]; then DEV_PACKAGES=$(tr "\n" " " <"$DEV_FILE") log "Installing Development Packages. Mostly for Neovim." echo -e "Includes the following packages:" echo -e "$(<"$DEV_FILE")" sudo dnf install -y $DEV_PACKAGES > /dev/null 2>&1 log "Development packages installed!" else log "Package list was not in specified path: $DEV_FILE" fi # --- Install Bun --- if [[ -x "$HOME/.bun/bin/bun" ]]; then log "Bun already installed at \"$HOME/.bun/bin/bun\"" else log "Installing Bun via curl..." curl -fsSL https://bun.sh/install | bash > /dev/null 2>&1 fi