diff --git a/arch-setup.sh b/arch-setup.sh index c35ef7c..6777020 100755 --- a/arch-setup.sh +++ b/arch-setup.sh @@ -11,6 +11,22 @@ install_packages() { done } +# Function name: Install package +# Description: Install a package +# Arguments: +# $1: Package name +install_package() { + sudo pacman -S --needed --noconfirm "$1" +} + +# Function name: Install dependencies +# Description: Install dependencies +# Arguments: +# $1: Package name +install_dependencies() { + sudo pacman -S --needed --noconfirm --asdeps "$1" +} + # Function name: Check whiptail # Description: Check if whiptail is installed else install it check_whiptail() { @@ -344,7 +360,7 @@ setup_browser() { # function name : setup u2f # Description: setup u2f setup_u2f() { - sudo pacman -S --needed --noconfirm pam-u2f + install_package pam-u2f mkdir ~/.config/Yubico echo "Registering U2F device..." pamu2fcfg -o "pam://$HOST" -i "pam://$HOST" > ~/.config/Yubico/u2f_keys @@ -364,7 +380,7 @@ setup_u2f() { # function name : setup OpenRGB # Description: setup OpenRGB setup_openrgb() { - sudo pacman -S --needed --noconfirm openrgb + install_package openrgb sudo gpasswd -a "$USER" plugdev sudo systemctl enable --now openrgb } @@ -428,7 +444,7 @@ install_packages_group() { install_packages containers_packages[@] # if nvidia gpu is detected if lspci | grep -Ei "nvidia" > /dev/null; then - sudo pacman -S --needed --noconfirm nvidia-container-toolkit + install_package nvidia-container-toolkit fi ;; "\"U2F\"") @@ -457,19 +473,21 @@ setup_firewall() { case $selected_groups in "ufw") - sudo pacman -S --needed --noconfirm ufw ufw-extras + install_package ufw + install_dependencies ufw-extras sudo systemctl enable --now ufw sudo ufw enable ;; "firewalld") - sudo pacman -S --needed --noconfirm firewalld + install_package firewalld sudo systemctl enable --now firewalld ;; "iptables") - sudo pacman -S --needed --noconfirm iptables + install_package iptables ;; "nftables") - sudo pacman -S --needed --noconfirm nftables iptables-nft + install_package nftables + install_package iptables-nft ;; esac } @@ -478,7 +496,7 @@ setup_firewall() { # 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 + install_package flatpak flatpak remote-add --if-not-exists --system flathub https://flathub.org/repo/flathub.flatpakrepo fi } @@ -487,7 +505,8 @@ setup_flatpak() { # 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 + install_package fwupd + install_dependencies fwupd-efi sudo systemctl enable --now fwupd sudo systemctl enable --now fwupd-refresh fi @@ -504,10 +523,10 @@ setup_kdeconnect() { 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 + install_package kdeconnect ;; "\"gsconnect\"") - sudo yay -S --needed --noconfirm gsconnect gnome-shell-extension-gsconnect + install_package gnome-shell-extension-gsconnect ;; esac fi @@ -525,16 +544,16 @@ setup_office_suite() { 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 + install_package libreoffice-fresh ;; "\"OnlyOffice\"") - sudo pacman -S --needed --noconfirm onlyoffice-bin + install_package onlyoffice-bin ;; "\"WPS Office\"") - sudo pacman -S --needed --noconfirm wps-office + install_package wps-office ;; "\"FreeOffice\"") - sudo pacman -S --needed --noconfirm freeoffice + install_package freeoffice ;; esac } diff --git a/debian-setup.sh b/debian-setup.sh index 15491ba..00ba9d9 100644 --- a/debian-setup.sh +++ b/debian-setup.sh @@ -11,6 +11,14 @@ install_packages() { done } +# Function name: Install package +# Description: Install a package +# Arguments: +# $1: Package name +install_package() { + sudo apt-get install -y "$1" +} + # Function name: Add repositories # Description: Add repositories from an array # Arguments: @@ -75,7 +83,8 @@ update_system() { # Function name: Setup plymouth # Description: Setup plymouth setup_plymouth() { - sudo apt-get install -y plymouth plymouth-themes + install_package plymouth + install_package plymouth-themes sudo plymouth-set-default-theme -R spinner } @@ -129,6 +138,10 @@ containers_packages=( waydroid lxc ) +thunderbird_packages=( + thunderbird + thunderbird-l10n-all +) # Function name: Setup browser # Description: Setup browser @@ -152,31 +165,31 @@ setup_browser() { for browser in $selected_browsers; do case $browser in "\"Firefox\"") - sudo apt-get install -y firefox-esr + install_package firefox-esr ;; "\"Chromium\"") - sudo apt-get install -y chromium + install_package chromium ;; "\"Brave\"") - sudo apt-get install -y brave-browser + install_package brave-browser ;; "\"Google Chrome\"") - sudo apt-get install -y google-chrome-stable + install_package google-chrome-stable ;; "\"Tor Browser\"") - sudo apt-get install -y torbrowser-launcher + install_package torbrowser-launcher ;; "\"Mullvad Browser\"") - sudo apt-get install -y mullvad-browser + install_package mullvad-browser ;; "\"Edge Stable\"") - sudo apt-get install -y microsoft-edge-stable + install_package microsoft-edge-stable ;; "\"LibreWolf\"") - sudo apt-get install -y librewolf + install_package librewolf ;; "\"Links\"") - sudo apt-get install -y links + install_package links ;; esac done @@ -185,16 +198,26 @@ setup_browser() { # Function name: Setup U2F # Description: Setup U2F setup_u2f() { - sudo apt-get install -y libpam-u2f + install_package pamu2fcfg + install_package libpam-u2f mkdir -p ~/.config/Yubico pamu2fcfg > ~/.config/Yubico/u2f_keys - echo "auth required pam_u2f.so" | sudo tee -a /etc/pam.d/common-auth + 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 + sudo cp /usr/lib/pam.d/polkit-1 /etc/pam.d/polkit-1 + sudo sed -i '/^auth\s*include\s*system-auth/i auth include u2f-sufficient' /etc/pam.d/polkit-1 } # Function name: Setup OpenRGB # Description: Setup OpenRGB setup_openrgb() { - sudo apt-get install -y openrgb + install_package openrgb sudo gpasswd -a "$USER" plugdev sudo systemctl enable --now openrgb } @@ -214,10 +237,11 @@ install_packages_group() { "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 11 \ + "Choose the packages group you want to install:" 20 78 10 \ "${options[@]}" 3>&1 1>&2 2>&3) for group in $selected_groups; do @@ -255,12 +279,71 @@ install_packages_group() { "\"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 + flatpak remote-add --if-not-exists --system 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-fresh + ;; + "\"OnlyOffice\"") + install_package onlyoffice-bin + ;; + "\"WPS Office\"") + install_package wps-office + ;; + "\"FreeOffice\"") + install_package freeoffice + ;; + esac +} + # Main script update_system setup_plymouth setup_browser -install_packages_group \ No newline at end of file +install_packages_group +setup_flatpak \ No newline at end of file