about summary refs log tree commit diff
path: root/src/nix-collect-garbage/nix-collect-garbage.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/nix-collect-garbage/nix-collect-garbage.cc')
-rw-r--r--src/nix-collect-garbage/nix-collect-garbage.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/nix-collect-garbage/nix-collect-garbage.cc b/src/nix-collect-garbage/nix-collect-garbage.cc
index a8f6c03c2377..740ef88f5395 100644
--- a/src/nix-collect-garbage/nix-collect-garbage.cc
+++ b/src/nix-collect-garbage/nix-collect-garbage.cc
@@ -1,3 +1,4 @@
+#include "store-api.hh"
 #include "hash.hh"
 #include "shared.hh"
 #include "globals.hh"
@@ -87,7 +88,13 @@ int main(int argc, char * * argv)
         if (removeOld) removeOldGenerations(profilesDir);
 
         // Run the actual garbage collector.
-        if (!dryRun) runProgramSimple(settings.nixBinDir + "/nix-store", Strings{"--gc"});
+        if (!dryRun) {
+            store = openStore(false);
+            GCOptions options;
+            options.action = GCOptions::gcDeleteDead;
+            GCResults results;
+            PrintFreed freed(true, results);
+            store->collectGarbage(options, results);
+        }
     });
 }
-