Use shelly instead of pacman
This commit is contained in:
+117
-96
@@ -6,6 +6,14 @@ if [ "$1" = "--skip-watermark" ]; then
|
||||
skip_watermark=true
|
||||
fi
|
||||
|
||||
# Detect fish shell and ask user to switch to bash (bash-only syntax)
|
||||
if [ -n "${FISH_VERSION:-}" ] || case "$SHELL" in *fish*) ;; *) false ;; esac; then
|
||||
echo "Warning: fish shell detected."
|
||||
echo "This script is written for bash and may have syntax issues under fish."
|
||||
echo "Please switch to bash first and re-run it, e.g.: bash $0"
|
||||
read -r -p "Press Enter to continue anyway, or Ctrl+C to cancel..." </dev/tty || true
|
||||
fi
|
||||
|
||||
if [ "$skip_watermark" = false ]; then
|
||||
clear
|
||||
echo '
|
||||
@@ -16,7 +24,7 @@ if [ "$skip_watermark" = false ]; then
|
||||
|____/ \__ | \__ _|_| \_/ |_|_| |_|_|\___/|_|_|\___/
|
||||
|___/
|
||||
|
||||
--------------- Single Download script (Stable) ---------------
|
||||
--------------- Single Download script ---------------
|
||||
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE UNDER THE GPL-2.0 LICENCE,
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
See the LICENCE for more detail
|
||||
@@ -32,63 +40,83 @@ function error_handler() {
|
||||
# Trap errors
|
||||
trap error_handler ERR
|
||||
|
||||
#Install prerequisites
|
||||
sudo pacman -Syu git zsh curl wget libnewt --noconfirm --needed
|
||||
|
||||
# Install shelly as a dependency if not present (Arch-based)
|
||||
if command -v pacman >/dev/null; then
|
||||
echo "pacman detected. Installing prerequisites"
|
||||
sudo pacman -Syu git zsh curl wget whiptail --noconfirm --needed
|
||||
# Install build prerequisites for shelly
|
||||
if ! sudo pacman -S --needed --noconfirm base-devel git; then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "Failed to install prerequisite packages for Shelly. You can try running it manually:"
|
||||
echo "sudo pacman -S --needed --noconfirm base-devel git"
|
||||
echo "--------------------------------------------------------------------"
|
||||
exit 1 # exit with an error
|
||||
fi
|
||||
# Check if shelly binary exists
|
||||
if ! command -v shelly >/dev/null; then
|
||||
echo "shelly is NOT installed. Running installation commands..."
|
||||
if ! git clone https://aur.archlinux.org/shelly.git /tmp/shelly_install; then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "Failed to clone shelly repository. You can try running it manually:"
|
||||
echo "git clone https://aur.archlinux.org/shelly.git /tmp/shelly_install"
|
||||
echo "--------------------------------------------------------------------"
|
||||
exit 1 # exit with an error
|
||||
elif ! (cd /tmp/shelly_install && makepkg -si --noconfirm); then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "Failed to build and install shelly. You can try running it manually:"
|
||||
echo "cd /tmp/shelly_install && makepkg -si --noconfirm"
|
||||
echo "--------------------------------------------------------------------"
|
||||
exit 1 # exit with an error
|
||||
fi
|
||||
cd "$PreviousWD"
|
||||
rm -rf /tmp/shelly_install
|
||||
else
|
||||
echo "Shelly is already installed."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Install prerequisites
|
||||
if command -v shelly >/dev/null; then
|
||||
echo "shelly detected. Installing prerequisites"
|
||||
shelly install standard git zsh curl wget libnewt rsync whiptail --upgrade --no-confirm
|
||||
fi
|
||||
|
||||
if command -v apt >/dev/null; then
|
||||
echo "apt detected. Installing prerequisites"
|
||||
sudo apt update
|
||||
sudo apt full-upgrade -y
|
||||
sudo apt install git zsh curl wget whiptail -y
|
||||
sudo apt install git zsh curl wget whiptail rsync -y
|
||||
fi
|
||||
|
||||
# Ensure whiptail is installed
|
||||
if ! command -v whiptail >/dev/null; then
|
||||
echo "whiptail is not installed. Installing it now..."
|
||||
|
||||
if command -v pacman >/dev/null; then
|
||||
echo "pacman detected. Installing prerequisites"
|
||||
sudo pacman -S whiptail --noconfirm || {
|
||||
if command -v shelly >/dev/null; then
|
||||
echo "shelly detected. Installing whiptail"
|
||||
shelly install standard whiptail --no-confirm || {
|
||||
echo "Failed to install whiptail. Exiting."
|
||||
exit 1
|
||||
}
|
||||
# Reload zsh if it exists
|
||||
if command -v zsh -h >/dev/null; then
|
||||
source ~/.zshrc
|
||||
fi
|
||||
# Reload Bash
|
||||
source ~/.bashrc
|
||||
fi
|
||||
|
||||
if command -v apt >/dev/null; then
|
||||
echo "apt detected. Installing prerequisites"
|
||||
echo "apt detected. Installing whiptail"
|
||||
sudo apt install whiptail -y || {
|
||||
echo "Failed to install whiptail. Exiting."
|
||||
exit 1
|
||||
}
|
||||
# Reload zsh if it exists
|
||||
if command -v zsh -h >/dev/null; then
|
||||
source ~/.zshrc
|
||||
fi
|
||||
# Reload Bash
|
||||
source ~/.bashrc
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# Options for the whiptail menu
|
||||
OPTIONS=(
|
||||
1 "Run zsh setup script" ON
|
||||
2 "Run LazyVim setup script" OFF
|
||||
3 "Install Docker" OFF
|
||||
4 "Install Pacman Packages" ON
|
||||
5 "Install Yay and AUR Packages" ON
|
||||
6 "Install affinity with GUI" OFF
|
||||
1 "Run zsh setup script" OFF
|
||||
2 "Run fish setup script" ON
|
||||
3 "Run LazyVim setup script" OFF
|
||||
4 "Install Docker" OFF
|
||||
5 "Install Standard Packages (Shelly)" ON
|
||||
6 "Install AUR Packages (Shelly)" ON
|
||||
7 "Install affinity with GUI" OFF
|
||||
)
|
||||
|
||||
CHOICE=$(whiptail --title "Installation Options" --checklist \
|
||||
@@ -108,7 +136,7 @@ set -eu pipefail
|
||||
|
||||
# Process selected options
|
||||
for selection in $CHOICE; do
|
||||
clean_selection=$(echo "$selection " | tr -d '"')
|
||||
clean_selection=$(echo "$selection" | tr -d '"')
|
||||
case $clean_selection in
|
||||
"1")
|
||||
echo "Running zsh setup script..."
|
||||
@@ -121,6 +149,16 @@ for selection in $CHOICE; do
|
||||
fi
|
||||
;;
|
||||
"2")
|
||||
echo "Running fish setup script..."
|
||||
# Runs local script unless it does not exist or fails
|
||||
if [[ -f "fish.sh" ]]; then
|
||||
echo "Found local script, running..."
|
||||
bash fish.sh --skip-watermark
|
||||
else
|
||||
bash "$(curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/fish.sh)" --skip-watermark
|
||||
fi
|
||||
;;
|
||||
"3")
|
||||
echo "Running LazyVim setup script..."
|
||||
# Runs local script unless it does not exist or fails
|
||||
if [[ -f "LazyVim.sh" ]]; then
|
||||
@@ -130,7 +168,7 @@ for selection in $CHOICE; do
|
||||
curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/LazyVim.sh | bash
|
||||
fi
|
||||
;;
|
||||
"3")
|
||||
"4")
|
||||
echo "Installing Docker..."
|
||||
if ! command -v docker >/dev/null; then
|
||||
echo "docker is NOT installed. Installing..."
|
||||
@@ -142,86 +180,69 @@ for selection in $CHOICE; do
|
||||
echo "+ sleep 10" && sleep 10
|
||||
fi
|
||||
;;
|
||||
"4")
|
||||
echo "Installing Pacman Packages..."
|
||||
# Check if pacman binary is installed
|
||||
if command -v pacman </dev/null; then
|
||||
echo "Cannot proceed: pacman binary not found"
|
||||
"5")
|
||||
echo "Installing Standard Packages via Shelly backup..."
|
||||
# Check if shelly binary is installed
|
||||
if ! command -v shelly >/dev/null; then
|
||||
echo "Cannot proceed: shelly binary not found"
|
||||
exit 1 # exit with an error
|
||||
fi
|
||||
# Install pacman packages
|
||||
# Runs local script unless it does not exit or fails
|
||||
if [[ -f "./configs/PackagesPacman.txt" ]]; then
|
||||
echo "Found local config"
|
||||
cat ./configs/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm
|
||||
elif ! curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm; then
|
||||
# Install standard packages from shelly backup
|
||||
# Runs local script unless it does not exist or fails
|
||||
if [[ -f "./configs/shelly-standard.toml" ]]; then
|
||||
echo "Found local backup"
|
||||
shelly backup --import --name shelly-standard --directory ./configs --no-confirm
|
||||
elif ! curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/shelly-standard.toml -o /tmp/shelly-standard.toml; then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "Failed to install Pacman packages. You can try running it manually:"
|
||||
echo "curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm"
|
||||
echo "Failed to download shelly backup. You can try running it manually:"
|
||||
echo "curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/shelly-standard.toml -o /tmp/shelly-standard.toml"
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "+ sleep 10" && sleep 10
|
||||
fi
|
||||
;;
|
||||
"5")
|
||||
echo "Installing Yay and Yay Packages..."
|
||||
# Check for pacman before installing yay
|
||||
if command -v pacman </dev/null; then
|
||||
echo "Cannot proceed: Not a arch based system"
|
||||
exit 1 # Exit with an error
|
||||
fi
|
||||
# Install yay prerequisites
|
||||
if ! sudo pacman -S --needed --noconfirm efibootmgr sbsigntools mokutil sbctl golang fakeroot debugedit make gcc; then
|
||||
elif ! shelly backup --import --name shelly-standard --directory /tmp --no-confirm; then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "Failed to install prerequisite packages for Yay. You can try running it manually:"
|
||||
echo "sudo pacman -S --needed --noconfirm efibootmgr sbsigntools mokutil sbctl golang fakeroot debugedit make gcc"
|
||||
echo "--------------------------------------------------------------------"
|
||||
exit 1 # exit with an error
|
||||
fi
|
||||
# Check if yay binary exists
|
||||
if ! command -v yay >/dev/null; then
|
||||
echo "yay is NOT installed. Running installation commands..."
|
||||
if ! git clone https://aur.archlinux.org/yay.git /tmp/yay_install; then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "Failed to clone yay repository. You can try running it manually:"
|
||||
echo "git clone https://aur.archlinux.org/yay.git /tmp/yay_install"
|
||||
echo "--------------------------------------------------------------------"
|
||||
exit 1 # exit with an error
|
||||
elif ! (cd /tmp/yay_install && makepkg -si --noconfirm); then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "Failed to build and install yay. You can try running it manually:"
|
||||
echo "cd /tmp/yay_install && makepkg -si --noconfirm"
|
||||
echo "--------------------------------------------------------------------"
|
||||
exit 1 # exit with an error
|
||||
fi
|
||||
cd "$PreviousWD"
|
||||
rm -rf /tmp/yay_install
|
||||
else
|
||||
echo "Yay is already installed."
|
||||
fi
|
||||
# Install yay packages
|
||||
# Runs local script unless it does no exist or fails
|
||||
if [[ -f "./config/PackagesYay.txt" ]]; then
|
||||
echo "Found local config"
|
||||
cat ./config/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm
|
||||
elif ! curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm; then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "Failed to install Yay packages. You can try running it manually:"
|
||||
echo "curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm"
|
||||
echo "Failed to install Standard packages. You can try running it manually:"
|
||||
echo "shelly backup --import --name shelly-standard --directory /tmp --no-confirm"
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "+ sleep 10" && sleep 10
|
||||
fi
|
||||
;;
|
||||
"6")
|
||||
echo "Installing GUI dependencies"
|
||||
if command -v pacman </dev/null; then
|
||||
echo "Pacman found"
|
||||
sudo pacman -S python-pyqt6 --noconfirm --needed
|
||||
echo "Installing AUR Packages via Shelly backup..."
|
||||
# Check for shelly before installing AUR packages
|
||||
if ! command -v shelly >/dev/null; then
|
||||
echo "Cannot proceed: shelly binary not found"
|
||||
exit 1 # Exit with an error
|
||||
fi
|
||||
if command -v dnf </dev/null; then
|
||||
# Install AUR packages from shelly backup
|
||||
# Runs local script unless it does not exist or fails
|
||||
if [[ -f "./configs/shelly-aur.toml" ]]; then
|
||||
echo "Found local backup"
|
||||
shelly backup --import --name shelly-aur --directory ./configs --no-confirm
|
||||
elif ! curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/shelly-aur.toml -o /tmp/shelly-aur.toml; then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "Failed to download shelly backup. You can try running it manually:"
|
||||
echo "curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/shelly-aur.toml -o /tmp/shelly-aur.toml"
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "+ sleep 10" && sleep 10
|
||||
elif ! shelly backup --import --name shelly-aur --directory /tmp --no-confirm; then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "Failed to install AUR packages. You can try running it manually:"
|
||||
echo "shelly backup --import --name shelly-aur --directory /tmp --no-confirm"
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "+ sleep 10" && sleep 10
|
||||
fi
|
||||
;;
|
||||
"7")
|
||||
echo "Installing GUI dependencies"
|
||||
if command -v shelly >/dev/null; then
|
||||
echo "shelly found"
|
||||
shelly install standard python-pyqt6 --no-confirm
|
||||
fi
|
||||
if command -v dnf >/dev/null; then
|
||||
echo "dnf found"
|
||||
sudo dnf install python3-pyqt6
|
||||
fi
|
||||
if command -v apt </dev/null; then
|
||||
if command -v apt >/dev/null; then
|
||||
echo "apt found"
|
||||
sudo apt install python3-pyqt6 -y
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user