342 lines
10 KiB
Bash
Executable File
342 lines
10 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Function name: Install packages
|
|
# Description: Install packages from an array
|
|
# Arguments:
|
|
# $1: Package list (array)
|
|
install_packages() {
|
|
local packages=("${!1}")
|
|
for package in "${packages[@]}"; do
|
|
sudo dnf install -y "$package"
|
|
done
|
|
}
|
|
|
|
# Function name: Install package
|
|
# Description: Install a package
|
|
# Arguments:
|
|
# $1: Package name
|
|
install_package() {
|
|
sudo dnf install -y "$1"
|
|
}
|
|
|
|
# Function name: Add repositories
|
|
# Description: Add repositories from an array
|
|
# Arguments:
|
|
# $1: Repository list (array)
|
|
add_repositories() {
|
|
options=(
|
|
"rpmfusion-free" "RPM Fusion Free repository" ON
|
|
"rpmfusion-nonfree" "RPM Fusion Non-Free repository" OFF
|
|
"brave" "Brave official repository" OFF
|
|
"chrome" "Google Chrome official repository" OFF
|
|
"edge" "Microsoft Edge official repository" OFF
|
|
"librewolf" "Librewolf official repository" OFF
|
|
"mullvad" "Mullvad official repository" OFF
|
|
"heroic-games" "Heroic Games Launcher official repository" OFF
|
|
"freeoffice" "FreeOffice official repository" OFF
|
|
)
|
|
|
|
selected_repositories=$(whiptail --title "Add Repositories" --checklist \
|
|
"Choose the repositories you want to add:" 20 78 9 \
|
|
"${options[@]}" 3>&1 1>&2 2>&3)
|
|
|
|
for repository in $selected_repositories; do
|
|
case $repository in
|
|
"rpmfusion-free")
|
|
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm -y
|
|
;;
|
|
"rpmfusion-nonfree")
|
|
sudo dnf install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm -y
|
|
;;
|
|
"brave")
|
|
sudo dnf config-manager addrepo --from-repofile=https://brave-browser-rpm-release.s3.brave.com/brave-browser.repo
|
|
;;
|
|
"chrome")
|
|
sudo dnf install fedora-workstation-repositories -y
|
|
sudo dnf config-manager setopt google-chrome.enabled=1
|
|
;;
|
|
"edge")
|
|
sudo dnf config-manager addrepo --from-repofile=https://packages.microsoft.com/yumrepos/edge/config.repo
|
|
;;
|
|
"librewolf")
|
|
sudo dnf config-manager addrepo --from-repofile=https://rpm.librewolf.net/librewolf-repo.repo
|
|
;;
|
|
"mullvad")
|
|
sudo dnf config-manager addrepo --from-repofile=https://repository.mullvad.net/rpm/stable/mullvad.repo
|
|
;;
|
|
"heroic-games")
|
|
sudo dnf copr enable atim/heroic-games-launcher -y
|
|
;;
|
|
"freeoffice")
|
|
sudo dnf config-manager addrepo --from-repofile=https://shop.softmaker.com/repo/softmaker.repo
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
# Function name: Update system
|
|
# Description: Update the system
|
|
update_system() {
|
|
sudo dnf update -y
|
|
}
|
|
|
|
# Function name: Setup plymouth
|
|
# Description: Setup plymouth
|
|
setup_plymouth() {
|
|
install_package plymouth
|
|
sudo plymouth-set-default-theme -R spinner
|
|
}
|
|
|
|
# Packages group definitions
|
|
zsh_packages=(
|
|
zsh
|
|
zsh-autosuggestions
|
|
zsh-syntax-highlighting
|
|
)
|
|
games_packages=(
|
|
steam
|
|
heroic-games-launcher-bin
|
|
)
|
|
pipewire_packages=(
|
|
pipewire
|
|
pipewire-pulseaudio
|
|
pipewire-jack-audio-connection-kit
|
|
pipewire-alsa
|
|
wireplumber
|
|
)
|
|
cups_packages=(
|
|
cups
|
|
cups-filters
|
|
system-config-printer
|
|
)
|
|
networkmanager_packages=(
|
|
NetworkManager
|
|
NetworkManager-openvpn
|
|
NetworkManager-pptp
|
|
NetworkManager-vpnc
|
|
NetworkManager-strongswan
|
|
NetworkManager-l2tp
|
|
wpa_supplicant
|
|
)
|
|
bluetooth_packages=(
|
|
bluez
|
|
bluez-tools
|
|
blueman
|
|
)
|
|
virtualization_packages=(
|
|
qemu-kvm
|
|
libvirt
|
|
libvirt-client
|
|
virt-manager
|
|
virt-viewer
|
|
swtpm
|
|
)
|
|
containers_packages=(
|
|
podman
|
|
distrobox
|
|
waydroid
|
|
lxc
|
|
)
|
|
thunderbird_packages=(
|
|
thunderbird
|
|
thunderbird-l10n
|
|
)
|
|
|
|
# Function name: Setup browser
|
|
# Description: Setup browser
|
|
setup_browser() {
|
|
options=(
|
|
"Firefox" "Install Firefox" ON
|
|
"Chromium" "Install Chromium" OFF
|
|
"Brave" "Install Brave" OFF
|
|
"Google Chrome" "Install Google Chrome" OFF
|
|
"Tor Browser" "Install Tor Browser" OFF
|
|
"Mullvad Browser" "Install Mullvad Browser" OFF
|
|
"Edge Stable" "Install Edge Stable" OFF
|
|
"LibreWolf" "Install LibreWolf" OFF
|
|
"Links" "Install Links" OFF
|
|
)
|
|
|
|
selected_browsers=$(whiptail --title "Setup Browser" --checklist \
|
|
"Choose the browsers you want to install:" 20 78 9 \
|
|
"${options[@]}" 3>&1 1>&2 2>&3)
|
|
|
|
for browser in $selected_browsers; do
|
|
case $browser in
|
|
"\"Firefox\"")
|
|
install_package firefox
|
|
;;
|
|
"\"Chromium\"")
|
|
install_package chromium
|
|
;;
|
|
"\"Brave\"")
|
|
install_package brave-browser
|
|
;;
|
|
"\"Google Chrome\"")
|
|
install_package google-chrome-stable
|
|
;;
|
|
"\"Tor Browser\"")
|
|
install_package torbrowser-launcher
|
|
;;
|
|
"\"Mullvad Browser\"")
|
|
install_package mullvad-browser
|
|
;;
|
|
"\"Edge Stable\"")
|
|
install_package microsoft-edge-stable
|
|
;;
|
|
"\"LibreWolf\"")
|
|
install_package librewolf
|
|
;;
|
|
"\"Links\"")
|
|
install_package links
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
# Function name: Setup U2F
|
|
# Description: Setup U2F
|
|
setup_u2f() {
|
|
install_package pam-u2f
|
|
install_package pamu2fcfg
|
|
mkdir -p ~/.config/Yubico
|
|
pamu2fcfg > ~/.config/Yubico/u2f_keys
|
|
sudo authselect select sssd with-pam-u2f
|
|
}
|
|
|
|
# Function name: Setup OpenRGB
|
|
# Description: Setup OpenRGB
|
|
setup_openrgb() {
|
|
install_package openrgb
|
|
install_package i2c-tools
|
|
sudo gpasswd -a "$USER" plugdev
|
|
sudo systemctl enable --now openrgb
|
|
}
|
|
|
|
# Function name: Install packages group
|
|
# Description: Install packages group by asking with a selection menu which group would you like to install
|
|
install_packages_group() {
|
|
options=(
|
|
"Zsh" "Install Zsh packages" OFF
|
|
"Theme" "Install Theme packages" OFF
|
|
"Games" "Install Games packages" OFF
|
|
"Pipewire" "Install Pipewire packages" OFF
|
|
"Cups" "Install Cups packages" OFF
|
|
"NetworkManager" "Install NetworkManager packages" OFF
|
|
"Bluetooth" "Install Bluetooth packages" OFF
|
|
"Virtualization" "Install Virtualization packages" OFF
|
|
"Containers" "Install Containers packages" OFF
|
|
"U2F" "Setup U2F" OFF
|
|
"OpenRGB" "Setup OpenRGB" OFF
|
|
"Thunderbird" "Install Thunderbird" OFF
|
|
)
|
|
|
|
selected_groups=$(whiptail --title "Install Packages Group" --checklist \
|
|
"Choose the packages group you want to install:" 20 78 10 \
|
|
"${options[@]}" 3>&1 1>&2 2>&3)
|
|
|
|
for group in $selected_groups; do
|
|
case $group in
|
|
"\"Zsh\"")
|
|
install_packages zsh_packages[@]
|
|
;;
|
|
"\"Theme\"")
|
|
install_packages theme_packages[@]
|
|
;;
|
|
"\"Games\"")
|
|
install_packages games_packages[@]
|
|
;;
|
|
"\"Pipewire\"")
|
|
install_packages pipewire_packages[@]
|
|
;;
|
|
"\"Cups\"")
|
|
install_packages cups_packages[@]
|
|
;;
|
|
"\"NetworkManager\"")
|
|
install_packages networkmanager_packages[@]
|
|
;;
|
|
"\"Bluetooth\"")
|
|
install_packages bluetooth_packages[@]
|
|
;;
|
|
"\"Virtualization\"")
|
|
install_packages virtualization_packages[@]
|
|
;;
|
|
"\"Containers\"")
|
|
install_packages containers_packages[@]
|
|
;;
|
|
"\"U2F\"")
|
|
setup_u2f
|
|
;;
|
|
"\"OpenRGB\"")
|
|
setup_openrgb
|
|
;;
|
|
"\"Thunderbird\"")
|
|
install_packages thunderbird_packages[@]
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
# Function name: Setup flatpak
|
|
# Description: Setup flatpak
|
|
setup_flatpak() {
|
|
if whiptail --title "Setup Flatpak" --yesno "Would you like to setup Flatpak?" 10 60; then
|
|
install_package flatpak
|
|
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
fi
|
|
}
|
|
|
|
# function name : setup_kdeconnect
|
|
# Description: setup kdeconnect
|
|
setup_kdeconnect() {
|
|
if whiptail --title "Setup KDE Connect" --yesno "Would you like to setup KDE Connect?" 10 60; then
|
|
options=(
|
|
"kdeconnect" "Install KDE Connect" OFF
|
|
"gsconnect" "Install GSConnect" OFF
|
|
)
|
|
selected_option=$(whiptail --title "Setup KDE Connect" --radiolist "Choose the package you want to install:" 20 78 2 "${options[@]}" 3>&1 1>&2 2>&3)
|
|
case $selected_option in
|
|
"\"kdeconnect\"")
|
|
install_package kdeconnect
|
|
;;
|
|
"\"gsconnect\"")
|
|
install_package gnome-shell-extension-gsconnect
|
|
;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
# function name : setup_office_suite
|
|
# Description: setup office suite
|
|
setup_office_suite() {
|
|
options=(
|
|
"LibreOffice" "Install LibreOffice" OFF
|
|
"OnlyOffice" "Install OnlyOffice" OFF
|
|
"WPS Office" "Install WPS Office" OFF
|
|
"FreeOffice" "Install FreeOffice" OFF
|
|
)
|
|
selected_option=$(whiptail --title "Setup Office Suite" --radiolist "Choose the office suite you want to install:" 20 78 4 "${options[@]}" 3>&1 1>&2 2>&3)
|
|
case $selected_option in
|
|
"\"LibreOffice\"")
|
|
install_package libreoffice
|
|
;;
|
|
"\"OnlyOffice\"")
|
|
sudo flatpak install --system flathub org.onlyoffice.desktopeditors -y
|
|
;;
|
|
"\"WPS Office\"")
|
|
sudo flatpak install --system flathub com.wps.Office -y
|
|
;;
|
|
"\"FreeOffice\"")
|
|
install_package softmaker-freeoffice-2024
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Main script
|
|
update_system
|
|
setup_plymouth
|
|
setup_browser
|
|
install_packages_group
|
|
setup_flatpak
|
|
setup_kdeconnect
|
|
setup_office_suite |