diff --git a/.gitignore b/.gitignore
index 3a3ac58e04a7850a08816fe4d90a9d86cfc51d48..dddc9b566ab3904f05859e55862ded661f12216f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@ builds/
 cmake-build-debug/
 cmake-build-debug-coverage/
 imgui.ini
+.flatpak-builder/
 
 # dotfiles
 .idea/
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..165726c55de527350183f979034a1888f7916b98
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "build-aux/shared-modules"]
+	path = build-aux/shared-modules
+	url = https://github.com/flathub/shared-modules.git
diff --git a/build-aux/com.fossgalaxy.fggl.demo.yml b/build-aux/com.fossgalaxy.fggl.demo.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c5194b7438cd4c3a19f1784ce672cf3e8c9af48e
--- /dev/null
+++ b/build-aux/com.fossgalaxy.fggl.demo.yml
@@ -0,0 +1,25 @@
+app-id: com.fossgalaxy.fggl.demo
+runtime: org.freedesktop.Platform.GL.default
+runtime-version: '21.08'
+sdk: org.freedesktop.Sdk
+command: fggl-demo
+modules:
+  - name: glfw
+    buildsystem: cmake-ninja
+    builddir: true
+    sources:
+      - type: archive
+        url: https://github.com/glfw/glfw/releases/download/3.3.4/glfw-3.3.4.zip
+        sha256: bbd2c42c660b725e9755eb417e40b373f0d4c03138c9b2e210d02cd308bd99cd
+    cleanup:
+      - /include
+      - /lib/pkgconfig
+  - modules/glm-0.9.9.8.json
+  - shared-modules/glew/glew.json
+  - shared-modules/glu/glu-9.json
+  - modules/googletest.yml
+  - name: fggl
+    buildsystem: cmake
+    sources:
+      - type: dir
+        path: ../
diff --git a/build-aux/modules/glm-0.9.9.8.json b/build-aux/modules/glm-0.9.9.8.json
new file mode 100644
index 0000000000000000000000000000000000000000..f1af6478d637ea415b2a15d5dfd6466d10ce9ab6
--- /dev/null
+++ b/build-aux/modules/glm-0.9.9.8.json
@@ -0,0 +1,22 @@
+{
+    "name": "glm",
+    "buildsystem": "simple",
+    "build-commands": [
+        "mkdir -p /app/include/",
+        "cp -vr glm /app/include/",
+        "rm -v /app/include/glm/CMakeLists.txt",
+        "mkdir -p /app/lib/",
+        "cp -vr cmake /app/lib/"
+    ],
+    "sources": [
+        {
+            "type": "git",
+            "url": "https://github.com/g-truc/glm.git",
+            "tag": "0.9.9.8"
+        }
+    ],
+    "cleanup": [
+        "/include",
+        "/lib/cmake"
+    ]
+}
diff --git a/build-aux/modules/googletest.yml b/build-aux/modules/googletest.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5c47899901e477a57393e18c8784e5a615fea806
--- /dev/null
+++ b/build-aux/modules/googletest.yml
@@ -0,0 +1,6 @@
+name: googletest
+buildsystem: cmake
+sources:
+  - type: archive
+    url: https://github.com/google/googletest/archive/refs/tags/release-1.11.0.zip
+    sha256: 353571c2440176ded91c2de6d6cd88ddd41401d14692ec1f99e35d013feda55a
diff --git a/build-aux/shared-modules b/build-aux/shared-modules
new file mode 160000
index 0000000000000000000000000000000000000000..0534d3276b3966e87abacd163f757454b6fcf724
--- /dev/null
+++ b/build-aux/shared-modules
@@ -0,0 +1 @@
+Subproject commit 0534d3276b3966e87abacd163f757454b6fcf724
diff --git a/fggl/CMakeLists.txt b/fggl/CMakeLists.txt
index f2f20eaab7856a81db6686d7c52599ef88c21737..a5307366f53b3c20986a6cf37c5066c4f06e5b9c 100644
--- a/fggl/CMakeLists.txt
+++ b/fggl/CMakeLists.txt
@@ -1,6 +1,9 @@
 configure_file(FgglConfig.h.in FgglConfig.h)
 
-set(CMAKE_CXX_CLANG_TIDY clang-tidy -checks=*,-llvmlibc-*,-fuchsia-*,-cppcoreguidelines-*,-llvm-*)
+find_program(CLANG_TIDY_FOUND clang-tidy)
+if ( CLANG_TIDY_FOUND )
+	set(CMAKE_CXX_CLANG_TIDY clang-tidy -checks=*,-llvmlibc-*,-fuchsia-*,-cppcoreguidelines-*,-llvm-*)
+endif()
 
 add_library(fggl fggl.cpp
 	ecs/ecs.cpp
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 26447b98baf15632f9bfa140363c6d1a005ecea8..2ea02a987b482d0f4443aa7864ff6980e7e30d0b 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,6 +1,8 @@
 find_package(Threads REQUIRED)
 
 # GTest Dependency
+find_package(GTest)
+if ( NOT GTest_FOUND )
 include(FetchContent)
 FetchContent_Declare(
   googletest
@@ -9,5 +11,6 @@ FetchContent_Declare(
 # For Windows: Prevent overriding the parent project's compiler/linker settings
 set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
 FetchContent_MakeAvailable(googletest)
+endif ()
 
 add_subdirectory(testfggl)