diff --git a/src/detection/packages/packages.h b/src/detection/packages/packages.h
index 12e98793..b1552761 100644
--- a/src/detection/packages/packages.h
+++ b/src/detection/packages/packages.h
@@ -22,6 +22,7 @@ typedef struct FFPackagesResult
     uint32_t hpkgSystem;
     uint32_t hpkgUser;
     uint32_t kiss;
+    uint32_t leaf;
     uint32_t linglong;
     uint32_t lpkg;
     uint32_t lpkgbuild;
diff --git a/src/detection/packages/packages_linux.c b/src/detection/packages/packages_linux.c
index fc5a0cf2..f4a3fca1 100644
--- a/src/detection/packages/packages_linux.c
+++ b/src/detection/packages/packages_linux.c
@@ -418,6 +418,7 @@ static void getPackageCounts(FFstrbuf* baseDir, FFPackagesResult* packageCounts,
     if (!(options->disabled & FF_PACKAGES_FLAG_DPKG_BIT)) packageCounts->dpkg += getNumStrings(baseDir, "/var/lib/dpkg/status", "Status: install ok installed", "dpkg");
     if (!(options->disabled & FF_PACKAGES_FLAG_LPKG_BIT)) packageCounts->lpkg += getNumStrings(baseDir, "/opt/Loc-OS-LPKG/installed-lpkg/Listinstalled-lpkg.list", "\n", "lpkg");
     if (!(options->disabled & FF_PACKAGES_FLAG_EMERGE_BIT)) packageCounts->emerge += countFilesRecursive(baseDir, "/var/db/pkg", "SIZE");
+    if (!(options->disabled & FF_PACKAGES_FLAG_LEAF_BIT)) packageCounts->leaf += countFilesRecursive(baseDir, "/var/lib/leaf/trace", "FILES");
     if (!(options->disabled & FF_PACKAGES_FLAG_EOPKG_BIT)) packageCounts->eopkg += getNumElements(baseDir, "/var/lib/eopkg/package", true);
     if (!(options->disabled & FF_PACKAGES_FLAG_FLATPAK_BIT)) packageCounts->flatpakSystem += getFlatpakPackages(baseDir, "/var/lib");
     if (!(options->disabled & FF_PACKAGES_FLAG_KISS_BIT)) packageCounts->kiss += getNumElements(baseDir, "/var/db/kiss/installed", true);
diff --git a/src/modules/packages/option.h b/src/modules/packages/option.h
index f3954138..a7a9991c 100644
--- a/src/modules/packages/option.h
+++ b/src/modules/packages/option.h
@@ -37,6 +37,7 @@ typedef enum __attribute__((__packed__)) FFPackagesFlags
     FF_PACKAGES_FLAG_PISI_BIT = 1ULL << 29,
     FF_PACKAGES_FLAG_SOAR_BIT = 1ULL << 30,
     FF_PACKAGES_FLAG_KISS_BIT = 1ULL << 31,
+    FF_PACKAGES_FLAG_LEAF_BIT = 1ULL << 32,
     FF_PACKAGES_FLAG_FORCE_UNSIGNED = UINT64_MAX,
 } FFPackagesFlags;
 static_assert(sizeof(FFPackagesFlags) == sizeof(uint64_t), "");
diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c
index 5f78a052..5628edd9 100644
--- a/src/modules/packages/packages.c
+++ b/src/modules/packages/packages.c
@@ -147,6 +147,7 @@ bool ffPrintPackages(FFPackagesOptions* options)
         FF_PRINT_PACKAGE(mport)
         FF_PRINT_PACKAGE(pisi)
         FF_PRINT_PACKAGE(soar)
+        FF_PRINT_PACKAGE(leaf)
 
         putchar('\n');
     }
@@ -196,6 +197,7 @@ bool ffPrintPackages(FFPackagesOptions* options)
             FF_FORMAT_ARG(counts.pisi, "pisi"),
             FF_FORMAT_ARG(counts.soar, "soar"),
             FF_FORMAT_ARG(counts.kiss, "kiss"),
+            FF_FORMAT_ARG(counts.leaf, "leaf"),
             FF_FORMAT_ARG(nixAll, "nix-all"),
             FF_FORMAT_ARG(flatpakAll, "flatpak-all"),
             FF_FORMAT_ARG(brewAll, "brew-all"),
@@ -435,6 +437,7 @@ bool ffGeneratePackagesJsonResult(FF_MAYBE_UNUSED FFPackagesOptions* options, yy
     FF_APPEND_PACKAGE_COUNT(sorcery)
     FF_APPEND_PACKAGE_COUNT(winget)
     FF_APPEND_PACKAGE_COUNT(xbps)
+    FF_APPEND_PACKAGE_COUNT(leaf)
     yyjson_mut_obj_add_strbuf(doc, obj, "pacmanBranch", &counts.pacmanBranch);
 
     return true;
@@ -506,6 +509,7 @@ FFModuleBaseInfo ffPackagesModuleInfo = {
         {"Number of pisi packages", "pisi"},
         {"Number of soar packages", "soar"},
         {"Number of kiss packages", "kiss"},
+        {"Number of leaf packages", "leaf"},
         {"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"},
