From 14c55b0b0a9d4c36f5da173f6d24440fdfe309ba Mon Sep 17 00:00:00 2001 From: Juan Llamas <38849891+xoltia@users.noreply.github.com> Date: Fri, 11 Jul 2025 12:18:55 -0500 Subject: [PATCH 1/2] Packages (Linux): add /etc/profiles/per-user detection for nix user packages --- src/detection/packages/packages_linux.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/detection/packages/packages_linux.c b/src/detection/packages/packages_linux.c index 844b3de914..aed9f7215b 100644 --- a/src/detection/packages/packages_linux.c +++ b/src/detection/packages/packages_linux.c @@ -673,6 +673,10 @@ void ffDetectPackagesImpl(FFPackagesResult* result, FFPackagesOptions* options) ffStrbufSet(&profilePath, &stateDir); ffStrbufAppendS(&profilePath, "nix/profile"); result->nixUser += getNixPackages(&stateDir, "nix/profile"); + + // check if /etc/profiles/per-user/$USER exists + FF_STRBUF_AUTO_DESTROY userPkgsDir = ffStrbufCreateStatic("/etc/profiles/per-user/"); + result->nixUser += getNixPackages(&userPkgsDir, instance.state.platform.userName.chars); } if (!(options->disabled & FF_PACKAGES_FLAG_GUIX_BIT)) From 4aa774f96949b37cb0bb7de8930cf85332d072c7 Mon Sep 17 00:00:00 2001 From: Juan Llamas <38849891+xoltia@users.noreply.github.com> Date: Fri, 11 Jul 2025 12:33:54 -0500 Subject: [PATCH 2/2] Packages (Linux): clean up nix user package detection --- src/detection/packages/packages_linux.c | 33 ++++++++++--------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/src/detection/packages/packages_linux.c b/src/detection/packages/packages_linux.c index aed9f7215b..19543a8754 100644 --- a/src/detection/packages/packages_linux.c +++ b/src/detection/packages/packages_linux.c @@ -646,35 +646,28 @@ void ffDetectPackagesImpl(FFPackagesResult* result, FFPackagesOptions* options) #endif ffStrbufSet(&baseDir, &instance.state.platform.homeDir); + if (!(options->disabled & FF_PACKAGES_FLAG_NIX_BIT)) { - // check if ~/.nix-profile exists - FF_STRBUF_AUTO_DESTROY profilePath = ffStrbufCreateCopy(&baseDir); - ffStrbufAppendS(&profilePath, ".nix-profile"); - if (ffPathExists(profilePath.chars, FF_PATHTYPE_DIRECTORY)) - { - result->nixUser += getNixPackages(&baseDir, ".nix-profile"); - } + // Count packages from $HOME/.nix-profile + result->nixUser += getNixPackages(&baseDir, ".nix-profile"); - // check if $XDG_STATE_HOME/nix/profile exists - FF_STRBUF_AUTO_DESTROY stateDir = ffStrbufCreate(); - const char* stateHome = getenv("XDG_STATE_HOME"); - if(ffStrSet(stateHome)) + // Check in $XDG_STATE_HOME/nix/profile + FF_STRBUF_AUTO_DESTROY stateHome = ffStrbufCreate(); + const char* stateHomeEnv = getenv("XDG_STATE_HOME"); + if (ffStrSet(stateHomeEnv)) { - ffStrbufSetS(&stateDir, stateHome); - ffStrbufEnsureEndsWithC(&stateDir, '/'); + ffStrbufSetS(&stateHome, stateHomeEnv); + ffStrbufEnsureEndsWithC(&stateHome, '/'); } else { - ffStrbufSet(&stateDir, &instance.state.platform.homeDir); - ffStrbufAppendS(&stateDir, ".local/state/"); + ffStrbufSet(&stateHome, &instance.state.platform.homeDir); + ffStrbufAppendS(&stateHome, ".local/state/"); } + result->nixUser += getNixPackages(&stateHome, "nix/profile"); - ffStrbufSet(&profilePath, &stateDir); - ffStrbufAppendS(&profilePath, "nix/profile"); - result->nixUser += getNixPackages(&stateDir, "nix/profile"); - - // check if /etc/profiles/per-user/$USER exists + // Check in /etc/profiles/per-user/$USER FF_STRBUF_AUTO_DESTROY userPkgsDir = ffStrbufCreateStatic("/etc/profiles/per-user/"); result->nixUser += getNixPackages(&userPkgsDir, instance.state.platform.userName.chars); }