From 9b2783fae9b141717f670bd5c11d36823ceef2a9 Mon Sep 17 00:00:00 2001 From: averyv Date: Thu, 21 Aug 2025 23:30:00 +0100 Subject: [PATCH] pihole-ftl: Fix log deleter service creating an empty database If it runs before the main service itself, the sqlite command may create an empty database, causing the main service to not run the initial database setup. --- nixos/modules/services/networking/pihole-ftl.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/networking/pihole-ftl.nix b/nixos/modules/services/networking/pihole-ftl.nix index 5a8c361adfeb..a964f868ad81 100644 --- a/nixos/modules/services/networking/pihole-ftl.nix +++ b/nixos/modules/services/networking/pihole-ftl.nix @@ -415,11 +415,16 @@ in script = let days = toString cfg.queryLogDeleter.age; - database = "${cfg.stateDirectory}/pihole-FTL.db"; + database = cfg.settings.files.database; in '' set -euo pipefail + # Avoid creating an empty database file if it doesn't yet exist + if [ ! -f "${database}" ]; then + exit 0; + fi + echo "Deleting query logs older than ${days} days" ${getExe cfg.package} sqlite3 "${database}" "DELETE FROM query_storage WHERE timestamp <= CAST(strftime('%s', date('now', '-${days} day')) AS INT); select changes() from query_storage limit 1" '';