---
app-id: "@PROJECT_FQDN@"
runtime: org.freedesktop.Platform
runtime-version: "23.08"  # requires CUDA >= 12.2
sdk: org.freedesktop.Sdk
sdk-extensions:
  - org.freedesktop.Sdk.Extension.node20
command: sunshine
separate-locales: false
finish-args:
  - --device=all  # access all devices
  - --env=PULSE_PROP_media.category=Manager  # allow sunshine to manage audio sinks
  - --env=SUNSHINE_MIGRATE_CONFIG=1  # migrate config files to the new location
  - --filesystem=home  # need to save files in user's home directory
  - --share=ipc  # required for X11 shared memory extension
  - --share=network  # access network
  - --socket=pulseaudio  # play sounds using pulseaudio
  - --socket=wayland  # show windows using Wayland
  - --socket=fallback-x11  # show windows using X11
  - --system-talk-name=org.freedesktop.Avahi  # talk to avahi on the system bus
  - --talk-name=org.freedesktop.Flatpak  # talk to flatpak on the session bus

cleanup:
  - /include
  - /lib/cmake
  - /lib/pkgconfig
  - /lib/*.la
  - /lib/*.a
  - /share/man

modules:
  # Test dependencies
  - "modules/xvfb/xvfb.json"

  # Build dependencies
  - "modules/nlohmann_json.json"

  # Runtime dependencies
  - shared-modules/libayatana-appindicator/libayatana-appindicator-gtk3.json
  - "modules/avahi.json"
  - "modules/boost.json"
  - "modules/libevdev.json"
  - "modules/libnotify.json"
  - "modules/miniupnpc.json"
  - "modules/numactl.json"

  # Caching is configured until here, not including CUDA, since it is too large for GitHub cache
  - "modules/cuda.json"

  - name: sunshine
    builddir: true
    build-options:
      append-path: /usr/lib/sdk/node20/bin
      env:
        BUILD_VERSION: "@BUILD_VERSION@"
        BRANCH: "@GITHUB_BRANCH@"
        COMMIT: "@GITHUB_COMMIT@"
        XDG_CACHE_HOME: /run/build/sunshine/flatpak-node/cache
        npm_config_cache: /run/build/sunshine/flatpak-node/npm-cache
        npm_config_nodedir: /usr/lib/sdk/node20
        npm_config_offline: 'true'
        NPM_CONFIG_LOGLEVEL: info
    buildsystem: cmake-ninja
    config-opts:
      - -DBOOST_USE_STATIC=OFF
      - -DBUILD_DOCS=OFF
      - -DBUILD_WERROR=ON
      - -DCMAKE_BUILD_TYPE=Release
      - -DCMAKE_CUDA_COMPILER=/app/cuda/bin/nvcc
      - -DSUNSHINE_ASSETS_DIR=share/sunshine
      - -DSUNSHINE_BUILD_FLATPAK=ON
      - -DSUNSHINE_EXECUTABLE_PATH=/app/bin/sunshine
      - -DSUNSHINE_ENABLE_WAYLAND=ON
      - -DSUNSHINE_ENABLE_X11=ON
      - -DSUNSHINE_ENABLE_DRM=ON
      - -DSUNSHINE_ENABLE_CUDA=ON
      - -DSUNSHINE_PUBLISHER_NAME='LizardByte'
      - -DSUNSHINE_PUBLISHER_WEBSITE='https://app.lizardbyte.dev'
      - -DSUNSHINE_PUBLISHER_ISSUE_URL='https://app.lizardbyte.dev/support'
    no-make-install: false
    post-install:
      - install -D $FLATPAK_BUILDER_BUILDDIR/packaging/linux/flatpak/scripts/* /app/bin
      - install -D $FLATPAK_BUILDER_BUILDDIR/packaging/linux/flatpak/apps.json /app/share/sunshine/apps.json
    run-tests: true
    test-rule: ""  # empty to disable
    test-commands:
      - npm run serve & xvfb-run tests/test_sunshine --gtest_color=yes
    sources:
      - generated-sources.json
      - type: git
        url: "@GITHUB_CLONE_URL@"
        commit: "@GITHUB_COMMIT@"
      - type: file
        path: package-lock.json
