app-id: org.DolphinEmu.dolphin-emu
runtime: org.kde.Platform
runtime-version: '6.7'
sdk: org.kde.Sdk
command: dolphin-emu-wrapper
rename-desktop-file: dolphin-emu.desktop
rename-icon: dolphin-emu
finish-args:
  - --device=all
  # the file picker uses portals but the set
  # game directory feature still needs this
  - --filesystem=host:ro
  - --socket=pulseaudio
  - --env=QT_QPA_PLATFORM=xcb
  - --socket=x11
  - --share=network
  - --share=ipc
  # required for the emulated bluetooth adapter feature to work.
  - --allow=bluetooth
  - --filesystem=xdg-run/app/com.discordapp.Discord:create
  - --talk-name=org.freedesktop.ScreenSaver
  # required for Gamescope on Steam Deck
  - --filesystem=xdg-run/gamescope-0:ro
modules:
  # needed for the bluetooth passthrough feature to work
  - name: libusb
    config-opts:
      - --disable-static
    cleanup:
      - /include
      - /lib/*.la
      - /lib/pkgconfig
    sources:
      - type: archive
        url: https://github.com/libusb/libusb/releases/download/v1.0.27/libusb-1.0.27.tar.bz2
        sha256: ffaa41d741a8a3bee244ac8e54a72ea05bf2879663c098c82fc5757853441575
        x-checker-data:
          type: anitya
          project-id: 1749
          stable-only: true
          url-template: https://github.com/libusb/libusb/releases/download/v$version/libusb-$version.tar.bz2

  # enables motion controls on non-wii controllers (switch, ps4, etc)
  # requires a udev rule enabling Motion Sensors access
  - name: libevdev
    buildsystem: meson
    config-opts:
      - -Dtests=disabled
      - -Ddocumentation=disabled
    sources:
      - type: archive
        url: https://www.freedesktop.org/software/libevdev/libevdev-1.13.3.tar.xz
        sha256: abf1aace86208eebdd5d3550ffded4c8d73bb405b796d51c389c9d0604cbcfbf
        x-checker-data:
          type: anitya
          project-id: 20540
          stable-only: true
          url-template: https://www.freedesktop.org/software/libevdev/libevdev-$version.tar.xz

  # needed for screensaver inhibition
  - name: xdg-screensaver-shim
    buildsystem: meson
    sources:
      - type: archive
        url: https://github.com/Unrud/xdg-screensaver-shim/archive/0.0.2.tar.gz
        sha256: 0ed2a69fe6ee6cbffd2fe16f85116db737f17fb1e79bfb812d893cf15c728399

  # The kde runtime bundles 2.28.5 but current dolphin versions require 2.30.6
  - SDL2/SDL2-no-libdecor.json

  - name: dolphin-emu
    buildsystem: cmake-ninja
    config-opts:
      - -DCMAKE_BUILD_TYPE=Release
      - -DENABLE_ALSA=OFF
      - -DENABLE_SDL=ON
      - -DENABLE_EVDEV=ON
      - -DDISTRIBUTOR=Flathub
    cleanup:
      - /share/man
    post-install:
      - install -D -t ${FLATPAK_DEST}/bin/ dolphin-emu-wrapper
      - install -Dm644 -t ${FLATPAK_DEST}/share/metainfo/ org.DolphinEmu.dolphin-emu.metainfo.xml
      - desktop-file-edit --set-key=Exec --set-value='/app/bin/dolphin-emu-wrapper'
        /app/share/applications/dolphin-emu.desktop
    sources:
      - type: git
        url: https://github.com/dolphin-emu/dolphin.git
        commit: 3c4d4fcd09173ea070dc812ab5d64ca3a3af5f29
        x-checker-data:
          type: json
          url: https://dolphin-emu.org/update/latest/beta
          commit-query: .hash
          version-query: .shortrev
          timestamp-query: .date
          is-main-source: true
      - type: file
        path: org.DolphinEmu.dolphin-emu.metainfo.xml
      - type: script
        commands:
          - |
            for i in {0..9}; do
              test -S $XDG_RUNTIME_DIR/discord-ipc-$i ||
                ln -sf {app/com.discordapp.Discord,$XDG_RUNTIME_DIR}/discord-ipc-$i;
            done
            dolphin-emu "$@"
        dest-filename: dolphin-emu-wrapper