Added multiple functions to arch-setup.sh script

- Added functions to install packages, check whiptail, add repositories, update system, and setup Pacman configuration.
- Implemented GPU setup function to handle NVIDIA, AMD, and Intel GPUs.
- Included functions to setup firewall, flatpak, fwupd, KDE Connect, and office suite.
This commit is contained in:
2025-03-21 08:37:07 +01:00
parent 9b9ec12b8e
commit 09c20a60b7

View File

@@ -31,7 +31,7 @@ add_repositories() {
selected_repos=$(whiptail --title "Add Repositories" --checklist \
"Choose the repositories you want to add:" 20 78 4 \
"${options[@]}" 3>&1 1>&2 2>&3)
"${options[@]}" 3>&1 1>&2 2>&3)
for repo in $selected_repos; do
case $repo in
@@ -53,7 +53,7 @@ add_repositories() {
sudo pacman -U --noconfirm 'https://mirror.trap.moe/chromatic/x86_64/chromatic-mirrorlist-20250315-1-any.pkg.tar.zst'
echo '[chromatic]' | sudo tee -a /etc/pacman.conf
echo 'Include = /etc/pacman.d/chromatic-mirrorlist' | sudo tee -a /etc/pacman.conf
sudo pacman -Sy --noconfirm chromatic-keyring
sudo pacman -Sy --noconfirm chromatic-keyring chromatic-mirrorlist
else
echo "Chromatic repository is already installed."
fi
@@ -98,17 +98,84 @@ setup_pacman() {
sudo sed -i 's/#ILoveCandy/ILoveCandy/' /etc/pacman.conf
sudo sed -i 's/#VerbosePkgLists/VerbosePkgLists/' /etc/pacman.conf
sudo sed -i 's/#CheckSpace/CheckSpace/' /etc/pacman.conf
sudo sed -i 's/#PrettyProgressBar/PrettyProgressBar/' /etc/pacman.conf
#sudo sed -i 's/#PrettyProgressBar/PrettyProgressBar/' /etc/pacman.conf
sudo sed -i 's/#ParallelDownloads = 5/ParallelDownloads = 10/' /etc/pacman.conf
sudo sed -i 's/#DisableDownloadTimeout/DisableDownloadTimeout/' /etc/pacman.conf
}
# Function name: GPU setup
# Description: Setup GPU depending on the available devices
gpu_setup() {
detected_gpu=$(lspci | grep -Ei "vga|3d|display")
case "$detected_gpu" in
*NVIDIA*)
options=(
"nvidia" "Official NVIDIA Drivers" ON
"nouveau" "Open Source nouveau drivers" OFF
)
selected_driver=$(whiptail --title "Select NVIDIA Drivers" --radiolist \
"Choose the NVIDIA driver you want to install:" 15 60 2 \
"${options[@]}" 3>&1 1>&2 2>&3)
if pacman -Qs nvidia > /dev/null; then
sudo pacman -R --noconfirm nvidia
elif pacman -Qs nvidia-dkms > /dev/null; then
sudo pacman -R --noconfirm nvidia-dkms
elif pacman -Qs xf86-video-nouveau > /dev/null; then
sudo pacman -R --noconfirm xf86-video-nouveau
fi
case $selected_driver in
"\"nvidia\"")
if pacman -Qs linux > /dev/null; then
sudo pacman -S --needed --noconfirm nvidia-open
fi
if pacman -Qs linux-zen > /dev/null; then
sudo pacman -S --needed --noconfirm nvidia-open
fi
if pacman -Qs linux-lts > /dev/null; then
sudo pacman -S --needed --noconfirm nvidia-open-lts
fi
if pacman -Qs linux-cachyos > /dev/null; then
sudo pacman -S --needed --noconfirm linux-cachyos-nvidia-open
fi
if ! lspci | grep -Ei "amd|intel" > /dev/null; then
sudo pacman -S --needed --noconfirm libva-nvidia-driver
fi
if (whiptail --title "Install Cuda" --yesno "Would you like to install Cuda?" 10 60) then
sudo pacman -S --needed --noconfirm cuda
fi
;;
"\"nouveau\"")
sudo pacman -S --needed --noconfirm mesa vulkan-nouveau
;;
esac
;;
*AMD*)
sudo pacman -S --needed --noconfirm mesa vulkan-radeon
;;
*Intel*)
sudo pacman -S --needed --noconfirm intel-media-driver vulkan-intel
;;
esac
}
# Function name: Setup plymouth
# Description: Setup plymouth
setup_plymouth() {
echo "quiet splash" | sudo tee -a /etc/kernel/cmdline
sudo pacman -S --needed --noconfirm plymouth plymouth-kcm
sudo plymouth-set-default-theme -R catppuccin-mocha
if whiptail --title "Setup Plymouth" --yesno "Would you like to setup Plymouth?" 10 60; then
echo "quiet splash" | sudo tee -a /etc/kernel/cmdline
sudo pacman -S --needed --noconfirm plymouth plymouth-kcm
if pacman -Qs plymouth-theme-catppuccin-mocha-git > /dev/null; then
sudo plymouth-set-default-theme -R catppuccin-mocha
else
sudo plymouth-set-default-theme -R spinner
fi
fi
}
# Packages group definitions
@@ -132,6 +199,20 @@ theme_packages=(
#refind-theme-catppuccin-git
sddm-theme-catppuccin-git
)
plasma_kde_apps=(
kate
okular
dolphin
gwenview
kcalc
spectacle
gparted
)
gnome_apps=(
gnome-console
gnome-disk-utility
gnome-firmware
)
games_packages=(
steam-native-runtime
heroic-games-launcher-bin
@@ -213,7 +294,7 @@ setup_browser() {
selected_browsers=$(whiptail --title "Setup Browser" --checklist \
"Choose the browsers you want to install:" 20 78 13 \
"${options[@]}" 3>&1 1>&2 2>&3)
"${options[@]}" 3>&1 1>&2 2>&3)
for browser in $selected_browsers; do
case $browser in
@@ -265,6 +346,7 @@ setup_browser() {
setup_u2f() {
sudo pacman -S --needed --noconfirm pam-u2f
mkdir ~/.config/Yubico
echo "Registering U2F device..."
pamu2fcfg -o "pam://$HOST" -i "pam://$HOST" > ~/.config/Yubico/u2f_keys
sudo touch /etc/pam.d/u2f-required
sudo touch /etc/pam.d/u2f-sufficient
@@ -293,6 +375,8 @@ install_packages_group() {
options=(
"Zsh" "Install Zsh packages" OFF
"Theme" "Install Theme packages" OFF
"Plasma Apps" "Install KDE Plasma Apps" OFF
"Gnome Apps" "Install Gnome Apps" OFF
"Games" "Install Games packages" OFF
"Pipewire" "Install Pipewire packages" OFF
"Cups" "Install Cups packages" OFF
@@ -306,13 +390,16 @@ install_packages_group() {
)
selected_groups=$(whiptail --title "Install Packages Group" --checklist \
"Choose the packages group you want to install:" 20 78 12 \
"${options[@]}" 3>&1 1>&2 2>&3)
"Choose the packages group you want to install:" 20 78 13 \
"${options[@]}" 3>&1 1>&2 2>&3)
for group in $selected_groups; do
case $group in
"\"Zsh\"")
install_packages zsh_packages[@]
if (whiptail --title "Change default shell to Zsh" --yesno "Would you like to change the default shell to Zsh?" 10 60) then
chsh -s /bin/zsh
fi
;;
"\"Theme\"")
install_packages theme_packages[@]
@@ -331,9 +418,11 @@ install_packages_group() {
;;
"\"Bluetooth\"")
install_packages bluetooth_packages[@]
sudo systemctl enable --now bluetooth
;;
"\"Virtualization\"")
install_packages virtualization_packages[@]
sudo systemctl enable --now libvirtd
;;
"\"Containers\"")
install_packages containers_packages[@]
@@ -351,6 +440,101 @@ install_packages_group() {
done
}
# function name : setup_firewall
# Description: setup firewall
setup_firewall() {
options=(
"ufw" "Install UFW" ON
"firewalld" "Install Firewalld" OFF
"iptables" "Install Iptables" ON
"nftables" "Install Nftables" OFF
)
selected_groups=$(whiptail --title "Setup Firewall" --checklist "Choose the firewall you want to install:" 20 78 4 "${options[@]}")
case $selected_groups in
"ufw")
sudo pacman -S --needed --noconfirm ufw ufw-extras
sudo systemctl enable --now ufw
sudo ufw enable
;;
"firewalld")
sudo pacman -S --needed --noconfirm firewalld
sudo systemctl enable --now firewalld
;;
"iptables")
sudo pacman -S --needed --noconfirm iptables
;;
"nftables")
sudo pacman -S --needed --noconfirm nftables iptables-nft
;;
esac
}
# function name : setup_flatpak
# Description: setup flatpak
setup_flatpak() {
if whiptail --title "Setup Flatpak" --yesno "Would you like to setup Flatpak?" 10 60; then
sudo pacman -S --needed --noconfirm flatpak
flatpak remote-add --if-not-exists --system flathub https://flathub.org/repo/flathub.flatpakrepo
fi
}
# function name : setup_fwupd
# Description: setup fwupd
setup_fwupd() {
if whiptail --title "Setup fwupd" --yesno "Would you like to setup fwupd?" 10 60; then
sudo pacman -S --needed fwupd fwupd-efi
sudo systemctl enable --now fwupd
sudo systemctl enable --now fwupd-refresh
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\"")
sudo pacman -S --needed --noconfirm kdeconnect
;;
"\"gsconnect\"")
sudo yay -S --needed --noconfirm gsconnect 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\"")
sudo pacman -S --needed --noconfirm libreoffice-fresh
;;
"\"OnlyOffice\"")
sudo pacman -S --needed --noconfirm onlyoffice-bin
;;
"\"WPS Office\"")
sudo pacman -S --needed --noconfirm wps-office
;;
"\"FreeOffice\"")
sudo pacman -S --needed --noconfirm freeoffice
;;
esac
}
# Main script
check_whiptail
add_repositories
@@ -358,4 +542,10 @@ update_system
setup_pacman
setup_browser
install_packages_group
setup_plymouth
setup_plymouth
gpu_setup
setup_firewall
setup_flatpak
setup_fwupd
setup_kdeconnect
setup_office_suite