Files
komp_ac/packaging/flatpak/README.md

68 lines
2.4 KiB
Markdown

# Combined Linux Flatpak
This packaging builds `server` with `full-embed` and `client-gui2` inside the
GNOME 50 Flatpak SDK, then exports a single x86_64 Flatpak bundle. It is an
additive alternative to the AppImage packaging; the existing AppImage build is
unchanged.
The build uses the official Flatpak Rust and Node SDK extensions. Cargo and
Yarn resolve the committed lockfiles inside the build sandbox with network
access. The PostgreSQL 17.10.0 archive, Typst 0.13.1 binary and protoc 21.12
binary are downloaded by `flatpak-builder` as checksum-pinned sources. A
compatible libxml2 ABI is included for the embedded PostgreSQL binaries.
## Build
Install `flatpak`, `flatpak-builder`, and `appstreamcli` through the host package
manager, then run from the repository root:
```sh
packaging/flatpak/build.sh
```
On NixOS, all three tools can be provided without changing the system
configuration:
```sh
nix shell nixpkgs#flatpak nixpkgs#flatpak-builder nixpkgs#appstream
```
The script configures the per-user Flathub remote when necessary, installs the
GNOME SDK and SDK extensions through `flatpak-builder`, retains its reusable
cache below `${XDG_CACHE_HOME:-$HOME/.cache}/komp-ac-flatpak-builder`, and
creates:
```text
flatpak-dist/KompAC-embedded-x86_64.flatpak
```
An alternative output directory and filename may be supplied:
```sh
packaging/flatpak/build.sh /path/to/releases KompAC-0.8.50-x86_64.flatpak
```
## Install and run
On the destination machine, install Flatpak through the system package manager
and configure Flathub if it is not already available. Then install and run:
```sh
flatpak install ./KompAC-embedded-x86_64.flatpak
flatpak run com.kompac.client
```
The bundle records Flathub as the source of its GNOME runtime. The first
installation therefore downloads the runtime when it is not already installed.
For an offline destination, transfer the runtime through a Flatpak repository
or offline-update workflow as well as the application bundle.
Application configuration and embedded database state live in Flatpak's
per-user persistent XDG directories. Typst is included for document rendering;
no host Typst installation or `.env` file is required.
The manifest deliberately grants build-time network access for the locked
Cargo and Yarn dependency graphs. This keeps private bundle builds automatic.
A Flathub submission should replace that build permission with generated Cargo
and Yarn source manifests from `flatpak-builder-tools`.