From 4389500ccccad7744b8183c3eb215d5d291573b9 Mon Sep 17 00:00:00 2001 From: jasmine Date: Sat, 11 Oct 2025 08:06:00 +0800 Subject: [PATCH] fix(borgbackup): add network dependencies to onsite services Fixes DNS resolution failures when persistent timers trigger backups after system wake. The NixOS borgbackup module adds network-online.target dependencies to the timer when persistentTimer=true, but systemd timers don't pass their dependencies to the services they trigger. This caused onsite backups to start before the network was ready, resulting in "Could not resolve hostname" errors. Adding after/wants network-online.target directly to the service ensures the backup waits for network availability regardless of how it's triggered (timer or offsite's Wants= dependency). Example failure (Oct 11, 07:43): - Backup started at 07:43:43 (persistent timer caught up) - DNS lookup failed: "Could not resolve hostname viridian.home.arpa" - WiFi connected at 07:43:47 (4 seconds too late) Applied to both fuchsia and viridian onsite backups. --- nixos/fuchsia/services/borgbackup/onsite.nix | 2 ++ nixos/viridian/services/borgbackup/onsite.nix | 2 ++ 2 files changed, 4 insertions(+) diff --git a/nixos/fuchsia/services/borgbackup/onsite.nix b/nixos/fuchsia/services/borgbackup/onsite.nix index 0b4b828..79600dc 100644 --- a/nixos/fuchsia/services/borgbackup/onsite.nix +++ b/nixos/fuchsia/services/borgbackup/onsite.nix @@ -13,6 +13,8 @@ in { # Configure service to wait for completion before marking as active systemd.services."borgbackup-job-onsite" = { + after = [ "network-online.target" ]; + wants = [ "network-online.target" ]; serviceConfig = { Type = "oneshot"; }; diff --git a/nixos/viridian/services/borgbackup/onsite.nix b/nixos/viridian/services/borgbackup/onsite.nix index 81fed0f..6e1b669 100644 --- a/nixos/viridian/services/borgbackup/onsite.nix +++ b/nixos/viridian/services/borgbackup/onsite.nix @@ -22,6 +22,8 @@ in { # Configure service to wait for completion before marking as active systemd.services."borgbackup-job-onsite" = { + after = [ "network-online.target" ]; + wants = [ "network-online.target" ]; serviceConfig = { Type = "oneshot"; };