[bug#77041,14/16] services: virtual-build-machine: Turn GC job into a Shepherd timer.

Message ID 134eeae955e072d41a212d5b0a41c43fed4edd4b.1742073920.git.ludo@gnu.org
State New
Headers
Series Replacing mcron jobs by Shepherd timers |

Commit Message

Ludovic Courtès March 15, 2025, 9:37 p.m. UTC
  * gnu/services/virtualization.scm (gc-service-type): New variable.
(%virtual-build-machine-operating-system): Use instead of extending
‘mcron-service-type’.

Change-Id: I56d7f9293f582269e5a34d91bf4f3edddfa844e0
---
 gnu/services/virtualization.scm | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)
  

Patch

diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 796b9bf86f..171915d62d 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -40,7 +40,6 @@  (define-module (gnu services virtualization)
   #:use-module (gnu services base)
   #:use-module (gnu services configuration)
   #:use-module (gnu services dbus)
-  #:use-module (gnu services mcron)
   #:use-module (gnu services shepherd)
   #:use-module (gnu services ssh)
   #:use-module (gnu services)
@@ -1304,6 +1303,23 @@  (define %system-log-message-destination
             (else
              '("/dev/console")))))
 
+(define gc-service-type                           ;TODO: Factorize.
+  (shepherd-service-type
+   'garbage-collection
+   (lambda _
+     (shepherd-service
+      (provision '(gc))
+      (requirement '(user-processes guix-daemon))
+      (start #~(make-timer-constructor
+                (calendar-event #:minutes '(12))
+                (command
+                 '("/run/current-system/profile/bin/guix" "gc" "-F2G"))
+                #:wait-for-termination? #t))
+      (stop #~(make-timer-constructor))
+      (actions (list shepherd-trigger-action))))
+   #t
+   (description "Periodically collect garbage.")))
+
 (define %virtual-build-machine-operating-system
   (operating-system
     (host-name "build-machine")
@@ -1336,9 +1352,7 @@  (define %virtual-build-machine-operating-system
                                (openssh openssh-sans-x)))
 
                      ;; Run GC once per hour.
-                     (simple-service 'perdiodic-gc mcron-service-type
-                                     (list #~(job "12 * * * *"
-                                                  "guix gc -F 2G")))
+                     (service gc-service-type)
 
                      (modify-services %base-services
                        ;; By default, the secret service introduces a