Rework Part 1
This commit is contained in:
336
arch-setup.sh
Executable file
336
arch-setup.sh
Executable file
@@ -0,0 +1,336 @@
|
||||
#!/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 pacman -S --needed --noconfirm "$package"
|
||||
done
|
||||
}
|
||||
|
||||
# Function name: Check whiptail
|
||||
# Description: Check if whiptail is installed else install it
|
||||
check_whiptail() {
|
||||
if ! command -v whiptail &>/dev/null; then
|
||||
sudo pacman -S --needed --noconfirm libnewt
|
||||
fi
|
||||
}
|
||||
|
||||
# Function name: Add repositories
|
||||
# Description: Ask the user if they want to add specific repositories
|
||||
add_repositories() {
|
||||
options=(
|
||||
"BlackArch" "Add BlackArch repository" OFF
|
||||
"Chaotic.cx" "Add Chaotic.cx repository" OFF
|
||||
"CachyOS" "Add CachyOS repository" OFF
|
||||
)
|
||||
|
||||
selected_repos=$(whiptail --title "Add Repositories" --checklist \
|
||||
"Choose the repositories you want to add:" 20 78 3 \
|
||||
"${options[@]}" 3>&1 1>&2 2>&3)
|
||||
|
||||
for repo in $selected_repos; do
|
||||
case $repo in
|
||||
"\"BlackArch\"")
|
||||
if ! grep -q "\[blackarch\]" /etc/pacman.conf; then
|
||||
curl -O https://blackarch.org/strap.sh
|
||||
chmod +x strap.sh
|
||||
sudo sed -i 's/msg '\''installing blackarch-officials meta-package...'\''/#msg '\''installing blackarch-officials meta-package...'\''/' strap.sh
|
||||
sudo sed -i 's/pacman -S --noconfirm --needed blackarch-officials/#pacman -S --noconfirm --needed blackarch-officials/' strap.sh
|
||||
sudo ./strap.sh
|
||||
else
|
||||
echo "BlackArch repository is already installed."
|
||||
fi
|
||||
;;
|
||||
"\"Chaotic.cx\"")
|
||||
if ! grep -q "\[chaotic-aur\]" /etc/pacman.conf; then
|
||||
sudo pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
|
||||
sudo pacman-key --lsign-key 3056513887B78AEB
|
||||
sudo pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'
|
||||
sudo pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
|
||||
echo '[chaotic-aur]' | sudo tee -a /etc/pacman.conf
|
||||
echo 'Include = /etc/pacman.d/chaotic-mirrorlist' | sudo tee -a /etc/pacman.conf
|
||||
else
|
||||
echo "Chaotic.cx repository is already installed."
|
||||
fi
|
||||
;;
|
||||
"\"CachyOS\"")
|
||||
if ! grep -q "\[cachyos\]" /etc/pacman.conf; then
|
||||
curl https://mirror.cachyos.org/cachyos-repo.tar.xz -o /tmp/cachyos-repo.tar.xz
|
||||
tar xvf /tmp/cachyos-repo.tar.xz -C /tmp
|
||||
cd /tmp/cachyos-repo || exit
|
||||
sudo ./cachyos-repo.sh
|
||||
else
|
||||
echo "CachyOS repository is already installed."
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# Function name: Update system
|
||||
# Description: Update the system
|
||||
update_system() {
|
||||
sudo pacman -Syu --noconfirm
|
||||
}
|
||||
|
||||
# Function name: Setup Pacman configuration
|
||||
# Description: Setup Pacman configuration
|
||||
setup_pacman() {
|
||||
sudo sed -i 's/#Color/Color/' /etc/pacman.conf
|
||||
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/#ParallelDownloads = 5/ParallelDownloads = 10/' /etc/pacman.conf
|
||||
sudo sed -i 's/#DisableDownloadTimeout/DisableDownloadTimeout/' /etc/pacman.conf
|
||||
}
|
||||
|
||||
# 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
|
||||
}
|
||||
|
||||
# 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=(
|
||||
catppuccin-cursors-mocha
|
||||
catppuccin-gtk-theme-mocha
|
||||
papirus-folders-catppuccin-git
|
||||
plymouth-theme-catppuccin-mocha-git
|
||||
#refind-theme-catppuccin-git
|
||||
sddm-theme-catppuccin-git
|
||||
)
|
||||
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
|
||||
)
|
||||
|
||||
# function name : setup browser
|
||||
# Description: setup browser
|
||||
setup_browser() {
|
||||
options=(
|
||||
"Firefox" "Install Firefox" ON
|
||||
"Chromium" "Install Chromium" OFF
|
||||
"Brave" "Install Brave" OFF
|
||||
"Vivaldi" "Install Vivaldi" OFF
|
||||
"Google Chrome" "Install Google Chrome" OFF
|
||||
"Zen Browser" "Install Zen Browser" OFF
|
||||
"Tor Browser" "Install Tor Browser" OFF
|
||||
"Mullvad Browser" "Install Mullvad Browser" OFF
|
||||
"Edge Stable" "Install Edge Stable" OFF
|
||||
"LibreWolf" "Install LibreWolf" OFF
|
||||
"Floorp" "Install Floorp" OFF
|
||||
"Chromium Widevine" "Install Chromium Widevine" OFF
|
||||
"Links" "Install Links" OFF
|
||||
)
|
||||
|
||||
selected_browsers=$(whiptail --title "Setup Browser" --checklist \
|
||||
"Choose the browsers you want to install:" 20 78 13 \
|
||||
"${options[@]}" 3>&1 1>&2 2>&3)
|
||||
|
||||
for browser in $selected_browsers; do
|
||||
case $browser in
|
||||
"\"Firefox\"")
|
||||
sudo pacman -S --needed --noconfirm firefox
|
||||
;;
|
||||
"\"Chromium\"")
|
||||
sudo pacman -S --needed --noconfirm chromium
|
||||
;;
|
||||
"\"Brave\"")
|
||||
sudo pacman -S --needed --noconfirm brave-bin
|
||||
;;
|
||||
"\"Vivaldi\"")
|
||||
sudo pacman -S --needed --noconfirm vivaldi
|
||||
;;
|
||||
"\"Google Chrome\"")
|
||||
yay -S --needed --noconfirm google-chrome
|
||||
;;
|
||||
"\"Zen Browser\"")
|
||||
yay -S --needed --noconfirm zen-browser-bin
|
||||
;;
|
||||
"\"Tor Browser\"")
|
||||
sudo pacman -S --needed --noconfirm tor-browser-bin
|
||||
;;
|
||||
"\"Mullvad Browser\"")
|
||||
yay -S --needed --noconfirm mullvad-browser-bin
|
||||
;;
|
||||
"\"Edge Stable\"")
|
||||
yay -S --needed --noconfirm microsoft-edge-stable-bin
|
||||
;;
|
||||
"\"LibreWolf\"")
|
||||
yay -S --needed --noconfirm librewolf
|
||||
;;
|
||||
"\"Floorp\"")
|
||||
yay -S --needed --noconfirm floorp-bin
|
||||
;;
|
||||
"\"Chromium Widevine\"")
|
||||
sudo pacman -S --needed --noconfirm chromium-widevine
|
||||
;;
|
||||
"\"Links\"")
|
||||
sudo pacman -S --needed --noconfirm links
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# function name : setup u2f
|
||||
# Description: setup u2f
|
||||
setup_u2f() {
|
||||
sudo pacman -S --needed --noconfirm pam-u2f
|
||||
mkdir ~/.config/Yubico
|
||||
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
|
||||
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 pacman -S --needed --noconfirm openrgb
|
||||
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
|
||||
)
|
||||
|
||||
selected_groups=$(whiptail --title "Install Packages Group" --checklist \
|
||||
"Choose the packages group you want to install:" 20 78 11 \
|
||||
"${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
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# Main script
|
||||
check_whiptail
|
||||
add_repositories
|
||||
update_system
|
||||
setup_pacman
|
||||
setup_browser
|
||||
install_packages_group
|
||||
setup_plymouth
|
||||
Reference in New Issue
Block a user