Fix NixOS module: create dataDir for real users, use str type

- Add preStart to create dataDir when using real user
- Only set WorkingDirectory for default system user
- Change dataDir type from path to str
This commit is contained in:
Alexander
2026-05-18 18:56:38 +02:00
parent 70d81af82f
commit 17e67f9ed6
+6 -2
View File
@@ -28,7 +28,7 @@ in
};
dataDir = lib.mkOption {
type = lib.types.path;
type = lib.types.str;
default = "/var/lib/personal-backlog";
description = "Directory to store backlog data.";
};
@@ -67,17 +67,21 @@ in
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
preStart = lib.mkIf (!isDefaultUser) ''
mkdir -p ${cfg.dataDir}
'';
serviceConfig = {
Type = "simple";
User = cfg.user;
Group = cfg.group;
WorkingDirectory = cfg.dataDir;
ExecStart = "${cfg.package}/bin/personal-backlog --port ${toString cfg.port} --dir ${cfg.dataDir}";
Restart = "on-failure";
RestartSec = 5;
StateDirectory = lib.mkIf isDefaultUser "personal-backlog";
StateDirectoryMode = lib.mkIf isDefaultUser "0750";
WorkingDirectory = lib.mkIf isDefaultUser cfg.dataDir;
NoNewPrivileges = true;
ProtectSystem = lib.mkIf isDefaultUser "strict";