app-id: dev.aunetx.deezer
runtime: org.freedesktop.Platform
runtime-version: '22.08'
sdk: org.freedesktop.Sdk
base: org.electronjs.Electron2.BaseApp
base-version: '22.08'
sdk-extensions:
  - org.freedesktop.Sdk.Extension.node18
command: run.sh
separate-locales: false
finish-args:
  # Basic permissions
  - --share=ipc
  - --socket=x11
  - --socket=wayland
  - --socket=pulseaudio
  - --share=network
  # Allow other instances to see lockfiles
  - --env=TMPDIR=/var/tmp
  # DBus permissions
  - --talk-name=org.freedesktop.Notifications
  - --talk-name=org.gnome.SettingsDaemon
  - --talk-name=org.gnome.SessionManager
  - --own-name=org.mpris.MediaPlayer2.chromium.*
  # Fs access: music/downloads to send mp3, pictures to change profile picture
  - --filesystem=xdg-music:ro
  - --filesystem=xdg-pictures
  - --filesystem=xdg-download:ro
build-options:
  append-path: /usr/lib/sdk/node18/bin
  cflags: -O2 -g
  cxxflags: -O2 -g
  env:
    NPM_CONFIG_LOGLEVEL: info
modules:
  - name: deezer
    buildsystem: simple
    build-options:
      env:
        XDG_CACHE_HOME: /run/build/deezer/flatpak-node/cache
        npm_config_cache: /run/build/deezer/flatpak-node/npm-cache
        npm_config_nodedir: /usr/lib/sdk/node18
        npm_config_offline: 'true'
    subdir: main
    sources:
      # The deezer electron source
      - type: dir
        path: app
        dest: main
      # The extra resources
      - type: dir
        path: extra
        dest: extra
      # The application datas
      - type: file
        path: dev.aunetx.deezer.appdata.xml
        dest: main
      - type: file
        path: dev.aunetx.deezer.svg
        dest: main
      - type: file
        path: dev.aunetx.deezer.desktop
        dest: main
      # The yarn generated sources
      - flatpak/generated-sources.json
      # Wrapper to launch the app
      - type: script
        dest-filename: run.sh
        commands:
          - zypak-wrapper /app/main/deezer-desktop "$@"
    build-commands:
      # Have Yarn use the offline mirror.
      - 'HOME=$PWD yarn config --offline set yarn-offline-mirror $FLATPAK_BUILDER_BUILDDIR/flatpak-node/yarn-mirror'

      # Install dependencies
      - yarn --offline

      # Build the app; the `dist` script in package.json runs electron-builder
      - |
        . ../flatpak-node/electron-builder-arch-args.sh
        yarn run --offline prepare-flatpak -- $ELECTRON_BUILDER_ARCH_ARGS

      # Bundle app and dependencies
      - |
        . ../flatpak-node/electron-builder-arch-args.sh
        cp -a ../artifacts/${ELECTRON_BUILDER_ARCH_ARGS:2}/linux*unpacked /app/main

      # Install app wrapper
      - install -Dm755 -t /app/bin/ ../run.sh

      # Install app datas
      - install -Dm644 dev.aunetx.deezer.appdata.xml /app/share/appdata/dev.aunetx.deezer.appdata.xml
      - install -Dm644 dev.aunetx.deezer.svg /app/share/icons/hicolor/scalable/apps/dev.aunetx.deezer.svg
      - install -Dm644 dev.aunetx.deezer.desktop /app/share/applications/dev.aunetx.deezer.desktop