aboutsummaryrefslogtreecommitdiff
path: root/flatpak/flatpak-install.sh
blob: f5cdfdac5e76f72cc7ec0861f849e73291c3b8ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env bash
# Build the Fluorine Manager Flatpak.
#
# Usage:
#   cd flatpak && bash flatpak-install.sh           # build & install locally
#   cd flatpak && bash flatpak-install.sh bundle     # build a .flatpak file to share
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(dirname "${SCRIPT_DIR}")"
MANIFEST="${SCRIPT_DIR}/com.fluorine.manager.yml"
APP_ID="com.fluorine.manager"
BUILD_DIR="${PROJECT_DIR}/.flatpak-build"
MODE="${1:-install}"

# ── Ensure flathub remote exists ──
if ! flatpak remote-list --user | grep -q flathub; then
    echo "Adding flathub remote..."
    flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
fi

# ── Install required Flatpak runtime and SDK ──
echo "Installing KDE Platform and SDK (may take a while on first run)..."
flatpak install --user --noninteractive flathub org.kde.Platform//6.10 org.kde.Sdk//6.10

echo "Installing Rust SDK extension..."
flatpak install --user --noninteractive flathub org.freedesktop.Sdk.Extension.rust-stable//25.08

cd "${PROJECT_DIR}"

if [ "${MODE}" = "bundle" ]; then
    # ── Build a distributable .flatpak file ──
    echo ""
    echo "Building Flatpak bundle (this may take a while)..."
    flatpak-builder --repo="${PROJECT_DIR}/flatpak-repo" --force-clean \
        "${BUILD_DIR}" "${MANIFEST}"
    flatpak build-bundle \
        --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo \
        "${PROJECT_DIR}/flatpak-repo" "${PROJECT_DIR}/fluorine-manager.flatpak" "${APP_ID}"
    BUNDLE_SIZE="$(du -sh fluorine-manager.flatpak | cut -f1)"
    echo ""
    echo "=== Bundle created: fluorine-manager.flatpak (${BUNDLE_SIZE}) ==="
    echo ""
    echo "Share this file with testers. They install it with:"
    echo "  flatpak install --user fluorine-manager.flatpak"
else
    # ── Build and install locally ──
    echo ""
    echo "Building and installing Flatpak locally (this may take a while)..."
    flatpak-builder --install --user --force-clean \
        "${BUILD_DIR}" "${MANIFEST}"
    echo ""
    echo "=== Flatpak installed successfully ==="
fi

echo ""
echo "Usage:"
echo "  flatpak run ${APP_ID}                    # launch GUI"
echo "  flatpak run ${APP_ID} create-portable --name myinstance --game falloutnv"
echo "  flatpak run ${APP_ID} list-instances"