From 9a9161fc5586182484a0f7655d7769fd3d42eb89 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 18 Sep 2024 11:04:44 +0200 Subject: [PATCH] Delay nix-gc until /home is mounted Prevents starting the garbage collector before the remote FS are mounted, in particular /home. Otherwise, all the gcroots which have symlinks in /home will be considered stale and they will be removed. See: https://jungle.bsc.es/git/rarias/jungle/issues/79 Reviewed-by: Aleix Roca Nonell --- m/common/base/nix.nix | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/m/common/base/nix.nix b/m/common/base/nix.nix index aef1397..dc79647 100644 --- a/m/common/base/nix.nix +++ b/m/common/base/nix.nix @@ -32,6 +32,21 @@ }; }; + # The nix-gc.service can begin its execution *before* /home is mounted, + # causing it to remove all gcroots considering them as stale, as it cannot + # access the symlink. To prevent this problem, we force the service to wait + # until /home is mounted as well as other remote FS like /ceph. + systemd.services.nix-gc = { + # Start remote-fs.target if not already being started and fail if it fails + # to start. It will also be stopped if the remote-fs.target fails after + # starting successfully. + bindsTo = [ "remote-fs.target" ]; + # Wait until remote-fs.target fully starts before starting this one. + after = [ "remote-fs.target"]; + # Ensure we can access a remote path inside /home + unitConfig.ConditionPathExists = "/home/Computational"; + }; + # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave