diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4cc6895d41..1948e96d15 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -102,7 +102,7 @@ if(NOT BINARY_LINK_TYPE IN_LIST BINARY_LINK_TYPE_OPTIONS)
     message(FATAL_ERROR "BINARY_LINK_TYPE must be one of ${BINARY_LINK_TYPE_OPTIONS}")
 endif()
 
-set(PACKAGE_MANAGERS AM APK BREW CHOCO DPKG EMERGE EOPKG FLATPAK GUIX LINGLONG LPKG LPKGBUILD MACPORTS NIX OPKG PACMAN PACSTALL PALUDIS PISI PKG PKGTOOL RPM SCOOP SNAP SORCERY WINGET XBPS)
+set(PACKAGE_MANAGERS AM APK BREW CHOCO DPKG EMERGE EOPKG FLATPAK GUIX LINGLONG LPKG LPKGBUILD MACPORTS NIX OPKG PACMAN PACSTALL PALUDIS PISI PKG PKGTOOL RPM SCOOP SNAP SOAR SORCERY WINGET XBPS)
 foreach(package_manager ${PACKAGE_MANAGERS})
     if(package_manager STREQUAL "WINGET")
         option(PACKAGES_DISABLE_${package_manager} "Disable ${package_manager} package manager detection by default" ON)
diff --git a/doc/json_schema.json b/doc/json_schema.json
index 8b14fed50b..b6ad80b0a4 100644
--- a/doc/json_schema.json
+++ b/doc/json_schema.json
@@ -279,7 +279,7 @@
             "type": "string"
         },
         "packagesFormat": {
-            "description": "Output format of the module `Packages`. See Wiki for formatting syntax\n    1. {all}: Number of all packages\n    2. {pacman}: Number of pacman packages\n    3. {pacman-branch}: Pacman branch on manjaro\n    4. {dpkg}: Number of dpkg packages\n    5. {rpm}: Number of rpm packages\n    6. {emerge}: Number of emerge packages\n    7. {eopkg}: Number of eopkg packages\n    8. {xbps}: Number of xbps packages\n    9. {nix-system}: Number of nix-system packages\n    10. {nix-user}: Number of nix-user packages\n    11. {nix-default}: Number of nix-default packages\n    12. {apk}: Number of apk packages\n    13. {pkg}: Number of pkg packages\n    14. {flatpak-system}: Number of flatpak-system app packages\n    15. {flatpak-user}: Number of flatpak-user app packages\n    16. {snap}: Number of snap packages\n    17. {brew}: Number of brew packages\n    18. {brew-cask}: Number of brew-cask packages\n    19. {macports}: Number of macports packages\n    20. {scoop}: Number of scoop packages\n    21. {choco}: Number of choco packages\n    22. {pkgtool}: Number of pkgtool packages\n    23. {paludis}: Number of paludis packages\n    24. {winget}: Number of winget packages\n    25. {opkg}: Number of opkg packages\n    26. {am-system}: Number of am-system packages\n    27. {sorcery}: Number of sorcery packages\n    28. {lpkg}: Number of lpkg packages\n    29. {lpkgbuild}: Number of lpkgbuild packages\n    30. {guix-system}: Number of guix-system packages\n    31. {guix-user}: Number of guix-user packages\n    32. {guix-home}: Number of guix-home packages\n    33. {linglong}: Number of linglong packages\n    34. {pacstall}: Number of pacstall packages\n    35. {mport}: Number of mport packages\n    36. {qi}: Number of qi packages\n    37. {am-user}: Number of am-user (aka appman) packages\n    38. {pkgsrc}: Number of pkgsrc packages\n    39. {hpkg-system}: Number of hpkg-system packages\n    40. {hpkg-user}: Number of hpkg-user packages\n    41. {pisi}: Number of pisi packages\n    42. {nix-all}: Total number of all nix packages\n    43. {flatpak-all}: Total number of all flatpak app packages\n    44. {brew-all}: Total number of all brew packages\n    45. {guix-all}: Total number of all guix packages\n    46. {hpkg-all}: Total number of all hpkg packages",
+            "description": "Output format of the module `Packages`. See Wiki for formatting syntax\n    1. {all}: Number of all packages\n    2. {pacman}: Number of pacman packages\n    3. {pacman-branch}: Pacman branch on manjaro\n    4. {dpkg}: Number of dpkg packages\n    5. {rpm}: Number of rpm packages\n    6. {emerge}: Number of emerge packages\n    7. {eopkg}: Number of eopkg packages\n    8. {xbps}: Number of xbps packages\n    9. {nix-system}: Number of nix-system packages\n    10. {nix-user}: Number of nix-user packages\n    11. {nix-default}: Number of nix-default packages\n    12. {apk}: Number of apk packages\n    13. {pkg}: Number of pkg packages\n    14. {flatpak-system}: Number of flatpak-system app packages\n    15. {flatpak-user}: Number of flatpak-user app packages\n    16. {snap}: Number of snap packages\n    17. {brew}: Number of brew packages\n    18. {brew-cask}: Number of brew-cask packages\n    19. {macports}: Number of macports packages\n    20. {scoop}: Number of scoop packages\n    21. {choco}: Number of choco packages\n    22. {pkgtool}: Number of pkgtool packages\n    23. {paludis}: Number of paludis packages\n    24. {winget}: Number of winget packages\n    25. {opkg}: Number of opkg packages\n    26. {am-system}: Number of am-system packages\n    27. {sorcery}: Number of sorcery packages\n    28. {lpkg}: Number of lpkg packages\n    29. {lpkgbuild}: Number of lpkgbuild packages\n    30. {guix-system}: Number of guix-system packages\n    31. {guix-user}: Number of guix-user packages\n    32. {guix-home}: Number of guix-home packages\n    33. {linglong}: Number of linglong packages\n    34. {pacstall}: Number of pacstall packages\n    35. {mport}: Number of mport packages\n    36. {qi}: Number of qi packages\n    37. {am-user}: Number of am-user (aka appman) packages\n    38. {pkgsrc}: Number of pkgsrc packages\n    39. {hpkg-system}: Number of hpkg-system packages\n    40. {hpkg-user}: Number of hpkg-user packages\n    41. {pisi}: Number of pisi packages\n    42. {soar}: Number of soar packages\n    43. {nix-all}: Total number of all nix packages\n    44. {flatpak-all}: Total number of all flatpak app packages\n    45. {brew-all}: Total number of all brew packages\n    46. {guix-all}: Total number of all guix packages\n    47. {hpkg-all}: Total number of all hpkg packages",
             "type": "string"
         },
         "physicaldiskFormat": {
diff --git a/src/detection/packages/packages.h b/src/detection/packages/packages.h
index eb8afc44a3..ad7dd93414 100644
--- a/src/detection/packages/packages.h
+++ b/src/detection/packages/packages.h
@@ -40,6 +40,7 @@ typedef struct FFPackagesResult
     uint32_t rpm;
     uint32_t scoop;
     uint32_t snap;
+    uint32_t soar;
     uint32_t sorcery;
     uint32_t winget;
     uint32_t xbps;
diff --git a/src/detection/packages/packages_linux.c b/src/detection/packages/packages_linux.c
index 43ed96e6c7..fa5c0aee62 100644
--- a/src/detection/packages/packages_linux.c
+++ b/src/detection/packages/packages_linux.c
@@ -682,4 +682,7 @@ void ffDetectPackagesImpl(FFPackagesResult* result, FFPackagesOptions* options)
 
     if (!(options->disabled & FF_PACKAGES_FLAG_AM_BIT))
         result->amUser = getAMUser();
+
+    if (!(options->disabled & FF_PACKAGES_FLAG_SOAR_BIT))
+        result->soar += getSQLite3Int(&baseDir, ".local/share/soar/db/soar.db", "SELECT COUNT(DISTINCT pkg_id || pkg_name) FROM packages WHERE is_installed = true", "soar");
 }
diff --git a/src/modules/packages/option.h b/src/modules/packages/option.h
index ec12db341c..37a93c151e 100644
--- a/src/modules/packages/option.h
+++ b/src/modules/packages/option.h
@@ -7,40 +7,41 @@
 typedef enum __attribute__((__packed__)) FFPackagesFlags
 {
     FF_PACKAGES_FLAG_NONE = 0,
-    FF_PACKAGES_FLAG_APK_BIT = 1 << 0,
-    FF_PACKAGES_FLAG_BREW_BIT = 1 << 1,
-    FF_PACKAGES_FLAG_CHOCO_BIT = 1 << 2,
-    FF_PACKAGES_FLAG_DPKG_BIT = 1 << 3,
-    FF_PACKAGES_FLAG_EMERGE_BIT = 1 << 4,
-    FF_PACKAGES_FLAG_EOPKG_BIT = 1 << 5,
-    FF_PACKAGES_FLAG_FLATPAK_BIT = 1 << 6,
-    FF_PACKAGES_FLAG_NIX_BIT = 1 << 7,
-    FF_PACKAGES_FLAG_OPKG_BIT = 1 << 8,
-    FF_PACKAGES_FLAG_PACMAN_BIT = 1 << 9,
-    FF_PACKAGES_FLAG_PALUDIS_BIT = 1 << 10,
-    FF_PACKAGES_FLAG_PKG_BIT = 1 << 11,
-    FF_PACKAGES_FLAG_PKGTOOL_BIT = 1 << 12,
-    FF_PACKAGES_FLAG_MACPORTS_BIT = 1 << 13,
-    FF_PACKAGES_FLAG_RPM_BIT = 1 << 14,
-    FF_PACKAGES_FLAG_SCOOP_BIT = 1 << 15,
-    FF_PACKAGES_FLAG_SNAP_BIT = 1 << 16,
-    FF_PACKAGES_FLAG_WINGET_BIT = 1 << 17,
-    FF_PACKAGES_FLAG_XBPS_BIT = 1 << 18,
-    FF_PACKAGES_FLAG_AM_BIT = 1 << 19,
-    FF_PACKAGES_FLAG_SORCERY_BIT = 1 << 20,
-    FF_PACKAGES_FLAG_LPKG_BIT = 1 << 21,
-    FF_PACKAGES_FLAG_LPKGBUILD_BIT = 1 << 22,
-    FF_PACKAGES_FLAG_GUIX_BIT = 1 << 23,
-    FF_PACKAGES_FLAG_LINGLONG_BIT = 1 << 24,
-    FF_PACKAGES_FLAG_PACSTALL_BIT = 1 << 25,
-    FF_PACKAGES_FLAG_MPORT_BIT = 1 << 26,
-    FF_PACKAGES_FLAG_QI_BIT = 1 << 27,
-    FF_PACKAGES_FLAG_PKGSRC_BIT = 1 << 28,
-    FF_PACKAGES_FLAG_HPKG_BIT = 1 << 29,
-    FF_PACKAGES_FLAG_PISI_BIT = 1 << 30,
-    FF_PACKAGES_FLAG_FORCE_UNSIGNED = UINT32_MAX,
+    FF_PACKAGES_FLAG_APK_BIT = 1ULL << 0,
+    FF_PACKAGES_FLAG_BREW_BIT = 1ULL << 1,
+    FF_PACKAGES_FLAG_CHOCO_BIT = 1ULL << 2,
+    FF_PACKAGES_FLAG_DPKG_BIT = 1ULL << 3,
+    FF_PACKAGES_FLAG_EMERGE_BIT = 1ULL << 4,
+    FF_PACKAGES_FLAG_EOPKG_BIT = 1ULL << 5,
+    FF_PACKAGES_FLAG_FLATPAK_BIT = 1ULL << 6,
+    FF_PACKAGES_FLAG_NIX_BIT = 1ULL << 7,
+    FF_PACKAGES_FLAG_OPKG_BIT = 1ULL << 8,
+    FF_PACKAGES_FLAG_PACMAN_BIT = 1ULL << 9,
+    FF_PACKAGES_FLAG_PALUDIS_BIT = 1ULL << 10,
+    FF_PACKAGES_FLAG_PKG_BIT = 1ULL << 11,
+    FF_PACKAGES_FLAG_PKGTOOL_BIT = 1ULL << 12,
+    FF_PACKAGES_FLAG_MACPORTS_BIT = 1ULL << 13,
+    FF_PACKAGES_FLAG_RPM_BIT = 1ULL << 14,
+    FF_PACKAGES_FLAG_SCOOP_BIT = 1ULL << 15,
+    FF_PACKAGES_FLAG_SNAP_BIT = 1ULL << 16,
+    FF_PACKAGES_FLAG_WINGET_BIT = 1ULL << 17,
+    FF_PACKAGES_FLAG_XBPS_BIT = 1ULL << 18,
+    FF_PACKAGES_FLAG_AM_BIT = 1ULL << 19,
+    FF_PACKAGES_FLAG_SORCERY_BIT = 1ULL << 20,
+    FF_PACKAGES_FLAG_LPKG_BIT = 1ULL << 21,
+    FF_PACKAGES_FLAG_LPKGBUILD_BIT = 1ULL << 22,
+    FF_PACKAGES_FLAG_GUIX_BIT = 1ULL << 23,
+    FF_PACKAGES_FLAG_LINGLONG_BIT = 1ULL << 24,
+    FF_PACKAGES_FLAG_PACSTALL_BIT = 1ULL << 25,
+    FF_PACKAGES_FLAG_MPORT_BIT = 1ULL << 26,
+    FF_PACKAGES_FLAG_QI_BIT = 1ULL << 27,
+    FF_PACKAGES_FLAG_PKGSRC_BIT = 1ULL << 28,
+    FF_PACKAGES_FLAG_HPKG_BIT = 1ULL << 29,
+    FF_PACKAGES_FLAG_PISI_BIT = 1ULL << 30,
+    FF_PACKAGES_FLAG_SOAR_BIT = 1ULL << 31,
+    FF_PACKAGES_FLAG_FORCE_UNSIGNED = UINT64_MAX,
 } FFPackagesFlags;
-static_assert(sizeof(FFPackagesFlags) == sizeof(uint32_t), "");
+static_assert(sizeof(FFPackagesFlags) == sizeof(uint64_t), "");
 
 typedef struct FFPackagesOptions
 {
diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c
index 8766cbda3b..8754cfa7f5 100644
--- a/src/modules/packages/packages.c
+++ b/src/modules/packages/packages.c
@@ -78,6 +78,7 @@ void ffPrintPackages(FFPackagesOptions* options)
         FF_PRINT_PACKAGE(mport)
         FF_PRINT_PACKAGE(qi)
         FF_PRINT_PACKAGE(pisi)
+        FF_PRINT_PACKAGE(soar)
 
         putchar('\n');
     }
@@ -130,6 +131,7 @@ void ffPrintPackages(FFPackagesOptions* options)
             FF_FORMAT_ARG(counts.hpkgSystem, "hpkg-system"),
             FF_FORMAT_ARG(counts.hpkgUser, "hpkg-user"),
             FF_FORMAT_ARG(counts.pisi, "pisi"),
+            FF_FORMAT_ARG(counts.soar, "soar"),
             FF_FORMAT_ARG(nixAll, "nix-all"),
             FF_FORMAT_ARG(flatpakAll, "flatpak-all"),
             FF_FORMAT_ARG(brewAll, "brew-all"),
@@ -222,6 +224,7 @@ bool ffParsePackagesCommandOptions(FFPackagesOptions* options, const char* key,
                 case 'S': if (false);
                     FF_TEST_PACKAGE_NAME(SCOOP)
                     FF_TEST_PACKAGE_NAME(SNAP)
+                    FF_TEST_PACKAGE_NAME(SOAR)
                     FF_TEST_PACKAGE_NAME(SORCERY)
                     break;
                 case 'W': if (false);
@@ -341,6 +344,7 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module)
                         case 'S': if (false);
                             FF_TEST_PACKAGE_NAME(SCOOP)
                             FF_TEST_PACKAGE_NAME(SNAP)
+                            FF_TEST_PACKAGE_NAME(SOAR)
                             FF_TEST_PACKAGE_NAME(SORCERY)
                             break;
                         case 'W': if (false);
@@ -400,6 +404,7 @@ void ffGeneratePackagesJsonConfig(FFPackagesOptions* options, yyjson_mut_doc* do
         FF_TEST_PACKAGE_NAME(RPM)
         FF_TEST_PACKAGE_NAME(SCOOP)
         FF_TEST_PACKAGE_NAME(SNAP)
+        FF_TEST_PACKAGE_NAME(SOAR)
         FF_TEST_PACKAGE_NAME(SORCERY)
         FF_TEST_PACKAGE_NAME(WINGET)
         FF_TEST_PACKAGE_NAME(XBPS)
@@ -459,6 +464,7 @@ void ffGeneratePackagesJsonResult(FF_MAYBE_UNUSED FFPackagesOptions* options, yy
     FF_APPEND_PACKAGE_COUNT(rpm)
     FF_APPEND_PACKAGE_COUNT(scoop)
     FF_APPEND_PACKAGE_COUNT(snap)
+    FF_APPEND_PACKAGE_COUNT(soar)
     FF_APPEND_PACKAGE_COUNT(sorcery)
     FF_APPEND_PACKAGE_COUNT(winget)
     FF_APPEND_PACKAGE_COUNT(xbps)
@@ -515,6 +521,7 @@ static FFModuleBaseInfo ffModuleInfo = {
         {"Number of hpkg-system packages", "hpkg-system"},
         {"Number of hpkg-user packages", "hpkg-user"},
         {"Number of pisi packages", "pisi"},
+        {"Number of soar packages", "soar"},
         {"Total number of all nix packages", "nix-all"},
         {"Total number of all flatpak app packages", "flatpak-all"},
         {"Total number of all brew packages", "brew-all"},