# Flatpak manifest for Solander. # # Build and install locally: # flatpak install -y flathub org.gnome.Platform//50 org.gnome.Sdk//50 # flatpak-builder --user --install --force-clean build data/flatpak/com.kingletas.Solander.yaml # # The dependency wheels are pinned by sha256 because flatpak-builder builds with # the network off: nothing is resolved at build time. Regenerate them with # python3 -m pip install --dry-run --only-binary :all: --report - . # whenever pyproject.toml changes. # # PyYAML is the one dependency that ships a compiled wheel, so its pin below is # tied to BOTH the architecture (x86_64) and the runtime's Python ABI: GNOME 50 # carries Python 3.13, so the wheel is cp313. Bumping the runtime to a release # with a different Python means regenerating that one line -- the build fails # loudly with "No matching distribution found for pyyaml" when it is stale. # Every other dependency here is pure Python and cares about neither. # # Inside Flatpak there is no AppArmor step: the sandbox WebKit needs comes from # Flatpak's own bubblewrap, which already has the permission. The profile in the # README is only for a source or .deb install. app-id: com.kingletas.Solander runtime: org.gnome.Platform runtime-version: "50" sdk: org.gnome.Sdk command: solander finish-args: # The vault is opened in place and never written to, so read-only is the whole # access this application ever needs. - --filesystem=host:ro - --socket=wayland - --socket=fallback-x11 - --device=dri # No network at all. Flatpak grants none by default; saying so keeps it a # decision rather than an omission. - --unshare=network modules: - name: python-dependencies buildsystem: simple build-commands: - pip3 install --no-index --no-build-isolation --ignore-installed --find-links="file://${PWD}" --prefix=${FLATPAK_DEST} pyyaml pygments latex2mathml linkify-it-py markdown-it-py mdit-py-plugins mdurl sources: - type: file url: https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl sha256: 0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6 - type: file url: https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl sha256: 2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9 - type: file url: https://files.pythonhosted.org/packages/e8/b1/c488b530994c4f68e46efa99a4d6ca6741aaf158e35779fe6c4d8a9a427d/latex2mathml-3.81.0-py3-none-any.whl sha256: d317710393fe20579aea39cfe8928fa2ad9b8780896e585326c75e89c1d1d1a4 - type: file url: https://files.pythonhosted.org/packages/13/d4/1152d1c7ab42d8b908be64fd200ddc870dc9d4925e951198702084aa1a7d/linkify_it_py-2.2.0-py3-none-any.whl sha256: 3adc40eb5af300b2605fcfdb968c24e1d780a90f1f2221af7c15e5111e94d443 - type: file url: https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl sha256: 9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a - type: file url: https://files.pythonhosted.org/packages/a5/69/6da5581c6a7fede7dc261bf4e67d6adca4196f176b43288b55b3db395b6e/mdit_py_plugins-0.6.1-py3-none-any.whl sha256: 214c82fb2ac524472ab6a5bcab1de80f73b50443e187f401bfd77efbc7c6481d - type: file url: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl sha256: 84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 - name: solander buildsystem: simple build-commands: # --no-build-isolation means the build backend must already be importable, # and the GNOME SDK has no hatchling. It goes into this module's own build # directory, so it never reaches the application, and it is installed here # rather than in a module of its own because only the current module's # build directory is guaranteed to exist. - pip3 install --no-index --no-build-isolation --ignore-installed --find-links="file://${PWD}" --target="${PWD}/.build-backend" hatchling packaging pathspec pluggy tomlkit trove-classifiers - PYTHONPATH="${PWD}/.build-backend" pip3 install --no-index --no-build-isolation --no-deps --prefix=${FLATPAK_DEST} . - install -Dm644 data/com.kingletas.Solander.desktop ${FLATPAK_DEST}/share/applications/com.kingletas.Solander.desktop - install -Dm644 data/com.kingletas.Solander.metainfo.xml ${FLATPAK_DEST}/share/metainfo/com.kingletas.Solander.metainfo.xml - install -Dm644 data/com.kingletas.Solander.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/com.kingletas.Solander.svg - sed -i 's|@LAUNCHER@|solander|' ${FLATPAK_DEST}/share/applications/com.kingletas.Solander.desktop sources: - type: dir path: ../.. # Without these the whole checkout is copied into the build directory, # virtualenv and build products included. skip: - .git - .venv - build - dist - repo - .flatpak-builder - .pytest_cache - .ruff_cache - type: file url: https://files.pythonhosted.org/packages/a9/84/1798b6d85ecde0e31546004efd25c5de1b1f49250644a60cce460e12593a/hatchling-1.32.0-py3-none-any.whl sha256: 0e17c9c3b9aa7c625acc8d0f5b622f107d5049af9ecf5ada4de1aada5be7cdbc - type: file url: https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl sha256: d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c - type: file url: https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl sha256: a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189 - type: file url: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl sha256: e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 - type: file url: https://files.pythonhosted.org/packages/13/bc/8c13eb66537dce1d2bd3a57132902f38d0e7f5bb46fa9f4daed9fe9d76ee/tomlkit-0.15.1-py3-none-any.whl sha256: 177a05aece5a8ca5266fd3c448abb47b8d352f09d477d3ca8332db4d89b24304 - type: file url: https://files.pythonhosted.org/packages/7c/a4/81502f486f01db95bc8320646a8a12511f5e556cb63d5e224d91816605c4/trove_classifiers-2026.6.1.19-py3-none-any.whl sha256: ab4c4ec93cc4a4e7815fa759906e05e6bb3f2fbd92ea0f897288c6a43efd15b3