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 { dataDir = lib.mkOption {
type = lib.types.path; type = lib.types.str;
default = "/var/lib/personal-backlog"; default = "/var/lib/personal-backlog";
description = "Directory to store backlog data."; description = "Directory to store backlog data.";
}; };
@@ -67,17 +67,21 @@ in
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network.target" ]; after = [ "network.target" ];
preStart = lib.mkIf (!isDefaultUser) ''
mkdir -p ${cfg.dataDir}
'';
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
User = cfg.user; User = cfg.user;
Group = cfg.group; Group = cfg.group;
WorkingDirectory = cfg.dataDir;
ExecStart = "${cfg.package}/bin/personal-backlog --port ${toString cfg.port} --dir ${cfg.dataDir}"; ExecStart = "${cfg.package}/bin/personal-backlog --port ${toString cfg.port} --dir ${cfg.dataDir}";
Restart = "on-failure"; Restart = "on-failure";
RestartSec = 5; RestartSec = 5;
StateDirectory = lib.mkIf isDefaultUser "personal-backlog"; StateDirectory = lib.mkIf isDefaultUser "personal-backlog";
StateDirectoryMode = lib.mkIf isDefaultUser "0750"; StateDirectoryMode = lib.mkIf isDefaultUser "0750";
WorkingDirectory = lib.mkIf isDefaultUser cfg.dataDir;
NoNewPrivileges = true; NoNewPrivileges = true;
ProtectSystem = lib.mkIf isDefaultUser "strict"; ProtectSystem = lib.mkIf isDefaultUser "strict";