Removing old script and updating arch-setup
This commit is contained in:
770
arch-setup.sh
770
arch-setup.sh
@@ -27,6 +27,12 @@ install_dependencies() {
|
||||
sudo pacman -S --needed --noconfirm --asdeps "$1"
|
||||
}
|
||||
|
||||
# Function name: Update system
|
||||
# Description: Update the system
|
||||
update_system() {
|
||||
sudo pacman -Syu --noconfirm
|
||||
}
|
||||
|
||||
# Function name: Check whiptail
|
||||
# Description: Check if whiptail is installed else install it
|
||||
check_whiptail() {
|
||||
@@ -35,6 +41,9 @@ check_whiptail() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Function name: Setup disk partitioning
|
||||
# Description: Setup disk partitioning
|
||||
|
||||
# Function name: Setup repositories
|
||||
# Description: Ask the user if they want to add specific repositories
|
||||
setup_repositories() {
|
||||
@@ -99,12 +108,7 @@ setup_repositories() {
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# Function name: Update system
|
||||
# Description: Update the system
|
||||
update_system() {
|
||||
sudo pacman -Syu --noconfirm
|
||||
update_system
|
||||
}
|
||||
|
||||
# Function name: Setup Pacman configuration
|
||||
@@ -119,6 +123,52 @@ setup_pacman() {
|
||||
sudo sed -i 's/#DisableDownloadTimeout/DisableDownloadTimeout/' /etc/pacman.conf
|
||||
}
|
||||
|
||||
# Function name: Setup shell
|
||||
# Description: Install selected shell and recommendations
|
||||
setup_shell() {
|
||||
options=(
|
||||
"Zsh" "Install Zsh and recommended packages" ON
|
||||
"Fish" "Install Fish shell and recommended packages" OFF
|
||||
"Bash" "Install Bash and recommended packages" OFF
|
||||
)
|
||||
|
||||
selected_shell=$(whiptail --title "Setup Shell" --radiolist \
|
||||
"Choose the shell you want to install:" 15 60 3 \
|
||||
"${options[@]}" 3>&1 1>&2 2>&3)
|
||||
|
||||
case $selected_shell in
|
||||
"\"Zsh\"")
|
||||
install_package zsh zsh-autosuggestions zsh-completions zsh-history-substring-search zsh-syntax-highlighting grml-zsh-config oh-my-zsh-git
|
||||
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
|
||||
;;
|
||||
"\"Fish\"")
|
||||
install_package fish
|
||||
if (whiptail --title "Change default shell to Fish" --yesno "Would you like to change the default shell to Fish?" 10 60); then
|
||||
chsh -s /usr/bin/fish
|
||||
fi
|
||||
;;
|
||||
"\"Bash\"")
|
||||
install_package bash
|
||||
install_dependencies bash-completion
|
||||
if pacman -Qs bash-completion > /dev/null; then
|
||||
echo "source /usr/share/bash-completion/bash_completion" >> ~/.bashrc
|
||||
fi
|
||||
if (whiptail --title "Change default shell to Bash" --yesno "Would you like to change the default shell to Bash?" 10 60); then
|
||||
chsh -s /bin/bash
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function name: Setup audio server
|
||||
# Description: Install pipewire and its dependencies
|
||||
setup_audio_server() {
|
||||
if whiptail --title "Setup Audio Server" --yesno "Would you like to setup Pipewire?" 10 60; then
|
||||
install_dependencies pipewire pipewire-pulse pipewire-alsa pipewire-jack wireplumber
|
||||
fi
|
||||
}
|
||||
|
||||
# Function name: Setup GPU
|
||||
# Description: Setup GPU depending on the available devices
|
||||
@@ -146,42 +196,47 @@ setup_gpu() {
|
||||
case $selected_driver in
|
||||
"\"nvidia\"")
|
||||
if pacman -Qs linux > /dev/null; then
|
||||
sudo pacman -S --needed --noconfirm nvidia-open
|
||||
install_package nvidia-open
|
||||
install_dependencies libvdpau
|
||||
fi
|
||||
if pacman -Qs linux-lts > /dev/null; then
|
||||
sudo pacman -S --needed --noconfirm nvidia-open-lts
|
||||
install_package nvidia-open-lts
|
||||
install_dependencies libvdpau
|
||||
fi
|
||||
if pacman -Qs linux-cachyos > /dev/null; then
|
||||
sudo pacman -S --needed --noconfirm linux-cachyos-nvidia-open
|
||||
install_package linux-cachyos-nvidia-open
|
||||
install_dependencies libvdpau
|
||||
fi
|
||||
if pacman -Qs linux-zen > /dev/null || pacman -Qs linux-hardened > /dev/null; then
|
||||
sudo pacman -S --needed --noconfirm nvidia-open-dkms
|
||||
install_package nvidia-open-dkms
|
||||
install_dependencies libvdpau
|
||||
fi
|
||||
|
||||
if ! lspci | grep -Ei "amd|intel" > /dev/null; then
|
||||
sudo pacman -S --needed --noconfirm libva-nvidia-driver
|
||||
install_dependencies 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
|
||||
install_dependencies cuda
|
||||
fi
|
||||
;;
|
||||
"\"nouveau\"")
|
||||
sudo pacman -S --needed --noconfirm mesa vulkan-nouveau
|
||||
install_dependencies mesa
|
||||
install_package vulkan-nouveau
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*AMD*)
|
||||
sudo pacman -S --needed --noconfirm mesa vulkan-radeon
|
||||
install_dependencies mesa
|
||||
install_package vulkan-radeon
|
||||
;;
|
||||
*Intel*)
|
||||
sudo pacman -S --needed --noconfirm intel-media-driver vulkan-intel
|
||||
install_dependencies intel-media-driver vulkan-intel
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Function name: Setup plymouth
|
||||
# Description: Install and setup Plymouth for boot splash
|
||||
setup_plymouth() {
|
||||
@@ -196,103 +251,159 @@ setup_plymouth() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Packages group definitions
|
||||
# Package groups
|
||||
zsh_packages=(
|
||||
grml-zsh-config
|
||||
oh-my-zsh-git
|
||||
zsh
|
||||
zsh-autosuggestions
|
||||
zsh-completions
|
||||
zsh-history-substring-search
|
||||
zsh-lovers
|
||||
zsh-syntax-highlighting
|
||||
)
|
||||
theme_packages=(
|
||||
btop-theme-catppuccin
|
||||
catppuccin-cursors-mocha
|
||||
catppuccin-gtk-theme-mocha
|
||||
papirus-folders-catppuccin-git
|
||||
plymouth-theme-catppuccin-mocha-git
|
||||
#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
|
||||
an-anime-game-launcher-bin
|
||||
honkers-launcher-bin
|
||||
sleepy-launcher-bin
|
||||
the-honkers-railway-launcher-bin
|
||||
umu-launcher
|
||||
goverlay
|
||||
gamemode
|
||||
gamescope
|
||||
mangohud
|
||||
)
|
||||
pipewire_packages=(
|
||||
pipewire
|
||||
pipewire-pulse
|
||||
pipewire-jack
|
||||
pipewire-alsa
|
||||
wireplumber
|
||||
)
|
||||
cups_packages=(
|
||||
cups
|
||||
cups-pdf
|
||||
cups-filters
|
||||
system-config-printer
|
||||
)
|
||||
networkmanager_packages=(
|
||||
networkmanager
|
||||
networkmanager-openvpn
|
||||
networkmanager-pptp
|
||||
networkmanager-vpnc
|
||||
networkmanager-strongswan
|
||||
networkmanager-l2tp
|
||||
wpa_supplicant
|
||||
)
|
||||
bluetooth_packages=(
|
||||
bluez
|
||||
bluez-utils
|
||||
bluez-hid2hci
|
||||
bluedevil
|
||||
)
|
||||
virtualization_packages=(
|
||||
qemu-full
|
||||
virt-manager
|
||||
virt-viewer
|
||||
swtpm
|
||||
)
|
||||
containers_packages=(
|
||||
podman
|
||||
distrobox
|
||||
waydroid
|
||||
lxc
|
||||
)
|
||||
thunderbird_packages=(
|
||||
thunderbird
|
||||
thunderbird-dark-reader
|
||||
thunderbird-ublock-origin
|
||||
)
|
||||
developer_packages=(
|
||||
git
|
||||
visual-studio-code-bin
|
||||
)
|
||||
# Function name: Setup network
|
||||
# Description: Install and setup NetworkManager and its dependencies
|
||||
setup_network() {
|
||||
if whiptail --title "Setup Network" --yesno "Would you like to setup NetworkManager?" 10 60; then
|
||||
install_dependencies networkmanager wpa_supplicant
|
||||
install_package networkmanager-openvpn networkmanager-strongswan
|
||||
sudo systemctl enable --now NetworkManager
|
||||
fi
|
||||
}
|
||||
|
||||
# Function name: Setup bluetooth
|
||||
# Description: Install and setup Bluetooth and its dependencies
|
||||
setup_bluetooth() {
|
||||
if whiptail --title "Setup Bluetooth" --yesno "Would you like to setup Bluetooth?" 10 60; then
|
||||
install_dependencies bluedevil bluez bluez-utils
|
||||
sudo systemctl enable --now bluetooth
|
||||
fi
|
||||
}
|
||||
|
||||
# function name : setup u2f
|
||||
# Description: setup pam-u2f for login using Yubikey
|
||||
setup_u2f() {
|
||||
install_package 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
|
||||
echo "auth required pam_u2f.so cue origin=pam://$HOST appid=pam://$HOST" | sudo tee -a /etc/pam.d/u2f-required
|
||||
echo "auth sufficient pam_u2f.so cue origin=pam://$HOST appid=pam://$HOST" | sudo tee -a /etc/pam.d/u2f-sufficient
|
||||
|
||||
sudo sed -i '/^password\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/su
|
||||
sudo sed -i '/^auth\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/sudo
|
||||
sudo sed -i '/^auth\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/passwd
|
||||
sudo sed -i '/^auth\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/system-login
|
||||
if [ ! -f /etc/pam.d/polkit-1 ]; then
|
||||
sudo cp /usr/lib/pam.d/polkit-1 /etc/pam.d/polkit-1
|
||||
fi
|
||||
sudo sed -i '/^auth\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/polkit-1
|
||||
}
|
||||
|
||||
# function name : setup fprint
|
||||
# Description: setup fprint for login using fingerprint reader
|
||||
setup_fprint() {
|
||||
install_package fprintd
|
||||
install_dependencies imagemagick
|
||||
sudo systemctl enable --now fprintd
|
||||
sudo sed -i '/^auth\s*include\s*system-login/i auth [success=1 default=ignore] pam_succeed_if.so service in sudo:su:su-l tty in :unknown' /etc/pam.d/system-local-login
|
||||
sudo sed -i '/^auth\s*include\s*system-login/i auth sufficient pam_fprintd.so' /etc/pam.d/system-local-login
|
||||
if [ ! -f /etc/pam.d/polkit-1 ]; then
|
||||
sudo cp /usr/lib/pam.d/polkit-1 /etc/pam.d/polkit-1
|
||||
fi
|
||||
sudo sed -i '/^auth\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/polkit-1
|
||||
fprintd-enroll
|
||||
}
|
||||
|
||||
# function name : setup SmartCard [WIP]
|
||||
# Description: setup pcscd for login using smartcard reader
|
||||
setup_smartcard() {
|
||||
install_package opensc
|
||||
sudo systemctl enable --now pcscd
|
||||
sudo systemctl enable --now pcscd.socket
|
||||
}
|
||||
|
||||
# function name : setup firewall
|
||||
# Description: Install and setup user selected 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")
|
||||
install_package ufw
|
||||
install_dependencies ufw-extras
|
||||
sudo systemctl enable --now ufw
|
||||
sudo ufw enable
|
||||
;;
|
||||
"firewalld")
|
||||
install_package firewalld
|
||||
sudo systemctl enable --now firewalld
|
||||
;;
|
||||
"iptables")
|
||||
install_package iptables
|
||||
;;
|
||||
"nftables")
|
||||
install_package nftables
|
||||
install_package iptables-nft
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# function name : Setup NTP
|
||||
# Description: Install selected NTP client
|
||||
setup_ntp() {
|
||||
options=(
|
||||
"ntpd-rs" "Install ntpd-rs" ON
|
||||
"chrony" "Install chrony (Current standard)" OFF
|
||||
"openntpd" "Install OpenNTPD" OFF
|
||||
"ntp" "Install ntpd (Not recommended)" OFF
|
||||
)
|
||||
selected_ntp=$(whiptail --title "Setup NTP" --radiolist "Choose the NTP client you want to install:" 20 78 4 "${options[@]}" 3>&1 1>&2 2>&3)
|
||||
case $selected_ntp in
|
||||
"\"ntpd-rs\"")
|
||||
install_package ntpd-rs
|
||||
sudo systemctl enable --now ntpd-rs
|
||||
;;
|
||||
"\"chrony\"")
|
||||
install_package chrony
|
||||
sudo systemctl enable --now chronyd
|
||||
;;
|
||||
"\"openntpd\"")
|
||||
install_package openntpd
|
||||
sudo systemctl enable --now openntpd
|
||||
;;
|
||||
"\"ntp\"")
|
||||
install_package ntp
|
||||
sudo systemctl enable --now ntpd
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# function name : setup flatpak
|
||||
# Description: Install and setup Flatpak and Flathub
|
||||
setup_flatpak() {
|
||||
if whiptail --title "Setup Flatpak" --yesno "Would you like to setup Flatpak?" 10 60; then
|
||||
install_package 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
|
||||
install_package fwupd
|
||||
install_dependencies fwupd-efi
|
||||
sudo systemctl enable --now fwupd
|
||||
sudo systemctl enable --now fwupd-refresh
|
||||
fi
|
||||
}
|
||||
|
||||
# function name : setup OpenRGB
|
||||
# Description: Install OpenRGB for RGB devices control
|
||||
setup_openrgb() {
|
||||
install_package openrgb
|
||||
sudo gpasswd -a "$USER" plugdev
|
||||
sudo systemctl enable --now openrgb
|
||||
}
|
||||
|
||||
# function name : setup browser
|
||||
# Description: Ask the user which browsers they want to install
|
||||
@@ -362,215 +473,6 @@ setup_browser() {
|
||||
done
|
||||
}
|
||||
|
||||
# function name : setup u2f
|
||||
# Description: setup pam-u2f for login using Yubikey
|
||||
setup_u2f() {
|
||||
install_package 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
|
||||
echo "auth required pam_u2f.so cue origin=pam://$HOST appid=pam://$HOST" | sudo tee -a /etc/pam.d/u2f-required
|
||||
echo "auth sufficient pam_u2f.so cue origin=pam://$HOST appid=pam://$HOST" | sudo tee -a /etc/pam.d/u2f-sufficient
|
||||
|
||||
sudo sed -i '/^password\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/su
|
||||
sudo sed -i '/^auth\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/sudo
|
||||
sudo sed -i '/^auth\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/passwd
|
||||
sudo sed -i '/^auth\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/system-login
|
||||
if [ ! -f /etc/pam.d/polkit-1 ]; then
|
||||
sudo cp /usr/lib/pam.d/polkit-1 /etc/pam.d/polkit-1
|
||||
fi
|
||||
sudo sed -i '/^auth\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/polkit-1
|
||||
}
|
||||
|
||||
# function name : setup fprint
|
||||
# Description: setup fprint for login using fingerprint reader
|
||||
setup_fprint() {
|
||||
install_package fprintd
|
||||
install_dependencies imagemagick
|
||||
sudo systemctl enable --now fprintd
|
||||
sudo sed -i '/^auth\s*include\s*system-login/i auth [success=1 default=ignore] pam_succeed_if.so service in sudo:su:su-l tty in :unknown' /etc/pam.d/system-local-login
|
||||
sudo sed -i '/^auth\s*include\s*system-login/i auth sufficient pam_fprintd.so' /etc/pam.d/system-local-login
|
||||
if [ ! -f /etc/pam.d/polkit-1 ]; then
|
||||
sudo cp /usr/lib/pam.d/polkit-1 /etc/pam.d/polkit-1
|
||||
fi
|
||||
sudo sed -i '/^auth\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/polkit-1
|
||||
fprintd-enroll
|
||||
}
|
||||
|
||||
# function name : setup SmartCard [WIP]
|
||||
# Description: setup pcscd for login using smartcard reader
|
||||
setup_smartcard() {
|
||||
install_package pcscd
|
||||
install_dependencies pcsc-tools
|
||||
sudo systemctl enable --now pcscd
|
||||
sudo systemctl enable --now pcscd.socket
|
||||
}
|
||||
|
||||
# function name : setup OpenRGB
|
||||
# Description: Install OpenRGB for RGB devices control
|
||||
setup_openrgb() {
|
||||
install_package openrgb
|
||||
sudo gpasswd -a "$USER" plugdev
|
||||
sudo systemctl enable --now openrgb
|
||||
}
|
||||
|
||||
# function name : Install packages group
|
||||
# Description: Install packages group by asking user with a selection menu which group would they like to install
|
||||
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
|
||||
"NetworkManager" "Install NetworkManager packages" OFF
|
||||
"Bluetooth" "Install Bluetooth packages" OFF
|
||||
"Virtualization" "Install Virtualization packages" OFF
|
||||
"Containers" "Install Containers packages" OFF
|
||||
"U2F" "Setup U2F" OFF
|
||||
"Fprint" "Setup Fprint" OFF
|
||||
"OpenRGB" "Setup OpenRGB" OFF
|
||||
"Thunderbird" "Install Thunderbird" OFF
|
||||
"Developer" "Install Developer packages" OFF
|
||||
)
|
||||
|
||||
selected_groups=$(whiptail --title "Install Packages Group" --checklist \
|
||||
"Choose the packages group you want to install:" 20 78 15 \
|
||||
"${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[@]
|
||||
;;
|
||||
"\"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[@]
|
||||
sudo systemctl enable --now bluetooth
|
||||
;;
|
||||
"\"Virtualization\"")
|
||||
install_packages virtualization_packages[@]
|
||||
sudo systemctl enable --now libvirtd
|
||||
;;
|
||||
"\"Containers\"")
|
||||
install_packages containers_packages[@]
|
||||
# if nvidia gpu is detected
|
||||
if lspci | grep -Ei "nvidia" > /dev/null; then
|
||||
install_package nvidia-container-toolkit
|
||||
fi
|
||||
;;
|
||||
"\"U2F\"")
|
||||
setup_u2f
|
||||
;;
|
||||
"\"Fprint\"")
|
||||
setup_fprint
|
||||
;;
|
||||
"\"OpenRGB\"")
|
||||
setup_openrgb
|
||||
;;
|
||||
"\"Thunderbird\"")
|
||||
install_packages thunderbird_packages[@]
|
||||
;;
|
||||
"\"Developer\"")
|
||||
install_packages developer_packages[@]
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# function name : setup_firewall
|
||||
# Description: Install and setup user selected 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")
|
||||
install_package ufw
|
||||
install_dependencies ufw-extras
|
||||
sudo systemctl enable --now ufw
|
||||
sudo ufw enable
|
||||
;;
|
||||
"firewalld")
|
||||
install_package firewalld
|
||||
sudo systemctl enable --now firewalld
|
||||
;;
|
||||
"iptables")
|
||||
install_package iptables
|
||||
;;
|
||||
"nftables")
|
||||
install_package nftables
|
||||
install_package iptables-nft
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# function name : setup_flatpak
|
||||
# Description: Install and setup Flatpak and Flathub
|
||||
setup_flatpak() {
|
||||
if whiptail --title "Setup Flatpak" --yesno "Would you like to setup Flatpak?" 10 60; then
|
||||
install_package 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
|
||||
install_package fwupd
|
||||
install_dependencies 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\"")
|
||||
install_package kdeconnect
|
||||
;;
|
||||
"\"gsconnect\"")
|
||||
install_package gnome-shell-extension-gsconnect
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
# function name : setup_office_suite
|
||||
# Description: setup office suite
|
||||
setup_office_suite() {
|
||||
@@ -597,17 +499,229 @@ setup_office_suite() {
|
||||
esac
|
||||
}
|
||||
|
||||
# Function name: Setup mail client
|
||||
# Description: Install choosen mail client
|
||||
setup_mail_client() {
|
||||
options=(
|
||||
"Thunderbird" "Install Thunderbird" ON
|
||||
"Evolution" "Install Evolution" OFF
|
||||
"Geary" "Install Geary" OFF
|
||||
"Mailspring" "Install Mailspring" OFF
|
||||
)
|
||||
|
||||
selected_mail_client=$(whiptail --title "Setup Mail Client" --radiolist \
|
||||
"Choose the mail client you want to install:" 20 78 4 \
|
||||
"${options[@]}" 3>&1 1>&2 2>&3)
|
||||
|
||||
case $selected_mail_client in
|
||||
"\"Thunderbird\"")
|
||||
install_package thunderbird
|
||||
install_dependencies thunderbird-dark-reader thunderbird-ublock-origin
|
||||
;;
|
||||
"\"Evolution\"")
|
||||
install_package evolution
|
||||
;;
|
||||
"\"Geary\"")
|
||||
install_package geary
|
||||
;;
|
||||
"\"Mailspring\"")
|
||||
install_package mailspring
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function name: Setup virtualization
|
||||
# Description: Install virtualization packages and enable libvirtd service
|
||||
setup_virtualization() {
|
||||
if whiptail --title "Setup Virtualization" --yesno "Would you like to setup virtualization?" 10 60; then
|
||||
install_package virt-manager qemu-full virt-viewer
|
||||
install_dependencies swtpm dnsmasq openbsd-netcat
|
||||
if pacman -Qs libvirt > /dev/null; then
|
||||
sudo systemctl enable --now libvirtd
|
||||
sudo usermod -aG libvirt "$USER"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Function name: Setup containers
|
||||
# Description: Install choosen container packages (podman or docker, distrobox)
|
||||
setup_containers() {
|
||||
options=(
|
||||
"Podman" "Install Podman and its dependencies" ON
|
||||
"Docker" "Install Docker and its dependencies" OFF
|
||||
"Distrobox" "Install Distrobox for container management" ON
|
||||
)
|
||||
selected_containers=$(whiptail --title "Setup Containers" --checklist \
|
||||
"Choose the container packages you want to install:" 20 78 3 \
|
||||
"${options[@]}" 3>&1 1>&2 2>&3)
|
||||
for container in $selected_containers; do
|
||||
case $container in
|
||||
"\"Podman\"")
|
||||
install_package podman
|
||||
install_dependencies podman-docker
|
||||
if pacman -Qs nvidia-open > /dev/null || pacman -Qs nvidia-open-lts > /dev/null || pacman -Qs linux-cachyos-nvidia-open > /dev/null || pacman -Qs nvidia-open-dkms > /dev/null; then
|
||||
install_dependencies nvidia-container-toolkit
|
||||
fi
|
||||
sudo systemctl enable --now podman.socket
|
||||
;;
|
||||
"\"Docker\"")
|
||||
install_package docker
|
||||
install_dependencies docker-compose
|
||||
if pacman -Qs nvidia > /dev/null; then
|
||||
install_dependencies nvidia-container-toolkit
|
||||
fi
|
||||
sudo systemctl enable --now docker
|
||||
sudo usermod -aG docker "$USER"
|
||||
;;
|
||||
"\"Distrobox\"")
|
||||
install_package distrobox
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# Function name: Setup plasma KDE
|
||||
# Description: Install and setup Plasma KDE
|
||||
setup_plasma_kde() {
|
||||
if whiptail --title "Setup Plasma KDE" --yesno "Would you like to setup Plasma KDE?" 10 60; then
|
||||
install_package plasma-meta gwenview kate okular kcalc gparted kdeconnect
|
||||
install_dependencies qt6-quick3d
|
||||
if pacman -Qs sddm > /dev/null; then
|
||||
sudo systemctl enable sddm
|
||||
if [ -f /etc/sddm.conf.d/10-wayland.conf ]; then
|
||||
echo "SDDM wayland configuration already exists."
|
||||
else
|
||||
echo "[General]" | sudo tee /etc/sddm.conf.d/10-wayland.conf
|
||||
echo "DisplayServer=wayland" | sudo tee -a /etc/sddm.conf.d/10-wayland.conf
|
||||
echo "GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell" | sudo tee -a /etc/sddm.conf.d/10-wayland.conf
|
||||
echo "" | sudo tee -a /etc/sddm.conf.d/10-wayland.conf
|
||||
echo "[Wayland]" | sudo tee -a /etc/sddm.conf.d/10-wayland.conf
|
||||
echo "CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1" | sudo tee -a /etc/sddm.conf.d/10-wayland.conf
|
||||
fi
|
||||
fi
|
||||
if ! grep -q "ELECTRON_OZONE_PLATFORM_HINT" /etc/environment; then
|
||||
echo "ELECTRON_OZONE_PLATFORM_HINT=auto" | sudo tee -a /etc/environment
|
||||
fi
|
||||
if [ ! -f ~/.config/electron-flags.conf ]; then
|
||||
mkdir -p ~/.config
|
||||
echo "--enable-features=WaylandWindowDecorations" > ~/.config/electron-flags.conf
|
||||
echo "--ozone-platform-hint=auto" >> ~/.config/electron-flags.conf
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Function name: Setup gaming packages
|
||||
# Description: Install choosen launchers and gaming related packages
|
||||
setup_gaming() {
|
||||
options=(
|
||||
"Steam" "Install Steam (Steam Games)" ON
|
||||
"Heroic Games Launcher" "Install Heroic Games Launcher (Epic Games, GOG Games, Amazon Games)" ON
|
||||
"Anime Games Launcher" "Install Anime Games Launcher (Honkai 3, Genshin Impact, Honkai: Star Rail, Zenless Zone Zero)" OFF
|
||||
"UmU Launcher" "Install UmU Launcher (Start games using proton without steam)" OFF
|
||||
"Goverlay" "Install Goverlay for overlays and enhancements" ON
|
||||
"GameMode" "Install GameMode for performance optimization" ON
|
||||
"GameScope" "Install GameScope for gaming performance improvements" ON
|
||||
"MangoHud" "Install MangoHud for performance monitoring and overlays" ON
|
||||
)
|
||||
|
||||
selected_gaming=$(whiptail --title "Setup Gaming" --checklist \
|
||||
"Choose the gaming packages you want to install:" 20 78 8 \
|
||||
"${options[@]}" 3>&1 1>&2 2>&3)
|
||||
|
||||
for game in $selected_gaming; do
|
||||
case $game in
|
||||
"\"Steam\"")
|
||||
install_package steam-native-runtime
|
||||
;;
|
||||
"\"Heroic Games Launcher\"")
|
||||
install_package heroic-games-launcher-bin
|
||||
;;
|
||||
"\"Anime Games Launcher\"")
|
||||
install_package anime-games-launcher-git
|
||||
;;
|
||||
"\"UmU Launcher\"")
|
||||
install_package umu-launcher
|
||||
;;
|
||||
"\"Goverlay\"")
|
||||
install_package goverlay
|
||||
;;
|
||||
"\"GameMode\"")
|
||||
install_package gamemode
|
||||
;;
|
||||
"\"GameScope\"")
|
||||
install_package gamescope
|
||||
;;
|
||||
"\"MangoHud\"")
|
||||
install_package mangohud
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# Main script
|
||||
check_whiptail
|
||||
#setup_disk_partitioning
|
||||
setup_repositories
|
||||
update_system
|
||||
setup_pacman
|
||||
setup_browser
|
||||
install_packages_group
|
||||
setup_plymouth
|
||||
setup_shell
|
||||
setup_audio_server
|
||||
setup_gpu
|
||||
setup_plymouth
|
||||
setup_network
|
||||
setup_bluetooth
|
||||
setup_firewall
|
||||
setup_ntp
|
||||
setup_flatpak
|
||||
setup_fwupd
|
||||
setup_kdeconnect
|
||||
setup_office_suite
|
||||
setup_u2f
|
||||
setup_fprint
|
||||
setup_smartcard
|
||||
setup_openrgb
|
||||
setup_browser
|
||||
setup_office_suite
|
||||
setup_mail_client
|
||||
setup_virtualization
|
||||
setup_containers
|
||||
setup_plasma_kde
|
||||
setup_gaming
|
||||
|
||||
|
||||
# Packages group definitions
|
||||
# Package groups
|
||||
theme_packages=(
|
||||
btop-theme-catppuccin
|
||||
catppuccin-cursors-mocha
|
||||
catppuccin-gtk-theme-mocha
|
||||
papirus-folders-catppuccin-git
|
||||
plymouth-theme-catppuccin-mocha-git
|
||||
#refind-theme-catppuccin-git
|
||||
sddm-theme-catppuccin-git
|
||||
)
|
||||
gnome_apps=(
|
||||
gnome-console
|
||||
gnome-disk-utility
|
||||
gnome-firmware
|
||||
)
|
||||
games_packages=(
|
||||
steam-native-runtime
|
||||
heroic-games-launcher-bin
|
||||
an-anime-game-launcher-bin
|
||||
honkers-launcher-bin
|
||||
sleepy-launcher-bin
|
||||
the-honkers-railway-launcher-bin
|
||||
umu-launcher
|
||||
goverlay
|
||||
gamemode
|
||||
gamescope
|
||||
mangohud
|
||||
)
|
||||
cups_packages=(
|
||||
cups
|
||||
cups-pdf
|
||||
cups-filters
|
||||
system-config-printer
|
||||
)
|
||||
developer_packages=(
|
||||
git
|
||||
visual-studio-code-bin
|
||||
)
|
||||
Reference in New Issue
Block a user