SmartestHome/hosts/steam-tv-box/live-build/config/hooks/normal/0400-flatpak-apps.hook.chroot

60 lines
2.9 KiB
Bash
Executable File

#!/bin/sh
# Flathub remote + the two apps this image needs that Debian does not package:
# the official Spotify client and Prism Launcher.
#
# Same distribution channel and the same "don't pin a version that will just rot"
# reasoning as hosts/touch-panel's 0300-flatpak-spotify.hook.chroot and
# hosts/thin-client's 0400-flatpak-steamlink.hook.chroot.
#
# Note what is NOT here: Steam. Steam is installed natively from apt by
# 0300-steam.hook.chroot, deliberately — the Flatpak runs sandboxed with its own
# runtime, which complicates GPU driver matching, controller udev access and mounting
# a games disk, all of which matter on a machine whose whole job is running games
# locally. Prism and Spotify have none of those constraints, so the sandbox is a
# straightforward win for them.
set -eu
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# VERIFY BEFORE THE FIRST REAL BUILD: confirm both application IDs against the live
# Flathub listing (`flatpak search Spotify`, `flatpak search "Prism Launcher"`).
# Believed correct — both are the publishers' own official listings — but not checked
# against Flathub from this environment.
SPOTIFY_APP_ID="com.spotify.Client"
PRISM_APP_ID="org.prismlauncher.PrismLauncher"
install_app() {
app_id="$1"
label="$2"
if flatpak install -y --noninteractive flathub "$app_id"; then
echo "0400-flatpak-apps: installed ${app_id}."
else
echo "0400-flatpak-apps: WARNING — could not install ${app_id} during the build (no"
echo " network in the chroot, or the app ID is wrong). Run this on the booted image"
echo " instead: flatpak install -y flathub ${app_id}"
echo " Until then the ${label} launcher opens nothing."
fi
}
install_app "$SPOTIFY_APP_ID" "Spotify"
install_app "$PRISM_APP_ID" "Prism Launcher"
# Prism needs a Java runtime it can actually see. The Flatpak's sandbox has its own
# filesystem view, so the openjdk packages in the package list are not visible inside
# it by default — this grants read access to the host's JVMs so Prism's auto-detection
# finds them and Minecraft launches with no network on first run.
if flatpak override --filesystem=/usr/lib/jvm:ro "$PRISM_APP_ID" 2>/dev/null; then
echo "0400-flatpak-apps: granted Prism Launcher read access to /usr/lib/jvm."
else
echo "0400-flatpak-apps: note — could not set the /usr/lib/jvm override (Prism is"
echo " probably not installed yet). Prism will download its own JRE on first launch,"
echo " which needs network at that moment. To fix it offline later:"
echo " flatpak override --user --filesystem=/usr/lib/jvm:ro ${PRISM_APP_ID}"
fi
# The games directory, so both Prism instances and any Steam library added later sit in
# one predictable place — see hosts/steam-tv-box/README.md on mounting a real disk there.
if flatpak override --filesystem=~/Games "$PRISM_APP_ID" 2>/dev/null; then
echo "0400-flatpak-apps: granted Prism Launcher access to ~/Games."
fi