#!/bin/bash function goto { label=$1 cmd=$(sed -n "/^:[[:blank:]][[:blank:]]*${label}/{:a;n;p;ba};" $0 | grep -v ':$') eval "$cmd" exit } function upgrade2ultimate { rm -rf /tmp/setup-assistant mkdir -p /tmp/setup-assistant clear echo "We are going to ask you several questions so you can decide if you want a piece of software or not." echo "Do you need asisan font support? (y,n)" echo "" read asian if [ $asian = "y" ]; then echo "garuda-asian" >> /tmp/setup-assistant/pkgs.txt fi clear echo "What about Snaps, Flatpak & Appimage support? (y,n)" echo "This enables you to use software not available in our repos." echo "If an application is available we advise to use the native version!" read snap if [ $snap = "y" ]; then echo "sudo pacman -R pamac-aur pamac-tray-appindicator" >> /tmp/setup-assistant/prepare.sh echo "pamac-all appimagelauncher fwupd apparmor snapd snapd-glib flatpak" >> /tmp/setup-assistant/pkgs.txt echo "sudo systemctl enable --now snapd.socket" >> /tmp/setup-assistant/setup.sh echo "sudo systemctl enable --now apparmor.service" >> /tmp/setup-assistant/setup.sh echo "sudo systemctl enable --now snapd.apparmor.service" >> /tmp/setup-assistant/setup.sh fi clear echo "Do you need gaming applications installed? 🎮 (y,n)" echo "This will install the Garuda Gamer app in which every component needed to game can be enabled." echo "" read gaming if [ $gaming = "y" ]; then echo "garuda-gamer" >> /tmp/setup-assistant/pkgs.txt echo "systemctl --user enable --now gamemoded >/dev/null 2>&1 &" >> /tmp/setup-assistant/setup.sh echo "sudo setup_dxvk install 2>&1 &" >> /tmp/setup-assistant/setup.sh fi clear echo "What about complete audio support? (y,n)" echo "Saying yes will install PulseAudio, Alsa & Pipewire packages with its companion apps." echo "" read audio if [ $audio = "y" ]; then echo "garuda-alsa garuda-pulse garuda-pipewire pulseaudio-ctl playerctl" >> /tmp/setup-assistant/pkgs.txt echo "sudo systemctl enable --now bluetooth-autoconnect" >> /tmp/setup-assistant/setup.sh fi clear echo "Are you printing and scanning with this machine? 🖨" echo "Also, do you need Samba support? (y,n)" echo "" read gaming if [ $gaming = "y" ]; then echo "garuda-settings-samba system-config-samba garuda-printer garuda-scanner" >> /tmp/setup-assistant/pkgs.txt fi clear : office-selection echo "Now you are free to choose your favorite office suite." echo "There are quite a lot of them to choose from. A guideline for new users:" echo "LibreOffice is the most used and complete office application in the Linux world." echo "If a simpler word processor is fine for you Abiword might also be a good choice." echo "" echo "1) LibreOffice" echo "2) Onlyoffice" echo "3) WPS Office" echo "4) Free Office" echo "5) Yozo Office" echo "6) Calligra Office" echo "7) Abiword" read office if [ $office = "1" ]; then echo "libreoffice-fresh libmythes" >> /tmp/setup-assistant/pkgs.txt elif [ $office = "2" ]; then echo "onlyoffice-bin" >> /tmp/setup-assistant/pkgs.txt elif [ $office = "3" ]; then echo "wps-office wps-office-mime ttf-wps-fonts" >> /tmp/setup-assistant/pkgs.txt elif [ $office = "4" ]; then echo "freeoffice" >> /tmp/setup-assistant/pkgs.txt elif [ $office = "5" ]; then echo "yozo-office yozo-office-fonts" >> /tmp/setup-assistant/pkgs.txt elif [ $office = "6" ]; then echo "calligra" >> /tmp/setup-assistant/pkgs.txt elif [ $office = "7" ]; then echo "abiword" >> /tmp/setup-assistant/pkgs.txt else echo "Thats not a valid choice! ❌" goto "office-selection" fi clear echo "This question is about general desktop applications. ☁️" echo "It contains apps such as Telegram, Nextcloud-client & Syncthing." echo "Are these going to be installed? (y,n)" read general if [ $general = "y" ]; then echo "telegram-desktop joplin murmur mumble discord streamlink-twitch-gui syncthing-gtk nextcloud-client firefox-extension-bitwarden fractal firefox-extension-xdm-browser-monitor" >> /tmp/setup-assistant/pkgs.txt fi : virt-selection clear echo "Are you rather a fan of virtualbox or virt-manager? 💻" echo "" echo "1) Virtualbox all the way!" echo "2) Id rather choose Virt-manager." read virt if [ $virt = "1" ]; then echo "garuda-virtualbox" >> /tmp/setup-assistant/pkgs.txt echo "sudo usermod -aG vboxusers $USER" >> /tmp/setup-assistant/setup.sh elif [ $virt = "2" ]; then echo "garuda-virt-manager" >> /tmp/setup-assistant/pkgs.txt echo "sudo systemctl enable --now libvirtd" >> /tmp/setup-assistant/setup.sh echo "sudo usermod -aG libvirt $USER" >> /tmp/setup-assistant/setup.sh echo "sudo usermod -aG kvm $USER" >> /tmp/setup-assistant/setup.sh else echo "Thats not a valid choice! ❌" goto "virt-selection" fi clear sh /tmp/setup-assistant/prepare.sh cat /tmp/setup-assistant/pkgs.txt | sed '/^$/d;s/[[:blank:]]//g' > /tmp/setup-assistant/pkgs-install.txt sudo pacman --needed -S - < /tmp/setup-assistant/pkgs-install.txt sh /tmp/setup-assistant/setup.sh rm -rf /tmp/setup-assistant } systemctl --user enable psd >/dev/null 2>&1 & systemctl --user start psd >/dev/null 2>&1 & libinput-gestures-setup autostart >/dev/null 2>&1 & libinput-gestures-setup start >/dev/null 2>&1 & : start clear echo "What do you want to do?" echo "" echo "1) Get initial mirrorlist & download list of packages" echo "2) Update the system" echo "3) Enable systemwide adblocking / HiDPI mode" echo "4) Disable CPU migitations / change boot options" echo "5) Install additional (Ultimate) packages by choosing which ones you need" echo "" echo "6) Exit" read selection if [ $selection = "1" ]; then clear echo "Select the right mirrors in Reflector Simple!" echo "If no mirrors were found select german servers. ☝🏻" reflector-simple >/dev/null 2>&1 sudo pacman -Syy goto "start" elif [ $selection = "2" ]; then clear sudo pacman -Syu goto "start" elif [ $selection = "3" ]; then clear echo "Find it in the settings tab. 🖥" garuda-welcome >/dev/null 2>&1 goto "start" elif [ $selection = "4" ]; then clear echo "Disabling CPU mitiations increases performance but can possibly lead to security issues." echo "Use it with caution! 🛑" sudo garuda-boot-options >/dev/null 2>&1 goto "start" elif [ $selection = "5" ]; then upgrade2ultimate elif [ $selection = "6" ]; then exit else "Thats not a valid choice! ❌" goto "start" fi