246 lines
8.3 KiB
Bash
Executable file
246 lines
8.3 KiB
Bash
Executable file
#!/bin/bash
|
|
if [ "$EUID" -ne 0 ]
|
|
then echo "run FE2TY using admin perms."
|
|
exit
|
|
fi
|
|
|
|
if [ ! -f /bin/kdialog ]
|
|
then echo "install KDialog before running."
|
|
exit
|
|
fi
|
|
|
|
if [ ! -f /bin/git ]
|
|
then echo "install git before running."
|
|
exit
|
|
fi
|
|
|
|
if [ ! -f /bin/jq ]
|
|
then echo "install jq before running."
|
|
exit
|
|
fi
|
|
|
|
if [ ! -f /bin/qdbus-qt6 ]
|
|
then echo "install qdbus-qt6 before running."
|
|
exit
|
|
fi
|
|
|
|
# By RSCC
|
|
## Unlicense
|
|
|
|
main() {
|
|
case "$(kdialog --combobox "Choose an option:" "Install TyrianOS" "Revert TyrianOS installation")" in
|
|
"Install TyrianOS") ty.install ;;
|
|
"Revert TyrianOS installation") ty.revert ;;
|
|
*) echo "OK!" ;;
|
|
esac
|
|
}
|
|
|
|
ty.install() {
|
|
kdialog --title "FE2TY - Installing TyrianOS" --warningcontinuecancel "By pressing enter, you agree that this tool is not considered an official tool to install TyrianOS and should only be used as a last resort from an existing Fedora installation. Therefore, the creators of this script have absolutely no responsibility in the case of something happening, as it is very experimental. Do you wish to continue?" || exit 1
|
|
dbusRef=`kdialog --progressbar "Initializing" 100`
|
|
limsg s 1 i "Getting current deployment origin ref and backing up..."
|
|
qdbus-qt6 $dbusRef Set "" value 1
|
|
qdbus-qt6 $dbusRef setLabelText "Backing up original ref"
|
|
rpm-ostree status --booted --json | jq -r '.deployments[] | select(.booted) | ."container-image-reference"' > /etc/FE2TY-BURR.txt || limsg.quit s 1 e "Command failed. Do you have permission to write to /etc/ ?"
|
|
limsg s 2 i "Cloning to temporary directory..."
|
|
qdbus-qt6 $dbusRef Set "" value 20
|
|
qdbus-qt6 $dbusRef setLabelText "Cloning TyrianOS source to temporary repository"
|
|
cd "$HOME" || exit 1
|
|
mkdir -v "$HOME"/87F9W3845GFG5R894OSEG || true
|
|
pushd "$HOME"/87F9W3845GFG5R894OSEG || exit 1
|
|
git clone https://github.com/Icycoide/TyrianOS || limsg.quit s 2 e "Failed to clone"
|
|
pushd TyrianOS/ || exit
|
|
limsg s 2 i "Installing skeleton to all users..."
|
|
qdbus-qt6 $dbusRef Set "" value 40
|
|
qdbus-qt6 $dbusRef setLabelText "Installing skeleton to all users..."
|
|
cp -vr system_files/etc/skel/* /var/home/*/
|
|
limsg s 2 i "Installing skeleton to all users (hidden)..."
|
|
qdbus-qt6 $dbusRef Set "" value 60
|
|
cp -vr system_files/etc/skel/.* /var/home/*/
|
|
popd || exit 1
|
|
popd || exit 1
|
|
limsg s 2 i "Removing temporary directory again..."
|
|
qdbus-qt6 $dbusRef Set "" value 75
|
|
qdbus-qt6 $dbusRef setLabelText "Removing temporary directory"
|
|
rm -rv 87F9W3845GFG5R894OSEG
|
|
limsg s 3 i "Switching OS base..."
|
|
qdbus-qt6 $dbusRef Set "" value 90
|
|
qdbus-qt6 $dbusRef setLabelText "Finally rebasing to TyrianOS"
|
|
rpm-ostree rebase ostree-unverified-registry:ghcr.io/icycoide/tyrianos:latest
|
|
qdbus-qt6 $dbusRef Set "" value 100
|
|
sleep 3
|
|
qdbus-qt6 $dbusRef setLabelText "Rebooting..."
|
|
sleep 1
|
|
qdbus-qt6 $dbusRef Set "" value 90
|
|
sleep 1
|
|
qdbus-qt6 $dbusRef Set "" value 80
|
|
sleep 1
|
|
qdbus-qt6 $dbusRef Set "" value 70
|
|
sleep 1
|
|
qdbus-qt6 $dbusRef Set "" value 60
|
|
sleep 1
|
|
qdbus-qt6 $dbusRef Set "" value 50
|
|
sleep 1
|
|
qdbus-qt6 $dbusRef Set "" value 40
|
|
sleep 1
|
|
qdbus-qt6 $dbusRef Set "" value 30
|
|
sleep 1
|
|
qdbus-qt6 $dbusRef Set "" value 20
|
|
sleep 1
|
|
qdbus-qt6 $dbusRef Set "" value 10
|
|
sleep 1
|
|
qdbus-qt6 $dbusRef setLabelText "Rebooting..."
|
|
qdbus-qt6 $dbusRef close
|
|
limsg s 4 i "Calling to reboot..."
|
|
pkexec reboot
|
|
}
|
|
|
|
ty.revert() {
|
|
kdialog --title "FE2TY - Reverting install" --warningcontinuecancel "You are about to revert the installation of TyrianOS. Continue?" || exit 1
|
|
dbusRef=`kdialog --progressbar "Initializing" 4`
|
|
limsg s 1 i "Looking for backed up remote reference file..."
|
|
qdbus-qt6 $dbusRef Set "" value 1
|
|
qdbus-qt6 $dbusRef setLabelText "Searching for original remote ref"
|
|
cat /etc/FE2TY-BURR.txt || limsg.quit s 1 e "The backed up ref could not be found."
|
|
# shellcheck disable=SC2155
|
|
export REF_BACKUP=$(cat /etc/FE2TY-BURR.txt)
|
|
limsg s 2 i "Attempting rebase..."
|
|
qdbus-qt6 $dbusRef Set "" value 2
|
|
qdbus-qt6 $dbusRef setLabelText "Attempting rebase"
|
|
rpm-ostree rebase "$REF_BACKUP" || limsg.quit s 2 e "Could not rebase back to original ref"
|
|
limsg s 3 i "Force deploying image..."
|
|
qdbus-qt6 $dbusRef Set "" value 3
|
|
qdbus-qt6 $dbusRef setLabelText "Force deploying image"
|
|
ostree admin deploy "$REF_BACKUP" || limsg s 3 w "Unable to force the deployment of the original ref, but it might still have succeeded regardless."
|
|
qdbus-qt6 $dbusRef Set "" value 4
|
|
qdbus-qt6 $dbusRef setLabelText "Rebooting..."
|
|
qdbus $dbusRef close
|
|
reboot
|
|
}
|
|
|
|
function installer.colours() {
|
|
# Reset
|
|
Color_Off='\033[0m' # Text Reset
|
|
|
|
# Regular Colors
|
|
export Black='\033[0;30m' # Black
|
|
export Red='\033[0;31m' # Red
|
|
export Green='\033[0;32m' # Green
|
|
export Yellow='\033[0;33m' # Yellow
|
|
export Blue='\033[0;34m' # Blue
|
|
export Purple='\033[0;35m' # Purple
|
|
export Cyan='\033[0;36m' # Cyan
|
|
export White='\033[0;37m' # White
|
|
|
|
# Bold
|
|
export BBlack='\033[1;30m' # Black
|
|
export BRed='\033[1;31m' # Red
|
|
export BGreen='\033[1;32m' # Green
|
|
export BYellow='\033[1;33m' # Yellow
|
|
export BBlue='\033[1;34m' # Blue
|
|
export BPurple='\033[1;35m' # Purple
|
|
export BCyan='\033[1;36m' # Cyan
|
|
export BWhite='\033[1;37m' # White
|
|
|
|
# Underline
|
|
export UBlack='\033[4;30m' # Black
|
|
export URed='\033[4;31m' # Red
|
|
export UGreen='\033[4;32m' # Green
|
|
export UYellow='\033[4;33m' # Yellow
|
|
export UBlue='\033[4;34m' # Blue
|
|
export UPurple='\033[4;35m' # Purple
|
|
export UCyan='\033[4;36m' # Cyan
|
|
export UWhite='\033[4;37m' # White
|
|
|
|
# Background
|
|
export On_Black='\033[40m' # Black
|
|
export On_Red='\033[41m' # Red
|
|
export On_Green='\033[42m' # Green
|
|
export On_Yellow='\033[43m' # Yellow
|
|
export On_Blue='\033[44m' # Blue
|
|
export On_Purple='\033[45m' # Purple
|
|
export On_Cyan='\033[46m' # Cyan
|
|
export On_White='\033[47m' # White
|
|
|
|
# High Intensity
|
|
export IBlack='\033[0;90m' # Black
|
|
export IRed='\033[0;91m' # Red
|
|
export IGreen='\033[0;92m' # Green
|
|
export IYellow='\033[0;93m' # Yellow
|
|
export IBlue='\033[0;94m' # Blue
|
|
export IPurple='\033[0;95m' # Purple
|
|
export ICyan='\033[0;96m' # Cyan
|
|
export IWhite='\033[0;97m' # White
|
|
|
|
# Bold High Intensity
|
|
export BIBlack='\033[1;90m' # Black
|
|
export BIRed='\033[1;91m' # Red
|
|
export BIGreen='\033[1;92m' # Green
|
|
export BIYellow='\033[1;93m' # Yellow
|
|
export BIBlue='\033[1;94m' # Blue
|
|
export BIPurple='\033[1;95m' # Purple
|
|
export BICyan='\033[1;96m' # Cyan
|
|
export BIWhite='\033[1;97m' # White
|
|
|
|
# High Intensity backgrounds
|
|
export On_IBlack='\033[0;100m' # Black
|
|
export On_IRed='\033[0;101m' # Red
|
|
export On_IGreen='\033[0;102m' # Green
|
|
export On_IYellow='\033[0;103m' # Yellow
|
|
export On_IBlue='\033[0;104m' # Blue
|
|
export On_IPurple='\033[0;105m' # Purple
|
|
export On_ICyan='\033[0;106m' # Cyan
|
|
export On_IWhite='\033[0;107m' # White
|
|
echo -e "${Purple}[i] The colour variables have been set.${Color_Off}"
|
|
}
|
|
|
|
|
|
limsg() {
|
|
export CHECKUSERINPUT
|
|
case $1 in
|
|
s)
|
|
lmsg_one="STAGE"
|
|
;;
|
|
|
|
esac
|
|
lmsg_two=$2
|
|
case $3 in
|
|
i)
|
|
lmsg_three="${BBlue}INFO"
|
|
;;
|
|
w)
|
|
lmsg_three="${BYellow}WARN"
|
|
;;
|
|
e)
|
|
lmsg_three="${BRed}ERRR"
|
|
;;
|
|
*)
|
|
lmsg_three=$3
|
|
;;
|
|
esac
|
|
echo -e "[FE2TY(LiMSG)/${BCyan}${lmsg_one} ${lmsg_two}${Color_Off}/${lmsg_three}${Color_Off}]: $4"
|
|
export ADD
|
|
}
|
|
|
|
limsg.quit() {
|
|
case $1 in
|
|
s)
|
|
lmsg_one="STAGE"
|
|
;;
|
|
|
|
esac
|
|
lmsg_two=$2
|
|
case $3 in
|
|
e)
|
|
lmsg_three="${BRed}ERRR"
|
|
;;
|
|
*)
|
|
lmsg_three=$3
|
|
;;
|
|
esac
|
|
kdialog --error "$4"
|
|
exit 1
|
|
}
|
|
|
|
installer.colours
|
|
main "$1"
|