#!/bin/bash
if [ "$UID" == "0" ]
then
	echo "Do not run this as root."
	exit 1
fi
set -xe
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y

#Setup Aramis repository
read -p "Do you wish to add the Aramis repositories to software sources and download Flatpak 1.16.1? [Y/n] " ans
if [ "$ans" == "Y" ] || [ "$ans" == "y" ]
then
	sudo bash -c 'echo "deb [trusted=yes] https://www.foleosoft.com/firmware/aramis/amd64 ./" > /etc/apt/sources.list.d/aramis.list'
	sudo apt update
	sudo apt install flatpak -y
	export PATH=$PATH:/opt/aramis/flatpak/1.16.1/bin/
fi

#Setup Flatpak Portal service
read -p "Do you wish to set up the Flatpak Portal service? [Y/n] " ans
if [ "$ans" == "Y" ] || [ "$ans" == "y" ]
then
	echo '[Unit]
Description=Flatpak Portal

[Service]
ExecStart=/opt/aramis/flatpak/1.16.1/libexec/flatpak-portal -r
Restart=always

[Install]
WantedBy=default.target
'>~/.config/systemd/user/flatpak-portal.service
	systemctl --user daemon-reload
	systemctl --user enable flatpak-portal.service
	systemctl --user start flatpak-portal.service
fi

#Installing steam-devices
sudo wget https://raw.githubusercontent.com/ValveSoftware/steam-devices/refs/heads/master/60-steam-input.rules \
        -O /lib/udev/rules.d/60-steam-input.rules \
	--no-check-certificate
sudo wget https://raw.githubusercontent.com/ValveSoftware/steam-devices/refs/heads/master/60-steam-vr.rules \
        -O /lib/udev/rules.d/60-steam-vr.rules \
	--no-check-certificate
sudo udevadm control --reload-rules
sudo udevadm trigger

#Installing com.valvesoftware.Steam
set +e
flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak --user remote-modify --no-gpg-verify flathub
flatpak --user install -y com.valvesoftware.Steam
flatpak --user override --reset com.valvesoftware.Steam
echo '[Desktop Entry]
Name=Steam
Comment=Application for managing and playing games on Steam
Exec=/opt/aramis/flatpak/1.16.1/bin/flatpak --user run com.valvesoftware.Steam
Icon=~/.local/share/flatpak/app/com.valvesoftware.Steam/x86_64/stable/active/export/share/icons/hicolor/256x256/apps/com.valvesoftware.Steam.png
Terminal=true
Type=Application
Categories=Network;FileTransfer;Game;
'>~/Desktop/com.valvesoftware.Steam.desktop
set -e

#Do you want to install external
read -p "Do you wish to add support for external game drives? [Y/n] " ans
if [ "$ans" == "Y" ] || [ "$ans" == "y" ]
then
	drives=$(ls /media/$USER/ | xargs)
	count=$(echo $drives | awk '{print NF}')
	iter=1
	while [ "$iter" != "$(($count + 1))" ]
	do
		drive=$(echo $drives | cut -d " " -f $iter)
		flatpak --user override --filesystem="/media/$USER/$drive:rw" com.valvesoftware.Steam
		iter=$(($iter+1))
	done
fi

#Installing gay.pancake.lsfg-vk
read -p "Do you wish to install Lossless Scaling? [Y/n] " ans
if [ "$ans" == "Y" ] || [ "$ans" == "y" ]
then
	#Install the runtime
	wget https://github.com/PancakeTAS/lsfg-vk/releases/download/v1.0.0/org.freedesktop.Platform.VulkanLayer.lsfg_vk_23.08.flatpak --no-check-certificate
	wget https://github.com/PancakeTAS/lsfg-vk/releases/download/v1.0.0/org.freedesktop.Platform.VulkanLayer.lsfg_vk_24.08.flatpak --no-check-certificate
	wget https://github.com/PancakeTAS/lsfg-vk/releases/download/v1.0.0/org.freedesktop.Platform.VulkanLayer.lsfg_vk_25.08.flatpak --no-check-certificate
	set +e
	flatpak --user install -y ./org.freedesktop.Platform.VulkanLayer.lsfg_vk_23.08.flatpak
	flatpak --user install -y ./org.freedesktop.Platform.VulkanLayer.lsfg_vk_24.08.flatpak
	flatpak --user install -y ./org.freedesktop.Platform.VulkanLayer.lsfg_vk_25.08.flatpak
	set -e
	#Install the UI
	wget foleosoft.com/firmware/gay.pancake.lsfg-vk-ui.flatpak --no-check-certificate
	set +e
	flatpak --user install -y ./gay.pancake.lsfg-vk-ui.flatpak
	echo '[Desktop Entry]
Version=1.0
Type=Application
Name=Lossless Scaling
Comment=Easy to use configuration editor for lsfg-vk.
Exec=/opt/aramis/flatpak/1.16.1/bin/flatpak --user run gay.pancake.lsfg-vk-ui
Icon=~/.local/share/flatpak/app/gay.pancake.lsfg-vk-ui/x86_64/develop/active/export/share/icons/hicolor/256x256/apps/gay.pancake.lsfg-vk-ui.png
Terminal=false
Categories=GTK;Settings;
Keywords=gaming;graphics;configuration;
StartupNotify=true
StartupWMClass=gay.pancake.lsfg-vk-ui
MimeType=application/x-lsfg-profile;
X-Flatpak=gay.pancake.lsfg-vk-ui
'>~/Desktop/gay.pancake.lsfg-vk-ui.desktop
	set -e
	flatpak --user override --reset gay.pancake.lsfg-vk-ui
	flatpak --user override --filesystem="$HOME/.var/app/gay.pancake.lsfg-vk-ui/config/lsfg-vk:rw" com.valvesoftware.Steam
	flatpak --user override --env="LSFG_CONFIG=$HOME/.var/app/gay.pancake.lsfg-vk-ui/config/lsfg-vk/conf.toml" com.valvesoftware.Steam
	flatpak --user override --filesystem="$HOME/.var/app/com.valvesoftware.Steam/.steam/steam/steamapps/common/Lossless Scaling/Lossless.dll:rw" gay.pancake.lsfg-vk-ui
fi

#Done
read -p "Please reboot. Reboot now? [Y/n] " ans
if [ "$ans" == "Y" ] || [ "$ans" == "y" ]
then
	sudo reboot
fi

