diff options
| author | Party Wumpus <48649272+PartyWumpus@users.noreply.github.com> | 2023-01-11 17:29:40 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-11 17:29:40 +0000 |
| commit | 4349a6eef318843355d96c716b396b493fd15056 (patch) | |
| tree | 2d70a53c5d1ba7345417e39b68c591e3aee2c6a2 | |
| parent | 188d3ccf9c017377953f6a1ec5e33ba6d38925d0 (diff) | |
| parent | abe465b26b73eab3b339fdaebeeedde604a8ce1b (diff) | |
| download | decky-installer-4349a6eef318843355d96c716b396b493fd15056.tar.gz decky-installer-4349a6eef318843355d96c716b396b493fd15056.zip | |
Merge branch 'SteamDeckHomebrew:main' into main
| -rw-r--r-- | cli/install_prerelease.sh | 69 | ||||
| -rw-r--r-- | cli/install_release.sh | 69 | ||||
| -rw-r--r-- | cli/uninstall.sh | 22 | ||||
| -rw-r--r-- | gui/decky_installer.desktop (renamed from decky_installer.desktop) | 0 | ||||
| -rw-r--r-- | gui/user_install_script.sh (renamed from user_install_script.sh) | 10 |
5 files changed, 169 insertions, 1 deletions
diff --git a/cli/install_prerelease.sh b/cli/install_prerelease.sh new file mode 100644 index 0000000..1713357 --- /dev/null +++ b/cli/install_prerelease.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +[ "$UID" -eq 0 ] || exec sudo "$0" "$@" + +echo "Installing Steam Deck Plugin Loader pre-release..." + +USER_DIR="$(getent passwd $SUDO_USER | cut -d: -f6)" +HOMEBREW_FOLDER="${USER_DIR}/homebrew" + +# Create folder structure +rm -rf "${HOMEBREW_FOLDER}/services" +sudo -u $SUDO_USER mkdir -p "${HOMEBREW_FOLDER}/services" +sudo -u $SUDO_USER mkdir -p "${HOMEBREW_FOLDER}/plugins" +sudo -u $SUDO_USER touch "${USER_DIR}/.steam/steam/.cef-enable-remote-debugging" + +# Download latest release and install it +RELEASE=$(curl -s 'https://api.github.com/repos/SteamDeckHomebrew/decky-loader/releases' | jq -r "first(.[] | select(.prerelease == "true"))") +VERSION=$(jq -r '.tag_name' <<< ${RELEASE} ) +DOWNLOADURL=$(jq -r '.assets[].browser_download_url | select(endswith("PluginLoader"))' <<< ${RELEASE}) + +printf "Installing version %s...\n" "${VERSION}" +curl -L $DOWNLOADURL --output ${HOMEBREW_FOLDER}/services/PluginLoader +chmod +x ${HOMEBREW_FOLDER}/services/PluginLoader +echo $VERSION > ${HOMEBREW_FOLDER}/services/.loader.version + +systemctl --user stop plugin_loader 2> /dev/null +systemctl --user disable plugin_loader 2> /dev/null + +systemctl stop plugin_loader 2> /dev/null +systemctl disable plugin_loader 2> /dev/null + +curl -L https://raw.githubusercontent.com/SteamDeckHomebrew/decky-loader/main/dist/plugin_loader-prerelease.service --output ${HOMEBREW_FOLDER}/services/plugin_loader-prerelease.service + +cat > "${HOMEBREW_FOLDER}/services/plugin_loader-backup.service" <<- EOM +[Unit] +Description=SteamDeck Plugin Loader +After=network-online.target +Wants=network-online.target +[Service] +Type=simple +User=root +Restart=always +ExecStart=${HOMEBREW_FOLDER}/services/PluginLoader +WorkingDirectory=${HOMEBREW_FOLDER}/services +KillSignal=SIGKILL +Environment=PLUGIN_PATH=${HOMEBREW_FOLDER}/plugins +Environment=LOG_LEVEL=DEBUG +[Install] +WantedBy=multi-user.target +EOM + +if [[ -f "${HOMEBREW_FOLDER}/services/plugin_loader-prerelease.service" ]]; then + printf "Grabbed latest prerelease service.\n" + sed -i -e "s|\${HOMEBREW_FOLDER}|${HOMEBREW_FOLDER}|" "${HOMEBREW_FOLDER}/services/plugin_loader-prerelease.service" + cp -f "${HOMEBREW_FOLDER}/services/plugin_loader-prerelease.service" "/etc/systemd/system/plugin_loader.service" +else + printf "Could not curl latest prerelease systemd service, using built-in service as a backup!\n" + rm -f "/etc/systemd/system/plugin_loader.service" + cp "${HOMEBREW_FOLDER}/services/plugin_loader-backup.service" "/etc/systemd/system/plugin_loader.service" +fi + +mkdir -p ${HOMEBREW_FOLDER}/services/.systemd +cp ${HOMEBREW_FOLDER}/services/plugin_loader-prerelease.service ${HOMEBREW_FOLDER}/services/.systemd/plugin_loader-prerelease.service +cp ${HOMEBREW_FOLDER}/services/plugin_loader-backup.service ${HOMEBREW_FOLDER}/services/.systemd/plugin_loader-backup.service +rm ${HOMEBREW_FOLDER}/services/plugin_loader-backup.service ${HOMEBREW_FOLDER}/services/plugin_loader-prerelease.service + +systemctl daemon-reload +systemctl start plugin_loader +systemctl enable plugin_loader diff --git a/cli/install_release.sh b/cli/install_release.sh new file mode 100644 index 0000000..71d2415 --- /dev/null +++ b/cli/install_release.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +[ "$UID" -eq 0 ] || exec sudo "$0" "$@" + +echo "Installing Steam Deck Plugin Loader release..." + +USER_DIR="$(getent passwd $SUDO_USER | cut -d: -f6)" +HOMEBREW_FOLDER="${USER_DIR}/homebrew" + +# Create folder structure +rm -rf "${HOMEBREW_FOLDER}/services" +sudo -u $SUDO_USER mkdir -p "${HOMEBREW_FOLDER}/services" +sudo -u $SUDO_USER mkdir -p "${HOMEBREW_FOLDER}/plugins" +sudo -u $SUDO_USER touch "${USER_DIR}/.steam/steam/.cef-enable-remote-debugging" + +# Download latest release and install it +RELEASE=$(curl -s 'https://api.github.com/repos/SteamDeckHomebrew/decky-loader/releases' | jq -r "first(.[] | select(.prerelease == "false"))") +VERSION=$(jq -r '.tag_name' <<< ${RELEASE} ) +DOWNLOADURL=$(jq -r '.assets[].browser_download_url | select(endswith("PluginLoader"))' <<< ${RELEASE}) + +printf "Installing version %s...\n" "${VERSION}" +curl -L $DOWNLOADURL --output ${HOMEBREW_FOLDER}/services/PluginLoader +chmod +x ${HOMEBREW_FOLDER}/services/PluginLoader +echo $VERSION > ${HOMEBREW_FOLDER}/services/.loader.version + +systemctl --user stop plugin_loader 2> /dev/null +systemctl --user disable plugin_loader 2> /dev/null + +systemctl stop plugin_loader 2> /dev/null +systemctl disable plugin_loader 2> /dev/null + +curl -L https://raw.githubusercontent.com/SteamDeckHomebrew/decky-loader/main/dist/plugin_loader-release.service --output ${HOMEBREW_FOLDER}/services/plugin_loader-release.service + +cat > "${HOMEBREW_FOLDER}/services/plugin_loader-backup.service" <<- EOM +[Unit] +Description=SteamDeck Plugin Loader +After=network-online.target +Wants=network-online.target +[Service] +Type=simple +User=root +Restart=always +ExecStart=${HOMEBREW_FOLDER}/services/PluginLoader +WorkingDirectory=${HOMEBREW_FOLDER}/services +KillSignal=SIGKILL +Environment=PLUGIN_PATH=${HOMEBREW_FOLDER}/plugins +Environment=LOG_LEVEL=INFO +[Install] +WantedBy=multi-user.target +EOM + +if [[ -f "${HOMEBREW_FOLDER}/services/plugin_loader-release.service" ]]; then + printf "Grabbed latest release service.\n" + sed -i -e "s|\${HOMEBREW_FOLDER}|${HOMEBREW_FOLDER}|" "${HOMEBREW_FOLDER}/services/plugin_loader-release.service" + cp -f "${HOMEBREW_FOLDER}/services/plugin_loader-release.service" "/etc/systemd/system/plugin_loader.service" +else + printf "Could not curl latest release systemd service, using built-in service as a backup!\n" + rm -f "/etc/systemd/system/plugin_loader.service" + cp "${HOMEBREW_FOLDER}/services/plugin_loader-backup.service" "/etc/systemd/system/plugin_loader.service" +fi + +mkdir -p ${HOMEBREW_FOLDER}/services/.systemd +cp ${HOMEBREW_FOLDER}/services/plugin_loader-release.service ${HOMEBREW_FOLDER}/services/.systemd/plugin_loader-release.service +cp ${HOMEBREW_FOLDER}/services/plugin_loader-backup.service ${HOMEBREW_FOLDER}/services/.systemd/plugin_loader-backup.service +rm ${HOMEBREW_FOLDER}/services/plugin_loader-backup.service ${HOMEBREW_FOLDER}/services/plugin_loader-release.service + +systemctl daemon-reload +systemctl start plugin_loader +systemctl enable plugin_loader diff --git a/cli/uninstall.sh b/cli/uninstall.sh new file mode 100644 index 0000000..e2c7f15 --- /dev/null +++ b/cli/uninstall.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +[ "$UID" -eq 0 ] || exec sudo "$0" "$@" + +echo "Uninstalling Steam Deck Plugin Loader..." + +USER_DIR="$(getent passwd $SUDO_USER | cut -d: -f6)" +HOMEBREW_FOLDER="${USER_DIR}/homebrew" + +# Disable and remove services +sudo systemctl disable --now plugin_loader.service > /dev/null +sudo rm -f "${USER_DIR}/.config/systemd/user/plugin_loader.service" +sudo rm -f "/etc/systemd/system/plugin_loader.service" + +# Remove temporary folder if it exists from the install process +rm -rf "/tmp/plugin_loader" + +# Cleanup services folder +sudo rm "${HOMEBREW_FOLDER}/services/PluginLoader" + +# disable CEF debugging +sudo rm "${USER_DIR}/.steam/steam/.cef-enable-remote-debugging" diff --git a/decky_installer.desktop b/gui/decky_installer.desktop index 2a90683..2a90683 100644 --- a/decky_installer.desktop +++ b/gui/decky_installer.desktop diff --git a/user_install_script.sh b/gui/user_install_script.sh index 18ef7fe..376a7dd 100644 --- a/user_install_script.sh +++ b/gui/user_install_script.sh @@ -94,7 +94,7 @@ rm -rf "${HOMEBREW_FOLDER}/services" sudo -u $SUDO_USER mkdir -p "${HOMEBREW_FOLDER}/services" sudo -u $SUDO_USER mkdir -p "${HOMEBREW_FOLDER}/plugins" sudo -u $SUDO_USER touch "${USER_DIR}/.steam/steam/.cef-enable-remote-debugging" - +$SUDO_USER echo "30" ; echo "# Finding latest $BRANCH"; if [ $BRANCH = 'prerelease' ] ; then RELEASE=$(curl -s 'https://api.github.com/repos/SteamDeckHomebrew/decky-loader/releases' | jq -r "first(.[] | select(.prerelease == "true"))") @@ -154,6 +154,14 @@ rm ${HOMEBREW_FOLDER}/services/plugin_loader-backup.service ${HOMEBREW_FOLDER}/s systemctl daemon-reload systemctl start plugin_loader systemctl enable plugin_loader + +# this (retroactively) fixes a bug where users who ran the installer would have homebrew owned by root instead of their user +# will likely be removed at some point in the future +if [ "$SUDO_USER" = "deck" ]; then + sudo chown -R deck:deck /home/deck/homebrew + sudo chown -R root:root /home/wumpus/homebrew/services/* +fi + echo "100" ; echo "# Install finished, installer can now be closed"; ) | zenity --progress \ |
