Use shelly instead of pacman
This commit is contained in:
@@ -1,5 +1,13 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
# 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 ! command -v pacman >/dev/null; then
|
if ! command -v pacman >/dev/null; then
|
||||||
echo "Cannot proceed: Not a arch based system"
|
echo "Cannot proceed: Not a arch based system"
|
||||||
echo "This script does not have debian support"
|
echo "This script does not have debian support"
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
# Single-install-script
|
# Single-install-script
|
||||||
|
|
||||||
This script automatically installs my favourite Linux applications I use every day such as:
|
This script automatically installs my favourite Linux applications I use every day such as:
|
||||||
[Docker](https://www.docker.com/), [zsh, oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh) and [neovim](https://neovim.io/). This uses pacman and [yay AUR helper](https://github.com/Jguer/yay). You can choose what sections to install with the whiptail menu.
|
[Docker](https://www.docker.com/), [zsh, oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh) and [neovim](https://neovim.io/). This uses the [shelly-cli](https://github.com/Seafoam-Labs/Shelly-ALPM) package manager. You can choose what sections to install with the whiptail menu.
|
||||||
|
|
||||||
This script will use aim to use the [shelly-cli](https://github.com/Seafoam-Labs/Shelly-ALPM) installer.
|
This script will automatically install [shelly-cli](https://github.com/Seafoam-Labs/Shelly-ALPM) if it is not already present.
|
||||||
|
|
||||||
Most of this script is intended for Arch Linux with some Debian compatibility on the zsh install script only.
|
Most of this script is intended for Arch Linux with some Debian compatibility on the zsh install script only.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,13 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
# Install Prerequisites
|
# Install Prerequisites
|
||||||
sudo pacman -S --needed -noconfirm efibootmgr sbsigntools mokutil sbctl grub
|
sudo pacman -S --needed -noconfirm efibootmgr sbsigntools mokutil sbctl grub
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
skip_watermark=false
|
skip_watermark=false
|
||||||
if [ "$1" = "--skip-watermark" ]; then
|
if [ "$1" = "--skip-watermark" ]; then
|
||||||
skip_watermark=true
|
skip_watermark=true
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
standard = [
|
||||||
|
]
|
||||||
|
|
||||||
|
aur = [
|
||||||
|
"agru",
|
||||||
|
"android-studio",
|
||||||
|
"asciinema-agg",
|
||||||
|
"bluez-qt5",
|
||||||
|
"browseros-bin",
|
||||||
|
"catppuccin-cursors-macchiato",
|
||||||
|
"cuda-12.9",
|
||||||
|
"davs2",
|
||||||
|
"dirb",
|
||||||
|
"discord-bot-client-appimage",
|
||||||
|
"eternalterminal",
|
||||||
|
"game-devices-udev",
|
||||||
|
"gnu-netcat",
|
||||||
|
"google-chrome",
|
||||||
|
"grub-customizer",
|
||||||
|
"gtk-engine-murrine",
|
||||||
|
"joycond-cemuhook-git",
|
||||||
|
"joycond-git",
|
||||||
|
"lib32-gtk2",
|
||||||
|
"pacserve",
|
||||||
|
"rpi-imager-git",
|
||||||
|
"skipfish",
|
||||||
|
"snapd",
|
||||||
|
"ssh-import-id",
|
||||||
|
"superproductivity-bin",
|
||||||
|
"syncthingtray-qt6",
|
||||||
|
"trayscale",
|
||||||
|
"ttf-victor-mono",
|
||||||
|
"varia",
|
||||||
|
"vencord-hook",
|
||||||
|
"vencord-installer-bin",
|
||||||
|
"wallust",
|
||||||
|
"woeusb-ng",
|
||||||
|
"xwaylandvideobridge",
|
||||||
|
]
|
||||||
|
|
||||||
|
flatpak = [
|
||||||
|
]
|
||||||
@@ -0,0 +1,318 @@
|
|||||||
|
standard = [
|
||||||
|
"accessibility-inspector",
|
||||||
|
"acpi",
|
||||||
|
"adobe-source-code-pro-fonts",
|
||||||
|
"alacritty",
|
||||||
|
"amd-ucode",
|
||||||
|
"android-tools",
|
||||||
|
"android-udev",
|
||||||
|
"ansible",
|
||||||
|
"apache",
|
||||||
|
"ark",
|
||||||
|
"asciinema",
|
||||||
|
"ast-grep",
|
||||||
|
"atomicparsley",
|
||||||
|
"atool",
|
||||||
|
"base",
|
||||||
|
"base-devel",
|
||||||
|
"bat",
|
||||||
|
"bcachefs-tools",
|
||||||
|
"blueman",
|
||||||
|
"bluez-tools",
|
||||||
|
"bluez-utils",
|
||||||
|
"btop",
|
||||||
|
"btrfs-progs",
|
||||||
|
"bully",
|
||||||
|
"cachyos-keyring",
|
||||||
|
"cachyos-mirrorlist",
|
||||||
|
"cachyos-v3-mirrorlist",
|
||||||
|
"cachyos-v4-mirrorlist",
|
||||||
|
"cdrtools",
|
||||||
|
"celt",
|
||||||
|
"cifs-utils",
|
||||||
|
"clamav",
|
||||||
|
"claude-desktop",
|
||||||
|
"cloudflare-warp-bin",
|
||||||
|
"cloudflared",
|
||||||
|
"cmatrix",
|
||||||
|
"code",
|
||||||
|
"cowpatty",
|
||||||
|
"cowsay",
|
||||||
|
"cpio",
|
||||||
|
"cronie",
|
||||||
|
"cython",
|
||||||
|
"dconf-editor",
|
||||||
|
"deskflow",
|
||||||
|
"dialog",
|
||||||
|
"dictd",
|
||||||
|
"discord",
|
||||||
|
"dnsmasq",
|
||||||
|
"docker-buildx",
|
||||||
|
"dolphin-plugins",
|
||||||
|
"dosfstools",
|
||||||
|
"dotnet-sdk-8.0",
|
||||||
|
"downgrade",
|
||||||
|
"dpkg",
|
||||||
|
"efibootmgr",
|
||||||
|
"electron",
|
||||||
|
"element-desktop",
|
||||||
|
"evtest",
|
||||||
|
"exfatprogs",
|
||||||
|
"f2fs-tools",
|
||||||
|
"faac",
|
||||||
|
"faad2",
|
||||||
|
"fastfetch",
|
||||||
|
"fcitx5",
|
||||||
|
"fcitx5-configtool",
|
||||||
|
"fcitx5-gtk",
|
||||||
|
"fcitx5-mozc",
|
||||||
|
"fcitx5-qt",
|
||||||
|
"fd",
|
||||||
|
"ffmpegthumbnailer",
|
||||||
|
"ffmpegthumbs",
|
||||||
|
"figlet",
|
||||||
|
"firefox",
|
||||||
|
"flatpak",
|
||||||
|
"foliate",
|
||||||
|
"foremost",
|
||||||
|
"fortune-mod",
|
||||||
|
"fprintd",
|
||||||
|
"freedownloadmanager",
|
||||||
|
"fuse-overlayfs",
|
||||||
|
"fzf",
|
||||||
|
"ghostty",
|
||||||
|
"git",
|
||||||
|
"glib2-devel",
|
||||||
|
"gnome-2048",
|
||||||
|
"gnome-applets",
|
||||||
|
"gnome-calculator",
|
||||||
|
"gnome-calendar",
|
||||||
|
"gnome-chess",
|
||||||
|
"gnome-clocks",
|
||||||
|
"gnome-disk-utility",
|
||||||
|
"gnome-font-viewer",
|
||||||
|
"gnome-online-accounts",
|
||||||
|
"gnome-power-manager",
|
||||||
|
"gnome-remote-desktop",
|
||||||
|
"gnome-settings-daemon",
|
||||||
|
"gnome-software",
|
||||||
|
"gnome-tweaks",
|
||||||
|
"gnome-weather",
|
||||||
|
"gpart",
|
||||||
|
"gparted",
|
||||||
|
"grub",
|
||||||
|
"gst-plugin-va",
|
||||||
|
"gst-plugins-base",
|
||||||
|
"gst-plugins-ugly",
|
||||||
|
"gst-python",
|
||||||
|
"gufw",
|
||||||
|
"gum",
|
||||||
|
"gvfs",
|
||||||
|
"gvfs-mtp",
|
||||||
|
"gwenview",
|
||||||
|
"hashcat",
|
||||||
|
"hcxdumptool",
|
||||||
|
"hcxtools",
|
||||||
|
"htop",
|
||||||
|
"hyprpolkitagent",
|
||||||
|
"intel-ucode",
|
||||||
|
"inxi",
|
||||||
|
"irssi",
|
||||||
|
"jfsutils",
|
||||||
|
"joyutils",
|
||||||
|
"jre17-openjdk",
|
||||||
|
"julia",
|
||||||
|
"just",
|
||||||
|
"kcachegrind",
|
||||||
|
"kde-inotify-survey",
|
||||||
|
"kdeconnect",
|
||||||
|
"kdenetwork-filesharing",
|
||||||
|
"kdenlive",
|
||||||
|
"kdepim-addons",
|
||||||
|
"kdesdk-thumbnailers",
|
||||||
|
"kimageformats",
|
||||||
|
"kio-admin",
|
||||||
|
"kio-gdrive",
|
||||||
|
"kompare",
|
||||||
|
"konsole",
|
||||||
|
"krdc",
|
||||||
|
"krdp",
|
||||||
|
"kvantum",
|
||||||
|
"kwalletmanager",
|
||||||
|
"lan-mouse",
|
||||||
|
"lazygit",
|
||||||
|
"lib32-blas",
|
||||||
|
"lib32-freeglut",
|
||||||
|
"lib32-lzo",
|
||||||
|
"libc++",
|
||||||
|
"libde265",
|
||||||
|
"libfprint",
|
||||||
|
"libisoburn",
|
||||||
|
"libmp4v2",
|
||||||
|
"libmpcdec",
|
||||||
|
"libreoffice-fresh",
|
||||||
|
"libtorrent",
|
||||||
|
"libva-nvidia-driver",
|
||||||
|
"linux",
|
||||||
|
"linux-firmware",
|
||||||
|
"linux-headers",
|
||||||
|
"localsend",
|
||||||
|
"lolcat",
|
||||||
|
"loupe",
|
||||||
|
"lsd",
|
||||||
|
"luarocks",
|
||||||
|
"lutris",
|
||||||
|
"lxc",
|
||||||
|
"lynx",
|
||||||
|
"macchanger",
|
||||||
|
"magic-wormhole",
|
||||||
|
"mako",
|
||||||
|
"man-db",
|
||||||
|
"memtest86+-efi",
|
||||||
|
"mermaid-cli",
|
||||||
|
"metasploit",
|
||||||
|
"micro",
|
||||||
|
"mingw-w64-tools",
|
||||||
|
"mokutil",
|
||||||
|
"mono",
|
||||||
|
"mousepad",
|
||||||
|
"mplayer",
|
||||||
|
"mpv-mpris",
|
||||||
|
"mtools",
|
||||||
|
"nano",
|
||||||
|
"nautilus",
|
||||||
|
"neofetch",
|
||||||
|
"neovim",
|
||||||
|
"net-tools",
|
||||||
|
"network-manager-applet",
|
||||||
|
"nikto",
|
||||||
|
"nmap",
|
||||||
|
"noto-fonts",
|
||||||
|
"noto-fonts-cjk",
|
||||||
|
"noto-fonts-emoji",
|
||||||
|
"ntfs-3g",
|
||||||
|
"nvidia-580xx-dkms",
|
||||||
|
"nvidia-580xx-settings",
|
||||||
|
"nvtop",
|
||||||
|
"nwg-displays",
|
||||||
|
"nwg-look",
|
||||||
|
"obs-studio",
|
||||||
|
"okular",
|
||||||
|
"ollama",
|
||||||
|
"onlyoffice-bin",
|
||||||
|
"opencode",
|
||||||
|
"os-prober",
|
||||||
|
"otf-font-awesome",
|
||||||
|
"pacman-contrib",
|
||||||
|
"pamixer",
|
||||||
|
"partitionmanager",
|
||||||
|
"pear-desktop",
|
||||||
|
"perl-image-exiftool",
|
||||||
|
"piper",
|
||||||
|
"pipewire-alsa",
|
||||||
|
"plasma-browser-integration",
|
||||||
|
"plocate",
|
||||||
|
"power-profiles-daemon",
|
||||||
|
"poxml",
|
||||||
|
"pwgen",
|
||||||
|
"python-hatchling",
|
||||||
|
"python-installer",
|
||||||
|
"python-pip",
|
||||||
|
"python-pyqt6",
|
||||||
|
"python-pyquery",
|
||||||
|
"python-ufonormalizer",
|
||||||
|
"python-uv",
|
||||||
|
"python-virtualenv",
|
||||||
|
"python-wxpython",
|
||||||
|
"qalculate-gtk",
|
||||||
|
"qbittorrent",
|
||||||
|
"qemu-full",
|
||||||
|
"qt5-quickcontrols2",
|
||||||
|
"qt6ct",
|
||||||
|
"rclone",
|
||||||
|
"reaver",
|
||||||
|
"reflector",
|
||||||
|
"rofi",
|
||||||
|
"rust",
|
||||||
|
"ryujinx",
|
||||||
|
"samba",
|
||||||
|
"sbctl",
|
||||||
|
"sbsigntools",
|
||||||
|
"scdoc",
|
||||||
|
"schroedinger",
|
||||||
|
"scrcpy",
|
||||||
|
"screenfetch",
|
||||||
|
"sddm",
|
||||||
|
"shelly",
|
||||||
|
"shelly-cli",
|
||||||
|
"shelly-flatpak-backend",
|
||||||
|
"shfmt",
|
||||||
|
"sof-firmware",
|
||||||
|
"sox",
|
||||||
|
"spectacle",
|
||||||
|
"sshfs",
|
||||||
|
"steam",
|
||||||
|
"sunshine",
|
||||||
|
"swaync",
|
||||||
|
"syncthing",
|
||||||
|
"syslinux",
|
||||||
|
"tailscale",
|
||||||
|
"tea",
|
||||||
|
"termshark",
|
||||||
|
"texlive-bin",
|
||||||
|
"thunar",
|
||||||
|
"thunar-archive-plugin",
|
||||||
|
"thunar-volman",
|
||||||
|
"thunderbird",
|
||||||
|
"tigervnc",
|
||||||
|
"timeshift",
|
||||||
|
"tmux",
|
||||||
|
"tor",
|
||||||
|
"torbrowser-launcher",
|
||||||
|
"tree",
|
||||||
|
"ttf-droid",
|
||||||
|
"ttf-fantasque-nerd",
|
||||||
|
"ttf-fira-code",
|
||||||
|
"ttf-jetbrains-mono",
|
||||||
|
"tty-clock",
|
||||||
|
"tumbler",
|
||||||
|
"udftools",
|
||||||
|
"uget",
|
||||||
|
"umockdev",
|
||||||
|
"unrar",
|
||||||
|
"uriparser",
|
||||||
|
"usb_modeswitch",
|
||||||
|
"usbguard",
|
||||||
|
"uwsm",
|
||||||
|
"v4l2loopback-dkms",
|
||||||
|
"veracrypt",
|
||||||
|
"virt-manager",
|
||||||
|
"virtualbox",
|
||||||
|
"waybar",
|
||||||
|
"wayvnc",
|
||||||
|
"wgcf",
|
||||||
|
"wifite",
|
||||||
|
"wine",
|
||||||
|
"winetricks",
|
||||||
|
"xarchiver",
|
||||||
|
"xclip",
|
||||||
|
"xdotool",
|
||||||
|
"xfsprogs",
|
||||||
|
"xorg-xhost",
|
||||||
|
"xpadneo-dkms",
|
||||||
|
"yay",
|
||||||
|
"yt-dlp",
|
||||||
|
"zellij",
|
||||||
|
"zen-browser-bin",
|
||||||
|
"zram-generator",
|
||||||
|
"zsh",
|
||||||
|
"zsh-completions",
|
||||||
|
]
|
||||||
|
|
||||||
|
aur = [
|
||||||
|
]
|
||||||
|
|
||||||
|
flatpak = [
|
||||||
|
"org.vinegarhq.Sober",
|
||||||
|
"re.fossplant.songrec",
|
||||||
|
]
|
||||||
@@ -1,5 +1,13 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
skip_watermark=false
|
skip_watermark=false
|
||||||
if [ "$1" = "--skip-watermark" ]; then
|
if [ "$1" = "--skip-watermark" ]; then
|
||||||
skip_watermark=true
|
skip_watermark=true
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# Fixes nwg-displays not auto-updating monitor/workspace configs on hyprctl reload
|
# Fixes nwg-displays not auto-updating monitor/workspace configs on hyprctl reload
|
||||||
|
|||||||
+117
-96
@@ -6,6 +6,14 @@ if [ "$1" = "--skip-watermark" ]; then
|
|||||||
skip_watermark=true
|
skip_watermark=true
|
||||||
fi
|
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
|
if [ "$skip_watermark" = false ]; then
|
||||||
clear
|
clear
|
||||||
echo '
|
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,
|
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.
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||||
See the LICENCE for more detail
|
See the LICENCE for more detail
|
||||||
@@ -32,63 +40,83 @@ function error_handler() {
|
|||||||
# Trap errors
|
# Trap errors
|
||||||
trap error_handler ERR
|
trap error_handler ERR
|
||||||
|
|
||||||
#Install prerequisites
|
# Install shelly as a dependency if not present (Arch-based)
|
||||||
sudo pacman -Syu git zsh curl wget libnewt --noconfirm --needed
|
|
||||||
|
|
||||||
if command -v pacman >/dev/null; then
|
if command -v pacman >/dev/null; then
|
||||||
echo "pacman detected. Installing prerequisites"
|
# Install build prerequisites for shelly
|
||||||
sudo pacman -Syu git zsh curl wget whiptail --noconfirm --needed
|
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
|
fi
|
||||||
|
|
||||||
if command -v apt >/dev/null; then
|
if command -v apt >/dev/null; then
|
||||||
echo "apt detected. Installing prerequisites"
|
echo "apt detected. Installing prerequisites"
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt full-upgrade -y
|
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
|
fi
|
||||||
|
|
||||||
# Ensure whiptail is installed
|
# Ensure whiptail is installed
|
||||||
if ! command -v whiptail >/dev/null; then
|
if ! command -v whiptail >/dev/null; then
|
||||||
echo "whiptail is not installed. Installing it now..."
|
echo "whiptail is not installed. Installing it now..."
|
||||||
|
|
||||||
if command -v pacman >/dev/null; then
|
if command -v shelly >/dev/null; then
|
||||||
echo "pacman detected. Installing prerequisites"
|
echo "shelly detected. Installing whiptail"
|
||||||
sudo pacman -S whiptail --noconfirm || {
|
shelly install standard whiptail --no-confirm || {
|
||||||
echo "Failed to install whiptail. Exiting."
|
echo "Failed to install whiptail. Exiting."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
# Reload zsh if it exists
|
|
||||||
if command -v zsh -h >/dev/null; then
|
|
||||||
source ~/.zshrc
|
|
||||||
fi
|
|
||||||
# Reload Bash
|
|
||||||
source ~/.bashrc
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v apt >/dev/null; then
|
if command -v apt >/dev/null; then
|
||||||
echo "apt detected. Installing prerequisites"
|
echo "apt detected. Installing whiptail"
|
||||||
sudo apt install whiptail -y || {
|
sudo apt install whiptail -y || {
|
||||||
echo "Failed to install whiptail. Exiting."
|
echo "Failed to install whiptail. Exiting."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
# Reload zsh if it exists
|
|
||||||
if command -v zsh -h >/dev/null; then
|
|
||||||
source ~/.zshrc
|
|
||||||
fi
|
|
||||||
# Reload Bash
|
|
||||||
source ~/.bashrc
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Options for the whiptail menu
|
# Options for the whiptail menu
|
||||||
OPTIONS=(
|
OPTIONS=(
|
||||||
1 "Run zsh setup script" ON
|
1 "Run zsh setup script" OFF
|
||||||
2 "Run LazyVim setup script" OFF
|
2 "Run fish setup script" ON
|
||||||
3 "Install Docker" OFF
|
3 "Run LazyVim setup script" OFF
|
||||||
4 "Install Pacman Packages" ON
|
4 "Install Docker" OFF
|
||||||
5 "Install Yay and AUR Packages" ON
|
5 "Install Standard Packages (Shelly)" ON
|
||||||
6 "Install affinity with GUI" OFF
|
6 "Install AUR Packages (Shelly)" ON
|
||||||
|
7 "Install affinity with GUI" OFF
|
||||||
)
|
)
|
||||||
|
|
||||||
CHOICE=$(whiptail --title "Installation Options" --checklist \
|
CHOICE=$(whiptail --title "Installation Options" --checklist \
|
||||||
@@ -108,7 +136,7 @@ set -eu pipefail
|
|||||||
|
|
||||||
# Process selected options
|
# Process selected options
|
||||||
for selection in $CHOICE; do
|
for selection in $CHOICE; do
|
||||||
clean_selection=$(echo "$selection " | tr -d '"')
|
clean_selection=$(echo "$selection" | tr -d '"')
|
||||||
case $clean_selection in
|
case $clean_selection in
|
||||||
"1")
|
"1")
|
||||||
echo "Running zsh setup script..."
|
echo "Running zsh setup script..."
|
||||||
@@ -121,6 +149,16 @@ for selection in $CHOICE; do
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
"2")
|
"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..."
|
echo "Running LazyVim setup script..."
|
||||||
# Runs local script unless it does not exist or fails
|
# Runs local script unless it does not exist or fails
|
||||||
if [[ -f "LazyVim.sh" ]]; then
|
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
|
curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/LazyVim.sh | bash
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
"3")
|
"4")
|
||||||
echo "Installing Docker..."
|
echo "Installing Docker..."
|
||||||
if ! command -v docker >/dev/null; then
|
if ! command -v docker >/dev/null; then
|
||||||
echo "docker is NOT installed. Installing..."
|
echo "docker is NOT installed. Installing..."
|
||||||
@@ -142,86 +180,69 @@ for selection in $CHOICE; do
|
|||||||
echo "+ sleep 10" && sleep 10
|
echo "+ sleep 10" && sleep 10
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
"4")
|
"5")
|
||||||
echo "Installing Pacman Packages..."
|
echo "Installing Standard Packages via Shelly backup..."
|
||||||
# Check if pacman binary is installed
|
# Check if shelly binary is installed
|
||||||
if command -v pacman </dev/null; then
|
if ! command -v shelly >/dev/null; then
|
||||||
echo "Cannot proceed: pacman binary not found"
|
echo "Cannot proceed: shelly binary not found"
|
||||||
exit 1 # exit with an error
|
exit 1 # exit with an error
|
||||||
fi
|
fi
|
||||||
# Install pacman packages
|
# Install standard packages from shelly backup
|
||||||
# Runs local script unless it does not exit or fails
|
# Runs local script unless it does not exist or fails
|
||||||
if [[ -f "./configs/PackagesPacman.txt" ]]; then
|
if [[ -f "./configs/shelly-standard.toml" ]]; then
|
||||||
echo "Found local config"
|
echo "Found local backup"
|
||||||
cat ./configs/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm
|
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/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm; then
|
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 "--------------------------------------------------------------------"
|
||||||
echo "Failed to install Pacman packages. You can try running it manually:"
|
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/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm"
|
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 "--------------------------------------------------------------------"
|
||||||
echo "+ sleep 10" && sleep 10
|
echo "+ sleep 10" && sleep 10
|
||||||
fi
|
elif ! shelly backup --import --name shelly-standard --directory /tmp --no-confirm; then
|
||||||
;;
|
|
||||||
"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
|
|
||||||
echo "--------------------------------------------------------------------"
|
echo "--------------------------------------------------------------------"
|
||||||
echo "Failed to install prerequisite packages for Yay. You can try running it manually:"
|
echo "Failed to install Standard packages. You can try running it manually:"
|
||||||
echo "sudo pacman -S --needed --noconfirm efibootmgr sbsigntools mokutil sbctl golang fakeroot debugedit make gcc"
|
echo "shelly backup --import --name shelly-standard --directory /tmp --no-confirm"
|
||||||
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 "--------------------------------------------------------------------"
|
echo "--------------------------------------------------------------------"
|
||||||
echo "+ sleep 10" && sleep 10
|
echo "+ sleep 10" && sleep 10
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
"6")
|
"6")
|
||||||
echo "Installing GUI dependencies"
|
echo "Installing AUR Packages via Shelly backup..."
|
||||||
if command -v pacman </dev/null; then
|
# Check for shelly before installing AUR packages
|
||||||
echo "Pacman found"
|
if ! command -v shelly >/dev/null; then
|
||||||
sudo pacman -S python-pyqt6 --noconfirm --needed
|
echo "Cannot proceed: shelly binary not found"
|
||||||
|
exit 1 # Exit with an error
|
||||||
fi
|
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"
|
echo "dnf found"
|
||||||
sudo dnf install python3-pyqt6
|
sudo dnf install python3-pyqt6
|
||||||
fi
|
fi
|
||||||
if command -v apt </dev/null; then
|
if command -v apt >/dev/null; then
|
||||||
echo "apt found"
|
echo "apt found"
|
||||||
sudo apt install python3-pyqt6 -y
|
sudo apt install python3-pyqt6 -y
|
||||||
fi
|
fi
|
||||||
|
|||||||
+105
-88
@@ -6,9 +6,17 @@ if [ "$1" = "--skip-watermark" ]; then
|
|||||||
skip_watermark=true
|
skip_watermark=true
|
||||||
fi
|
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
|
if [ "$skip_watermark" = false ]; then
|
||||||
clear
|
clear
|
||||||
echo '
|
echo '
|
||||||
____ _ _ _ _ _
|
____ _ _ _ _ _
|
||||||
| __ ) _ _ __ _| |_ _(_)_ __ | | ___ | | | ___
|
| __ ) _ _ __ _| |_ _(_)_ __ | | ___ | | | ___
|
||||||
| _ \| | | | / _ | \ \ / / | _ \| |/ _ \| | |/ _ \
|
| _ \| | | | / _ | \ \ / / | _ \| |/ _ \| | |/ _ \
|
||||||
@@ -16,7 +24,7 @@ echo '
|
|||||||
|____/ \__ | \__ _|_| \_/ |_|_| |_|_|\___/|_|_|\___/
|
|____/ \__ | \__ _|_| \_/ |_|_| |_|_|\___/|_|_|\___/
|
||||||
|___/
|
|___/
|
||||||
|
|
||||||
--------------- Single Download script (Beta) ---------------
|
--------------- Single Download script ---------------
|
||||||
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE UNDER THE GPL-2.0 LICENCE,
|
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.
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||||
See the LICENCE for more detail
|
See the LICENCE for more detail
|
||||||
@@ -32,11 +40,43 @@ function error_handler() {
|
|||||||
# Trap errors
|
# Trap errors
|
||||||
trap error_handler ERR
|
trap error_handler ERR
|
||||||
|
|
||||||
# Install prerequisites
|
# Install shelly as a dependency if not present (Arch-based)
|
||||||
|
|
||||||
if command -v pacman >/dev/null; then
|
if command -v pacman >/dev/null; then
|
||||||
echo "pacman detected. Installing prerequisites"
|
# Install build prerequisites for shelly
|
||||||
sudo pacman -Syu git zsh curl wget libnewt rsync --noconfirm --needed
|
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
|
fi
|
||||||
|
|
||||||
if command -v apt >/dev/null; then
|
if command -v apt >/dev/null; then
|
||||||
@@ -50,26 +90,20 @@ fi
|
|||||||
if ! command -v whiptail >/dev/null; then
|
if ! command -v whiptail >/dev/null; then
|
||||||
echo "whiptail is not installed. Installing it now..."
|
echo "whiptail is not installed. Installing it now..."
|
||||||
|
|
||||||
if command -v pacman >/dev/null; then
|
if command -v shelly >/dev/null; then
|
||||||
echo "pacman detected. Installing prerequisites"
|
echo "shelly detected. Installing whiptail"
|
||||||
sudo pacman -S whiptail --noconfirm || { echo "Failed to install whiptail. Exiting."; exit 1; }
|
shelly install standard whiptail --no-confirm || {
|
||||||
# Reload zsh if it exists
|
echo "Failed to install whiptail. Exiting."
|
||||||
if command -v zsh -h >/dev/null; then
|
exit 1
|
||||||
source ~/.zshrc
|
}
|
||||||
fi
|
|
||||||
# Reload Bash
|
|
||||||
source ~/.bashrc
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v apt >/dev/null; then
|
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; }
|
sudo apt install whiptail -y || {
|
||||||
# Reload zsh if it exists
|
echo "Failed to install whiptail. Exiting."
|
||||||
if command -v zsh -h >/dev/null; then
|
exit 1
|
||||||
source ~/.zshrc
|
}
|
||||||
fi
|
|
||||||
# Reload Bash
|
|
||||||
source ~/.bashrc
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
@@ -77,16 +111,16 @@ fi
|
|||||||
# Options for the whiptail menu
|
# Options for the whiptail menu
|
||||||
OPTIONS=(
|
OPTIONS=(
|
||||||
1 "Run zsh setup script" OFF
|
1 "Run zsh setup script" OFF
|
||||||
2 "Run fish setup script (NOT CREATED)" ON
|
2 "Run fish setup script" ON
|
||||||
3 "Run LazyVim setup script" OFF
|
3 "Run LazyVim setup script" OFF
|
||||||
4 "Install Docker" OFF
|
4 "Install Docker" OFF
|
||||||
5 "Install Pacman Packages" ON
|
5 "Install Standard Packages (Shelly)" ON
|
||||||
6 "Install Yay and AUR Packages" ON
|
6 "Install AUR Packages (Shelly)" ON
|
||||||
7 "Install affinity with GUI" OFF
|
7 "Install affinity with GUI" OFF
|
||||||
)
|
)
|
||||||
|
|
||||||
CHOICE=$(whiptail --title "Installation Options" --checklist \
|
CHOICE=$(whiptail --title "Installation Options" --checklist \
|
||||||
"Choose components to install:" 20 78 10 \
|
"Choose components to install:" 20 78 10 \
|
||||||
"${OPTIONS[@]}" 3>&1 1>&2 2>&3)
|
"${OPTIONS[@]}" 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
exitstatus=$?
|
exitstatus=$?
|
||||||
@@ -102,7 +136,7 @@ set -eu pipefail
|
|||||||
|
|
||||||
# Process selected options
|
# Process selected options
|
||||||
for selection in $CHOICE; do
|
for selection in $CHOICE; do
|
||||||
clean_selection=$(echo $selection | tr -d '"')
|
clean_selection=$(echo "$selection" | tr -d '"')
|
||||||
case $clean_selection in
|
case $clean_selection in
|
||||||
"1")
|
"1")
|
||||||
echo "Running zsh setup script..."
|
echo "Running zsh setup script..."
|
||||||
@@ -127,7 +161,7 @@ for selection in $CHOICE; do
|
|||||||
"3")
|
"3")
|
||||||
echo "Running LazyVim setup script..."
|
echo "Running LazyVim setup script..."
|
||||||
# Runs local script unless it does not exist or fails
|
# Runs local script unless it does not exist or fails
|
||||||
if [[ -f "LazyVim.sh" ]];then
|
if [[ -f "LazyVim.sh" ]]; then
|
||||||
echo "Found local script, running..."
|
echo "Found local script, running..."
|
||||||
bash LazyVim.sh
|
bash LazyVim.sh
|
||||||
else
|
else
|
||||||
@@ -139,93 +173,76 @@ for selection in $CHOICE; do
|
|||||||
if ! command -v docker >/dev/null; then
|
if ! command -v docker >/dev/null; then
|
||||||
echo "docker is NOT installed. Installing..."
|
echo "docker is NOT installed. Installing..."
|
||||||
curl -fsSL https://get.docker.com | sh
|
curl -fsSL https://get.docker.com | sh
|
||||||
sudo usermod -aG docker $USER
|
sudo usermod -aG docker "$USER"
|
||||||
else
|
else
|
||||||
sudo usermod -aG docker $USER
|
sudo usermod -aG docker "$USER"
|
||||||
echo "Docker is already installed."
|
echo "Docker is already installed."
|
||||||
echo "+ sleep 10" && sleep 10
|
echo "+ sleep 10" && sleep 10
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
"5")
|
"5")
|
||||||
echo "Installing Pacman Packages..."
|
echo "Installing Standard Packages via Shelly backup..."
|
||||||
# Check if pacman binary is installed
|
# Check if shelly binary is installed
|
||||||
if command -v pacman </dev/null; then
|
if ! command -v shelly >/dev/null; then
|
||||||
echo "Cannot proceed: pacman binary not found"
|
echo "Cannot proceed: shelly binary not found"
|
||||||
exit 1 # exit with an error
|
exit 1 # exit with an error
|
||||||
fi
|
fi
|
||||||
# Install pacman packages
|
# Install standard packages from shelly backup
|
||||||
# Runs local script unless it does not exit or fails
|
# Runs local script unless it does not exist or fails
|
||||||
if [[ -f "./configs/PackagesPacman.txt" ]]; then
|
if [[ -f "./configs/shelly-standard.toml" ]]; then
|
||||||
echo "Found local config"
|
echo "Found local backup"
|
||||||
cat ./configs/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm
|
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/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm; then
|
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 "--------------------------------------------------------------------"
|
||||||
echo "Failed to install Pacman packages. You can try running it manually:"
|
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/PackagesPacman.txt | sudo pacman -S - --needed --noconfirm"
|
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
|
||||||
|
elif ! shelly backup --import --name shelly-standard --directory /tmp --no-confirm; then
|
||||||
|
echo "--------------------------------------------------------------------"
|
||||||
|
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 "--------------------------------------------------------------------"
|
||||||
echo "+ sleep 10" && sleep 10
|
echo "+ sleep 10" && sleep 10
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
"6")
|
"6")
|
||||||
echo "Installing Yay and Yay Packages..."
|
echo "Installing AUR Packages via Shelly backup..."
|
||||||
# Check for pacman before installing yay
|
# Check for shelly before installing AUR packages
|
||||||
if command -v pacman </dev/null; then
|
if ! command -v shelly >/dev/null; then
|
||||||
echo "Cannot proceed: Not a arch based system"
|
echo "Cannot proceed: shelly binary not found"
|
||||||
exit 1 # Exit with an error
|
exit 1 # Exit with an error
|
||||||
fi
|
fi
|
||||||
# Install yay prerequisites
|
# Install AUR packages from shelly backup
|
||||||
if ! sudo pacman -S --needed --noconfirm efibootmgr sbsigntools mokutil sbctl golang fakeroot debugedit make gcc; then
|
# 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 "--------------------------------------------------------------------"
|
||||||
echo "Failed to install prerequisite packages for Yay. You can try running it manually:"
|
echo "Failed to download shelly backup. You can try running it manually:"
|
||||||
echo "sudo pacman -S --needed --noconfirm efibootmgr sbsigntools mokutil sbctl golang fakeroot debugedit make gcc"
|
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 "--------------------------------------------------------------------"
|
||||||
exit 1 # exit with an error
|
echo "+ sleep 10" && sleep 10
|
||||||
fi
|
elif ! shelly backup --import --name shelly-aur --directory /tmp --no-confirm; then
|
||||||
# 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 "--------------------------------------------------------------------"
|
||||||
echo "Failed to clone yay repository. You can try running it manually:"
|
echo "Failed to install AUR packages. You can try running it manually:"
|
||||||
echo "git clone https://aur.archlinux.org/yay.git /tmp/yay_install"
|
echo "shelly backup --import --name shelly-aur --directory /tmp --no-confirm"
|
||||||
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 "--------------------------------------------------------------------"
|
echo "--------------------------------------------------------------------"
|
||||||
echo "+ sleep 10" && sleep 10
|
echo "+ sleep 10" && sleep 10
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
"7")
|
"7")
|
||||||
echo "Installing GUI dependencies"
|
echo "Installing GUI dependencies"
|
||||||
if command -v pacman </dev/null; then
|
if command -v shelly >/dev/null; then
|
||||||
echo "Pacman found"
|
echo "shelly found"
|
||||||
sudo pacman -S python-pyqt6 --noconfirm --needed
|
shelly install standard python-pyqt6 --no-confirm
|
||||||
fi
|
fi
|
||||||
if command -v dnf </dev/null; then
|
if command -v dnf >/dev/null; then
|
||||||
echo "dnf found"
|
echo "dnf found"
|
||||||
sudo dnf install python3-pyqt6
|
sudo dnf install python3-pyqt6
|
||||||
fi
|
fi
|
||||||
if command -v apt </dev/null; then
|
if command -v apt >/dev/null; then
|
||||||
echo "apt found"
|
echo "apt found"
|
||||||
sudo apt install python3-pyqt6 -y
|
sudo apt install python3-pyqt6 -y
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
skip_watermark=false
|
skip_watermark=false
|
||||||
if [ "$1" = "--skip-watermark" ]; then
|
if [ "$1" = "--skip-watermark" ]; then
|
||||||
skip_watermark=true
|
skip_watermark=true
|
||||||
@@ -116,14 +124,14 @@ echo "Changing your shell to $zsh..."
|
|||||||
|
|
||||||
if ! echo "+ sudo -k chsh -s "$zsh" "$USER"" && sudo -k chsh -s "$zsh" "$USER"; then # -k forces password prompt
|
if ! echo "+ sudo -k chsh -s "$zsh" "$USER"" && sudo -k chsh -s "$zsh" "$USER"; then # -k forces password prompt
|
||||||
echo "Next command may fail."
|
echo "Next command may fail."
|
||||||
echo "+ chsh -s $"(which zsh)" "$USER""
|
echo "+ chsh -s \"$(which zsh)\" \"$USER\""
|
||||||
chsh -s $"(which zsh)" "$USER" # run chsh normally may fail
|
chsh -s "$(which zsh)" "$USER" # run chsh normally may fail
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if the shell change was successful
|
# Check if the shell change was successful
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "chsh command unsuccessful. Change your default shell manually:"
|
echo "chsh command unsuccessful. Change your default shell manually:"
|
||||||
echo "chsh -s $"(which zsh)" "$USER""
|
echo "chsh -s \"$(which zsh)\" \"$USER\""
|
||||||
else
|
else
|
||||||
export SHELL="$zsh"
|
export SHELL="$zsh"
|
||||||
echo "Shell successfully changed to '$zsh'."
|
echo "Shell successfully changed to '$zsh'."
|
||||||
|
|||||||
Reference in New Issue
Block a user