]> git.scottworley.com Git - nix-profile-gc/commitdiff
profile-gc: Make activeMeasurementGranularity configurable
authorScott Worley <scottworley@scottworley.com>
Thu, 8 Dec 2022 02:28:07 +0000 (18:28 -0800)
committerScott Worley <scottworley@scottworley.com>
Thu, 8 Dec 2022 02:28:07 +0000 (18:28 -0800)
modules/profile-gc.nix

index 02b723829fba668014722f18faa633a647781d70..ba2821a8fc599e45397c6550c59cb547283d550f 100644 (file)
@@ -49,16 +49,23 @@ in {
           awhile (so keepLatest won't protect them) generates a bunch of broken profiles (so
           keepLast won't protect them) while trying to get up to date.
 
           awhile (so keepLatest won't protect them) generates a bunch of broken profiles (so
           keepLast won't protect them) while trying to get up to date.
 
-          This is approximate and has a useful granularity of an hour
-          (config.systemd.timers.profile-gc-log-active.timerConfig.OnUnitActiveSec).
-          Do not set less than this.
+          This threshold is approximate, see activeMeasurementGranularity.
+          Do not set less than activeMeasurementGranularity!
         '';
         '';
-        # We admonish the user "Do not set less than this." and check it at runtime rather
-        # than verifying this with an assertion now because parsing these durations at
-        # configuration-time requires import-from-derivation, which we want to avoid.  :(
+        # We admonish the user "Do not set less than activeMeasurementGranularity!" and check
+        # it at runtime rather than verifying this with an assertion at evaluation time because
+        # parsing these durations at evaluation-time requires import-from-derivation, which we
+        # want to avoid.  :(
         type = lib.types.str;
         default = "5 days";
       };
         type = lib.types.str;
         default = "5 days";
       };
+      activeMeasurementGranularity = lib.mkOption {
+        description = ''
+          How often to make a note of the currently-active profiles.  This is the useful
+          granularity and minimum value of activeThreshold.
+        '';
+        default = "1 hour";
+      };
       keepLatest = lib.mkOption {
         description = ''
           Keep all profiles younger than this duration (systemd.time format).
       keepLatest = lib.mkOption {
         description = ''
           Keep all profiles younger than this duration (systemd.time format).
@@ -190,7 +197,7 @@ in {
     '';
     systemd.timers.profile-gc-log-active = {
       wantedBy = [ "timers.target" ];
     '';
     systemd.timers.profile-gc-log-active = {
       wantedBy = [ "timers.target" ];
-      timerConfig.OnUnitActiveSec = "1 hour";
+      timerConfig.OnUnitActiveSec = cfg.activeMeasurementGranularity;
     };
     systemd.services.profile-gc-log-active = {
       description =
     };
     systemd.services.profile-gc-log-active = {
       description =