upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/nix
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2026-01-11 16:39:20 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2026-01-11 16:39:20 +0000
commitaf12eb7baa949bc40155c837741bfd597fd0764e (patch)
treef631896caab4184ac2cbb14b13d836a26ff7736e /nix
parent1b401d98048a88c9068fb916d363a4e4bb4e3db5 (diff)
fix(nix): use systemd tmpfiles for data directory creation
The preStart script was trying to chown directories but running as an unprivileged user, causing permission errors. Instead, use systemd tmpfiles.rules which run as root during system activation. This ensures data directories are created with correct ownership before the service starts.
Diffstat (limited to 'nix')
-rw-r--r--nix/module.nix16
1 files changed, 9 insertions, 7 deletions
diff --git a/nix/module.nix b/nix/module.nix
index 53a4d77..a175639 100644
--- a/nix/module.nix
+++ b/nix/module.nix
@@ -282,13 +282,7 @@ let
282 SystemCallErrorNumber = "EPERM"; 282 SystemCallErrorNumber = "EPERM";
283 }; 283 };
284 284
285 # Ensure data directories exist before starting 285 # Directory creation handled by systemd tmpfiles (see config section below)
286 preStart = ''
287 mkdir -p ${cfg.dataDir}/git
288 mkdir -p ${cfg.dataDir}/relay
289 chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir}
290 chmod 750 ${cfg.dataDir}
291 '';
292 }; 286 };
293 287
294 enabledInstances = 288 enabledInstances =
@@ -340,5 +334,13 @@ in {
340 systemd.services = mapAttrs' 334 systemd.services = mapAttrs'
341 (name: cfg: nameValuePair "ngit-grasp-${name}" (mkService name cfg)) 335 (name: cfg: nameValuePair "ngit-grasp-${name}" (mkService name cfg))
342 enabledInstances; 336 enabledInstances;
337
338 # Create data directories with proper ownership using tmpfiles
339 # This runs as root before the service starts
340 systemd.tmpfiles.rules = flatten (mapAttrsToList (name: cfg: [
341 "d ${cfg.dataDir} 0750 ${cfg.user} ${cfg.group} -"
342 "d ${cfg.dataDir}/git 0750 ${cfg.user} ${cfg.group} -"
343 "d ${cfg.dataDir}/relay 0750 ${cfg.user} ${cfg.group} -"
344 ]) enabledInstances);
343 }; 345 };
344} 346}