var img = document.createElement('img'); img.src = "https://webstats.gnome.org//piwik.php?idsite=40&rec=1&url=https://docs.openpak.org/" + location.pathname; img.style = "border:0"; img.alt = "tracker"; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(img,s);
Skip to main content

Manifest templates

Starting points for a Flatpak manifest, one per common language or toolkit. Each is available in YAML and JSON — pick whichever you prefer; Openpak accepts both. Download one, rename it to your app ID (com.example.App.yaml), and fill in the placeholders.

important

These are skeletons, not drop-in builds. Before submitting you must:

  • replace com.example.App with your real app ID, the command, and the module name;
  • point the source at your repository and pin an exact commit (a tag alone is rejected — tags can move);
  • generate offline dependency sources where noted (Rust/Node/.NET/Flutter/Ruby builds run without network access);
  • trim finish-args to only the permissions your app actually needs.

All templates target the current runtimes (GNOME 50, KDE 6.10, Freedesktop 25.08). See Runtimes.

By runtime

Pick the runtime your app's toolkit belongs to. GNOME bundles GTK4 + libadwaita, KDE bundles Qt6 + Kirigami, and Freedesktop is the minimal base for everything else. See Runtimes.

RuntimeToolkitBuild systemDownload
GNOME 50GTK4 + libadwaitaMesonYAML · JSON
KDE 6.10Qt6 + KirigamiCMakeYAML · JSON
Freedesktop 25.08none (SDL / custom / CLI)MesonYAML · JSON

By language / toolkit

Language / toolkitBuild systemRuntimeDownload
C / GTKMesonGNOMEYAML · JSON
C++ / QtCMakeKDEYAML · JSON
Python / GTKMesonGNOMEYAML · JSON
Python / Qt (PySide6)pipKDEYAML · JSON
RustcargoFreedesktopYAML · JSON
Gogo buildFreedesktopYAML · JSON
Electron / Node.jsnpm + BaseAppFreedesktopYAML · JSON
ValaMesonGNOMEYAML · JSON
JavaOpenJDK extensionFreedesktopYAML · JSON
C# / .NETdotnet extensionFreedesktopYAML · JSON
Flutterflatpak-flutterFreedesktopYAML · JSON
Tauricargo + npmGNOMEYAML · JSON
RubybundlerFreedesktopYAML · JSON

Generating offline dependency sources

Flatpak builds have no network access, so package-manager dependencies must be fetched up front into a sources file the manifest references:

See also Shared modules for common dependencies and the Linter for what the build checks before merge.