diff --git a/.gitignore b/.gitignore
index 63c3ef0..f7953ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
*.iml
.gradle
-**/build/
+build
xcuserdata
!src/**/build/
local.properties
@@ -16,3 +16,9 @@ captures
!*.xcworkspace/contents.xcworkspacedata
**/xcshareddata/WorkspaceSettings.xcsettings
.kotlin
+
+# Flatpak Build
+.flatpak-builder
+flatpak/_build
+flatpak/_repo
+flatpak/*.flatpak
diff --git a/flatpak/build.sh b/flatpak/build.sh
new file mode 100755
index 0000000..e333980
--- /dev/null
+++ b/flatpak/build.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+cd "$(dirname "$(readlink -f "$0")")/.." || error "Failed to switch to correct directory"
+
+./gradlew packageReleaseUberJarForCurrentOS
+
+flatpak-builder --ccache --force-clean --repo=flatpak/_repo ./flatpak/_build ./flatpak/ch.dissem.YAEP.yml
+
+if [ "$1" = "bundle" ] || [ "$1" = "install" ]; then
+ echo "Build is done, creating bundle now. This may take a while..."
+ flatpak build-bundle flatpak/_repo "flatpak/YAEP-$(arch)-1.0.0.flatpak" ch.dissem.YAEP
+fi
+
+if [ "$1" = "install" ]; then
+ flatpak install "flatpak/YAEP-$(arch)-1.0.0.flatpak"
+fi
diff --git a/flatpak/ch.dissem.YAEP.yml b/flatpak/ch.dissem.YAEP.yml
new file mode 100644
index 0000000..1ae57d6
--- /dev/null
+++ b/flatpak/ch.dissem.YAEP.yml
@@ -0,0 +1,35 @@
+id: ch.dissem.YAEP
+runtime: org.freedesktop.Platform
+runtime-version: '25.08'
+sdk: org.freedesktop.Sdk
+sdk-extensions:
+ - org.freedesktop.Sdk.Extension.openjdk21
+command: yaep
+finish-args:
+ - --socket=x11
+ - --device=dri # Required for better X11 performance
+ - --share=ipc # Required for better X11 performance
+ - --env=PATH=/app/bin:/app/jre/bin:/usr/bin
+ - --env=JAVA_HOME=/app/jre
+modules:
+ - name: openjdk
+ buildsystem: simple
+ build-commands:
+ - /usr/lib/sdk/openjdk21/install.sh
+ - name: yaep
+ buildsystem: simple
+ sources:
+ - type: dir
+ path: ../desktop/build/compose/jars/
+ - type: dir
+ path: ../flatpak/info/
+ - type: script
+ dest-filename: yaep
+ commands:
+ - java -jar /app/data/yaep.jar
+ build-commands:
+ - install -Dm755 yaep /app/bin/yaep
+ - install -Dm644 YAEP-*-release.jar /app/data/yaep.jar
+ - install -Dm644 ch.dissem.YAEP.desktop /app/share/applications/ch.dissem.YAEP.desktop
+ - install -Dm644 ch.dissem.YAEP.svg /app/share/icons/hicolor/scalable/apps/ch.dissem.YAEP.svg
+ - install -Dm644 ch.dissem.YAEP.metainfo.xml /app/share/metainfo/ch.dissem.YAEP.metainfo.xml
diff --git a/flatpak/info/ch.dissem.YAEP.desktop b/flatpak/info/ch.dissem.YAEP.desktop
new file mode 100644
index 0000000..144e860
--- /dev/null
+++ b/flatpak/info/ch.dissem.YAEP.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=YAEP
+Comment=Yet Another Einstein Puzzle
+Exec=/app/bin/yaep
+Icon=ch.dissem.YAEP
+Terminal=false
+Type=Application
+Categories=Game;LogicGame;
\ No newline at end of file
diff --git a/flatpak/info/ch.dissem.YAEP.metainfo.xml b/flatpak/info/ch.dissem.YAEP.metainfo.xml
new file mode 100644
index 0000000..2b46d75
--- /dev/null
+++ b/flatpak/info/ch.dissem.YAEP.metainfo.xml
@@ -0,0 +1,61 @@
+
+
+ ch.dissem.YAEP
+
+ YAEP
+ Yet Another Einstein Puzzle
+ CC0-1.0
+ TODO
+ Christian Basler
+
+
+
+ TODO.
+
+
+
+ ch.dissem.YAEP.desktop
+
+
+ pointing
+ 768
+
+
+
+ Game
+ Puzzle
+ Einstein
+ Zebra
+
+
+
+
+ #b8bee3
+ #282245
+
+
+
+
+ TODO
+
+ https://raw.githubusercontent.com/RedddFoxxyy/Pomolin/v1.1.9/gitAssets/app_screenshots/screenshot1.png
+
+
+
+
+
+
+ https://dissem.ch/YAEP/
+ https://git.dissem.ch/chris/YAEP/issues
+ https://git.dissem.ch/chris/YAEP
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/flatpak/info/ch.dissem.YAEP.svg b/flatpak/info/ch.dissem.YAEP.svg
new file mode 100644
index 0000000..f98f17b
--- /dev/null
+++ b/flatpak/info/ch.dissem.YAEP.svg
@@ -0,0 +1,157 @@
+
+
+
+
diff --git a/flatpak/prerequisites.sh b/flatpak/prerequisites.sh
new file mode 100755
index 0000000..519c064
--- /dev/null
+++ b/flatpak/prerequisites.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+flatpak install flathub org.freedesktop.Sdk
+flatpak install flathub org.freedesktop.Sdk.Extension.openjdk21
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 4a70e16..160fbfd 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,6 +1,7 @@
+@file:Suppress("UnstableApiUsage")
+enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
rootProject.name = "YAEP"
-enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
pluginManagement {
repositories {