#!/usr/bin/env bash # Script Version VER=1 VER_FILE="$HOME/.config/ublue-os/user-flatpak-configured" VER_RAN=$(cat $VER_FILE) # Run script if updated if [[ -f $VER_FILE && $VER = $VER_RAN ]]; then echo "Flatpak setup v$VER has already ran. Exiting..." exit 0 fi # Remove Fedora's flatpak repo, if it exists if grep -qz 'fedora' <<< $(flatpak remotes); then flatpak remote-delete --user fedora --force flatpak remote-delete --user fedora-testing --force fi REPO_INFO="/etc/flatpak/user/repo-info.yml" REPO_URL=$(yq '.repo-url' $REPO_INFO) REPO_NAME=$(yq '.repo-name' $REPO_INFO) REPO_TITLE=$(yq '.repo-title' $REPO_INFO) # Set up per-user Flatpak repository if [[ ! $REPO_URL == "null" && ! $REPO_NAME == "null" ]]; then echo "Adding remote $REPO_NAME from $REPO_URL" flatpak remote-add --if-not-exists --user $REPO_NAME $REPO_URL fi # Change repository title to configured title, if not null if [[ ! $REPO_TITLE == "null" ]]; then echo "Setting title $REPO_TITLE for remote $REPO_NAME" flatpak remote-modify --user $REPO_NAME --title="$REPO_TITLE" fi # Lists of flatpaks FLATPAK_LIST=$(flatpak list --columns=application) INSTALL_LIST=$(cat /etc/flatpak/user/install) REMOVE_LIST=$(cat /etc/flatpak/user/remove) # Install flatpaks in list if [[ -n $INSTALL_LIST ]]; then if ! flatpak install --user --noninteractive $REPO_NAME ${INSTALL_LIST[@]}; then # Exit on error exit 1 fi fi # Remove flatpaks in list if [[ -n $REMOVE_LIST ]]; then flatpak remove --user --noninteractive $flatpak ${REMOVE_LIST[@]} fi notify-send "Flatpak Installer" "Finished installing user flatpaks" --app-name="Flatpak Installer" -u NORMAL # Prevent future executions echo "Writing state file" mkdir -p $HOME/.config/ublue-os/ echo $VER > $VER_FILE