259 lines
9.3 KiB
Bash
Executable file
259 lines
9.3 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
function askYesNoQuestion
|
|
{
|
|
yad \
|
|
--image="$1" \
|
|
--title="$2" \
|
|
--window-icon="$3" \
|
|
--geometry=700x100 \
|
|
--button=No:0 \
|
|
--button=Yes:1 \
|
|
--text-align=center \
|
|
--center \
|
|
--text "$4";
|
|
local code=$?
|
|
if [ "$code" -eq 252 ]; then
|
|
# The user doesn't want to continue here, they pressed the X button
|
|
exit 0
|
|
elif [ "$code" -eq 1 ]; then
|
|
return 1
|
|
# In case there is an unknown exit code, we assume No
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
function askPackageSelectionQuestion
|
|
{
|
|
askPackageSelectionQuestion_out=()
|
|
|
|
local stdout
|
|
stdout=$(yad \
|
|
--image="$1" \
|
|
--title="$2" \
|
|
--window-icon="$3" \
|
|
--text "$4" \
|
|
--geometry=600x500 \
|
|
--list \
|
|
--checklist \
|
|
--column=Install \
|
|
--column="Package:hd" \
|
|
--column="$5" \
|
|
--center < "$6")
|
|
|
|
if [ "$?" -eq 252 ]; then
|
|
# The user doesn't want to continue here, they pressed the X button
|
|
exit 0
|
|
fi
|
|
|
|
while IFS= read -r line
|
|
do
|
|
local checked="$(echo "$line" | cut -d '|' -f1)"
|
|
local packages="$(echo "$line" | cut -d '|' -f2)"
|
|
if [ "$checked" == "TRUE" ]; then
|
|
for package in $packages
|
|
do
|
|
askPackageSelectionQuestion_out+=("$package")
|
|
done
|
|
fi
|
|
done < <(printf '%s\n' "$stdout")
|
|
}
|
|
|
|
function isOnline
|
|
{
|
|
# Because this can never be offline, right?
|
|
wget -q --spider http://garudalinux.org
|
|
return $?
|
|
}
|
|
|
|
function upgrade2ultimate
|
|
{
|
|
PACKAGES=()
|
|
# WARNING: Currently not executed in pamac mode!
|
|
PREPARE=()
|
|
SETUP=()
|
|
|
|
HAS_PAMAC_INSTALLER=false
|
|
if [ -x "$(command -v pamac-installer)" ]; then
|
|
HAS_PAMAC_INSTALLER=true
|
|
fi
|
|
|
|
if ! askYesNoQuestion "font-manager" "Upgrade to ULTIMATE" "update" "Do you need cjk font support (fixes missing characters)?"; then
|
|
PACKAGES+=("noto-fonts-cjk")
|
|
fi
|
|
|
|
if ! askYesNoQuestion "printer" "Upgrade to ULTIMATE" "update" "Do you need Printer, Scanner and Samba Support?"; then
|
|
if pacman -Qs plasma-workspace > /dev/null ; then
|
|
PACKAGES+=("printer-support"
|
|
"scanner-support"
|
|
"samba-support"
|
|
"kdenetwork-filesharing"
|
|
"print-manager"
|
|
"skanlite")
|
|
else
|
|
PACKAGES+=("printer-support"
|
|
"scanner-support"
|
|
"samba-support"
|
|
"gvfs-smb"
|
|
"simple-scan")
|
|
fi
|
|
fi
|
|
|
|
if ! askYesNoQuestion "wallpaper" "Upgrade to ULTIMATE" "update" "Do you want to install additional Garuda wallpapers?"; then
|
|
PACKAGES+=("garuda-wallpapers-extra")
|
|
fi
|
|
|
|
if ! askYesNoQuestion "AppImageLauncher" "Upgradpe to ULTIMATE" "update" "What about Snaps, Flatpak, Appimage and firmware update support?"; then
|
|
if pacman -Qs pamac-aur > /dev/null ; then
|
|
PREPARE+=("sudo pacman --noconfirm -R pamac-aur")
|
|
fi
|
|
if pacman -Qs pamac-tray-appindicator > /dev/null ; then
|
|
PREPARE+=("pacman --noconfirm -R pamac-tray-appindicator")
|
|
fi
|
|
PACKAGES+=("pamac-all"
|
|
"appimagelauncher"
|
|
"fwupd"
|
|
"gnome-firmware"
|
|
"apparmor"
|
|
"snapd"
|
|
"snapd-glib"
|
|
"flatpak")
|
|
SETUP+=("systemctl enable --now snapd.socket"
|
|
"systemctl enable --now apparmor.service"
|
|
"systemctl enable --now snapd.apparmor.service")
|
|
fi
|
|
|
|
if pacman -Qs plasma-desktop > /dev/null ; then
|
|
if ! askYesNoQuestion "plasmashell" "Upgrade to ULTIMATE" "update" "Do you want to install additional KDE applications?"; then
|
|
PACKAGES+=("elisa"
|
|
"khelpcenter"
|
|
"krdc"
|
|
"krfb"
|
|
"kompare"
|
|
"krita"
|
|
"krename"
|
|
"ksystemlog"
|
|
"khotkeys"
|
|
"drkonqi"
|
|
"kscreen"
|
|
"kgamma5"
|
|
"ksshaskpass"
|
|
"kwrited"
|
|
"kmouth"
|
|
"lokalize"
|
|
"kup"
|
|
"kmag"
|
|
"kimtoy"
|
|
"kleopatra"
|
|
"qt5-imageformats"
|
|
"kimageformats"
|
|
"kdeplasma-addons"
|
|
"plasma-thunderbolt"
|
|
"plasma-vault"
|
|
"plasma-disks"
|
|
"plasma-meta"
|
|
"vlc")
|
|
fi
|
|
fi
|
|
|
|
|
|
if pacman -Qs gnome-shell > /dev/null ; then
|
|
if ! askYesNoQuestion "gnome-shell" "Upgrade to ULTIMATE" "update" "Do you want to install additional GNOME applications?"; then
|
|
PACKAGES+=("gpaste"
|
|
"eog-plugins"
|
|
"grilo-plugins"
|
|
"seahorse-nautilus"
|
|
"gtkhash-nautilus"
|
|
"gnome-logs"
|
|
"gnome-remote-desktop"
|
|
"gnome-sound-recorder"
|
|
"vino"
|
|
"rygel"
|
|
"shotwell"
|
|
"lollypop")
|
|
fi
|
|
fi
|
|
|
|
askPackageSelectionQuestion 'libreoffice-main' "Upgrade to ULTIMATE" 'update' "What Office suites do you want?" "Office" "/usr/lib/setup-assistant/office.txt"
|
|
|
|
# Absolute HACK!
|
|
if [[ "${askPackageSelectionQuestion_out[@]}" =~ "libreoffice-fresh" ]] && [[ "${askPackageSelectionQuestion_out[@]}" =~ "libreoffice-still" ]] ; then
|
|
askPackageSelectionQuestion_out=( "${askPackageSelectionQuestion_out[@]/libreoffice-still}" )
|
|
fi
|
|
|
|
PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}")
|
|
|
|
askPackageSelectionQuestion 'firefox' "Upgrade to ULTIMATE" 'update' "What extra browsers do you want?" "Applications" "/usr/lib/setup-assistant/browsers.txt"
|
|
PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}")
|
|
|
|
askPackageSelectionQuestion 'telegram-desktop' "Upgrade to ULTIMATE" 'update' "What communication software do you want?" "Applications" "/usr/lib/setup-assistant/communication.txt"
|
|
PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}")
|
|
|
|
askPackageSelectionQuestion 'thunderbird' "Upgrade to ULTIMATE" 'update' "What email clients do you want?" "Applications" "/usr/lib/setup-assistant/mail.txt"
|
|
PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}")
|
|
|
|
askPackageSelectionQuestion 'audacity' "Upgrade to ULTIMATE" 'update' "What audio software do you want?" "Applications" "/usr/lib/setup-assistant/audio.txt"
|
|
PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}")
|
|
|
|
askPackageSelectionQuestion 'kdenlive' "Upgrade to ULTIMATE" 'update' "What video software do you want?" "Applications" "/usr/lib/setup-assistant/video.txt"
|
|
PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}")
|
|
|
|
askPackageSelectionQuestion 'gimp' "Upgrade to ULTIMATE" 'update' "What graphics software do you want?" "Applications" "/usr/lib/setup-assistant/graphics.txt"
|
|
PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}")
|
|
|
|
askPackageSelectionQuestion 'gimp' "Upgrade to ULTIMATE" 'update' "What multimedia software do you want?" "Applications" "/usr/lib/setup-assistant/multimedia.txt"
|
|
PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}")
|
|
|
|
askPackageSelectionQuestion 'code' "Upgrade to ULTIMATE" 'update' "What developement software do you want?" "Applications" "/usr/lib/setup-assistant/development.txt"
|
|
PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}")
|
|
|
|
# Absolute HACK!
|
|
if [[ "${askPackageSelectionQuestion_out[@]}" =~ "podman" ]]; then
|
|
SETUP+=("systemctl enable --now podman.socket")
|
|
fi
|
|
|
|
askPackageSelectionQuestion 'virtualbox' "Upgrade to ULTIMATE" 'update' "What virtualization software do you want?" "Applications" "/usr/lib/setup-assistant/virtualization.txt"
|
|
PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}")
|
|
|
|
# Absolute HACK!
|
|
if [[ "${askPackageSelectionQuestion_out[@]}" =~ "virt-manager-meta" ]] || [[ "${askPackageSelectionQuestion_out[@]}" =~ "gnome-boxes" ]]; then
|
|
SETUP+=("systemctl enable --now libvirtd")
|
|
fi
|
|
|
|
if [ "$HAS_PAMAC_INSTALLER" = "true" ]; then
|
|
# Pamac can correctly handle the pamac-aur and pamac-all conflict, PREPARE can be ignored here.
|
|
if ! pamac-installer ${PACKAGES[@]} ; then
|
|
exit 0
|
|
fi
|
|
pkexec bash -c "$( IFS=$'\n'; echo "${SETUP[*]}" )"
|
|
else
|
|
alacritty -e bash /usr/lib/setup-assistant/apply.sh <( IFS=$'\n'; echo "${PREPARE[*]}" ) <(printf '%s\n' "${PACKAGES[@]}") <( IFS=$'\n'; echo "${SETUP[*]}" )
|
|
fi
|
|
}
|
|
|
|
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 &
|
|
|
|
while ! isOnline
|
|
do
|
|
if askYesNoQuestion "update" "Setup Assistant" "update" "No internet connection available, try again?"; then
|
|
exit 0
|
|
fi
|
|
done
|
|
|
|
if ! askYesNoQuestion "update" "Setup Assistant" "update" "Do you want to get a recent mirrorlist?"; then
|
|
reflector-simple >/dev/null 2>&1
|
|
fi
|
|
|
|
if ! askYesNoQuestion "update" "Setup Assistant" "update" "Update the system? (recommended!)"; then
|
|
# yy because we may have updated the mirrorlist in the last step
|
|
alacritty -e pkexec pacman "-Syyu"
|
|
fi
|
|
|
|
if ! askYesNoQuestion "update" "Setup Assistant" "update" "Upgrade to Ultimate? (You can select which apps you want!)"; then
|
|
upgrade2ultimate
|
|
fi
|