diff --git a/CMakeLists.txt b/CMakeLists.txt index 75d5ed634..547d4f06e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,6 +88,15 @@ 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 PALUDIS PKG PKGTOOL RPM SCOOP SNAP 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) + else() + option(PACKAGES_DISABLE_${package_manager} "Disable ${package_manager} package manager detection by default" OFF) + endif() +endforeach() + if (LINUX) set(CUSTOM_PCI_IDS_PATH "" CACHE STRING "Custom path to file pci.ids, defaults to `/usr/share/hwdata/pci.ids`") set(CUSTOM_AMDGPU_IDS_PATH "" CACHE STRING "Custom path to file amdgpu.ids, defaults to `/usr/share/libdrm/amdgpu.ids`") @@ -1264,6 +1273,22 @@ if(NOT WIN32) endif() endif() +set(PACKAGES_DISABLE_LIST "") +foreach(package_manager ${PACKAGE_MANAGERS}) + if(PACKAGES_DISABLE_${package_manager}) + list(APPEND PACKAGES_DISABLE_LIST "${package_manager}") + endif() +endforeach() +if("${PACKAGES_DISABLE_LIST}" STREQUAL "") + set(PACKAGES_DISABLE_LIST "FF_PACKAGES_FLAG_NONE") +else() + message(STATUS "Disabled package managers: ${PACKAGES_DISABLE_LIST}") + list(TRANSFORM PACKAGES_DISABLE_LIST PREPEND "FF_PACKAGES_FLAG_") + list(TRANSFORM PACKAGES_DISABLE_LIST APPEND "_BIT") + list(JOIN PACKAGES_DISABLE_LIST " | " PACKAGES_DISABLE_LIST) +endif() +target_compile_definitions(libfastfetch PRIVATE FF_PACKAGES_DISABLE_LIST=${PACKAGES_DISABLE_LIST}) + ###################### # Executable targets # ###################### diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index 3d056c12d..3e2b09fc7 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -336,6 +336,7 @@ void ffGeneratePackagesJsonConfig(FFPackagesOptions* options, yyjson_mut_doc* do yyjson_mut_val* arr = yyjson_mut_obj_add_arr(doc, module, "disabled"); #define FF_TEST_PACKAGE_NAME(name) else if ((options->disabled & FF_PACKAGES_FLAG_ ## name ## _BIT) != (defaultOptions.disabled & FF_PACKAGES_FLAG_ ## name ## _BIT)) { yyjson_mut_arr_add_str(doc, arr, #name); } if (false); + FF_TEST_PACKAGE_NAME(AM) FF_TEST_PACKAGE_NAME(APK) FF_TEST_PACKAGE_NAME(BREW) FF_TEST_PACKAGE_NAME(CHOCO) @@ -343,24 +344,23 @@ void ffGeneratePackagesJsonConfig(FFPackagesOptions* options, yyjson_mut_doc* do FF_TEST_PACKAGE_NAME(EMERGE) FF_TEST_PACKAGE_NAME(EOPKG) FF_TEST_PACKAGE_NAME(FLATPAK) + FF_TEST_PACKAGE_NAME(GUIX) + FF_TEST_PACKAGE_NAME(LINGLONG) FF_TEST_PACKAGE_NAME(LPKG) FF_TEST_PACKAGE_NAME(LPKGBUILD) + FF_TEST_PACKAGE_NAME(MACPORTS) FF_TEST_PACKAGE_NAME(NIX) FF_TEST_PACKAGE_NAME(OPKG) FF_TEST_PACKAGE_NAME(PACMAN) FF_TEST_PACKAGE_NAME(PALUDIS) FF_TEST_PACKAGE_NAME(PKG) FF_TEST_PACKAGE_NAME(PKGTOOL) - FF_TEST_PACKAGE_NAME(MACPORTS) FF_TEST_PACKAGE_NAME(RPM) FF_TEST_PACKAGE_NAME(SCOOP) FF_TEST_PACKAGE_NAME(SNAP) + FF_TEST_PACKAGE_NAME(SORCERY) FF_TEST_PACKAGE_NAME(WINGET) FF_TEST_PACKAGE_NAME(XBPS) - FF_TEST_PACKAGE_NAME(AM) - FF_TEST_PACKAGE_NAME(SORCERY) - FF_TEST_PACKAGE_NAME(GUIX) - FF_TEST_PACKAGE_NAME(LINGLONG) #undef FF_TEST_PACKAGE_NAME } } @@ -473,7 +473,7 @@ void ffInitPackagesOptions(FFPackagesOptions* options) ); ffOptionInitModuleArg(&options->moduleArgs, "󰏖"); - options->disabled = FF_PACKAGES_FLAG_WINGET_BIT; + options->disabled = FF_PACKAGES_DISABLE_LIST; } void ffDestroyPackagesOptions(FFPackagesOptions* options)