#!/bin/bash if [ "$EUID" -ne 0 ] then echo "run FE2TY using admin perms." 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 # By RSCC ## Unlicense main() { case "$1" in i) ty.install ;; r) ty.revert ;; *) printf "usage:\nFE2TY i - install TyrianOS\nFE2TY r - uninstall TyrianOS and revert to old deployment\n" ;; esac } ty.install() { read -rp "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. press [ENTER] to agree, spam [CTRL] + [C] to quit." limsg s 1 i "Getting current deployment origin ref and backing up..." 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..." 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..." cp -vr system_files/etc/skel/* /var/home/*/ limsg s 2 i "Installing skeleton to all users (hidden)..." cp -vr system_files/etc/skel/.* /var/home/*/ popd || exit 1 popd || exit 1 limsg s 2 i "Removing temporary directory again..." rm -rv 87F9W3845GFG5R894OSEG limsg s 3 i "Switching OS base..." rpm-ostree rebase ostree-unverified-registry:ghcr.io/icycoide/tyrianos:latest limsg s 4 i "Calling to reboot..." pkexec reboot } ty.revert() { limsg s 1 i "Looking for backed up remote reference file..." 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..." rpm-ostree rebase "$REF_BACKUP" || limsg.quit s 2 e "Could not rebase back to original ref" limsg s 3 i "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." read -pr "Press [ENTER] to reboot, [CTRL] + [C] to abort. We're done from here." 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 echo -e "[FE2TY(LiMSG)/${BCyan}${lmsg_one} ${lmsg_two}${Color_Off}/${lmsg_three}${Color_Off}]: $4 | QUIT!" exit 1 } installer.colours main "$1"