app-id: io.github.tobagin.Karere runtime: org.gnome.Platform runtime-version: '48' sdk: org.gnome.Sdk command: karere # Add extensions for media and web browser support add-extensions: org.freedesktop.Platform.ffmpeg-full: directory: lib/ffmpeg version: '23.08' add-ld-path: . finish-args: # Network access for WhatsApp Web API (Baileys backend) - --share=network # Access to display for GUI - --share=ipc - --socket=fallback-x11 - --socket=wayland # Audio/video for WhatsApp calls (future feature) - --socket=pulseaudio # File access for downloads and media - --filesystem=xdg-download - --filesystem=xdg-pictures - --filesystem=xdg-documents # Access to user data directory for backend storage - --filesystem=xdg-data # Device access for notifications - --talk-name=org.freedesktop.Notifications # Session bus access - --socket=session-bus modules: # Blueprint compiler for UI files - name: blueprint-compiler buildsystem: meson sources: - type: git url: https://gitlab.gnome.org/jwestman/blueprint-compiler.git tag: v0.16.0 # Python dependencies for the frontend - name: python3-websocket-client buildsystem: simple build-commands: - pip3 install --verbose --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST} "websocket-client" --no-build-isolation sources: - type: file url: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl sha256: 17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526 # Node.js 24.2.0 for backend execution - name: nodejs buildsystem: simple build-commands: - mkdir -p /app/bin /app/lib /app/include - cp -r bin/* /app/bin/ - cp -r lib/* /app/lib/ - cp -r include/* /app/include/ - cp -r share/* /app/share/ sources: - type: archive url: https://nodejs.org/dist/v24.2.0/node-v24.2.0-linux-x64.tar.xz sha256: 91a0794f4dbc94bc4a9296139ed9101de21234982bae2b325e37ebd3462273e5 only-arches: - x86_64 - type: archive url: https://nodejs.org/dist/v24.2.0/node-v24.2.0-linux-arm64.tar.xz sha256: cd4f25d2f05d0750159a209915267af6f9970ade4702a8810641120404bf54ee only-arches: - aarch64 # Build karere-backend from Node.js source with vendored dependencies - name: karere-backend buildsystem: simple build-commands: # Create backend directory structure - mkdir -p /app/share/karere/backend # Copy source files from git source - cp -r src/ /app/share/karere/backend/ - cp package.json /app/share/karere/backend/ - cp package-lock.json /app/share/karere/backend/ # Create node_modules directory and copy all vendored dependencies - mkdir -p /app/share/karere/backend/node_modules # Copy all package directories (the archive extracts node_modules contents directly) - | for dir in */; do # Skip our own source directories if [[ "$dir" != "src/" && "$dir" != "scripts/" && "$dir" != ".git/" && "$dir" != ".github/" ]]; then cp -r "$dir" /app/share/karere/backend/node_modules/ fi done # Also copy scoped packages (@-prefixed directories) - cp -r @* /app/share/karere/backend/node_modules/ 2>/dev/null || true # Remove problematic native modules - backend will use fallback - rm -rf /app/share/karere/backend/node_modules/sqlite3 # Make the backend executable - chmod +x /app/share/karere/backend/src/backend.js # Verify Node.js installation - /app/bin/node --version sources: # Backend source code - type: git url: https://github.com/tobagin/KarereBackend.git tag: v0.2.8 commit: 2285bdd25de6bbf0b95444e798540e916d141d41 # Vendored dependencies archive - type: archive url: https://github.com/tobagin/KarereBackend/releases/download/v0.2.8/karere-backend-node-modules-v0.2.8.tar.gz sha256: a2934ffd78c6726e6917e4d45f7ecda352dab5e8127834be78ef863fd312da77 # Main Karere application (frontend only) - name: karere buildsystem: simple build-commands: # Build frontend using meson - meson setup build --prefix=/app - meson compile -C build - meson install -C build # Install src to app directory - mkdir -p /app/share/karere - cp -r src /app/share/karere/ # Install PNG icons in all standard sizes - mkdir -p /app/share/icons/hicolor/{16x16,22x22,24x24,32x32,48x48,64x64,128x128,256x256,512x512}/apps - cp src/data/icons/hicolor/16x16/apps/io.github.tobagin.Karere.png /app/share/icons/hicolor/16x16/apps/ - cp src/data/icons/hicolor/22x22/apps/io.github.tobagin.Karere.png /app/share/icons/hicolor/22x22/apps/ - cp src/data/icons/hicolor/24x24/apps/io.github.tobagin.Karere.png /app/share/icons/hicolor/24x24/apps/ - cp src/data/icons/hicolor/32x32/apps/io.github.tobagin.Karere.png /app/share/icons/hicolor/32x32/apps/ - cp src/data/icons/hicolor/48x48/apps/io.github.tobagin.Karere.png /app/share/icons/hicolor/48x48/apps/ - cp src/data/icons/hicolor/64x64/apps/io.github.tobagin.Karere.png /app/share/icons/hicolor/64x64/apps/ - cp src/data/icons/hicolor/128x128/apps/io.github.tobagin.Karere.png /app/share/icons/hicolor/128x128/apps/ - cp src/data/icons/hicolor/256x256/apps/io.github.tobagin.Karere.png /app/share/icons/hicolor/256x256/apps/ - cp src/data/icons/hicolor/512x512/apps/io.github.tobagin.Karere.png /app/share/icons/hicolor/512x512/apps/ # Fix desktop file (meson installs it with the application ID name) - sed -i 's/@EXEC_NAME@/karere/g' /app/share/applications/io.github.tobagin.Karere.desktop # Fix metainfo file (meson installs it as .appdata.xml) - sed -i 's/@APP_ID@/io.github.tobagin.Karere/g' /app/share/metainfo/io.github.tobagin.Karere.appdata.xml # Rename to .metainfo.xml for proper AppStream compliance - mv /app/share/metainfo/io.github.tobagin.Karere.appdata.xml /app/share/metainfo/io.github.tobagin.Karere.metainfo.xml # Create launcher script that handles Flatpak environment - | cat > /app/bin/karere << 'EOF' #!/bin/bash # Set up environment for Flatpak export PATH="/app/bin:$PATH" export PYTHONPATH="/app/share/karere:$PYTHONPATH" # Set up data directory in user space export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}" export KARERE_DATA_DIR="$XDG_DATA_HOME/karere" mkdir -p "$KARERE_DATA_DIR" # Ensure Node.js is available for backend export NODE_PATH="/app/lib/node_modules" # Launch Karere with Node.js backend echo "🚀 Starting Karere (Flatpak edition)" echo "📱 Using Node.js 24.2.0 backend with vendored dependencies" echo "🔧 Node.js version: $(/app/bin/node --version)" # Launch the application exec python3 -m src.karere.main "$@" EOF - chmod +x /app/bin/karere sources: - type: git url: https://github.com/tobagin/Karere.git tag: v0.6.7 commit: 3c8a21aee94d2c9c493ec027acc44391e9f4cbec