nixos/taskserver: Reorder into one mkMerge
No changes in functionality but rather just restructuring the module definitions to be one mkMerge, which now uses mkIf from the top-level scope of the CA initialization service so we can better abstract additional options we might need there. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
This commit is contained in:
parent
5062bf1b84
commit
5be76d0b55
@ -182,8 +182,6 @@ let
|
|||||||
propagatedBuildInputs = [ pkgs.pythonPackages.click ];
|
propagatedBuildInputs = [ pkgs.pythonPackages.click ];
|
||||||
};
|
};
|
||||||
|
|
||||||
withMeta = meta: defs: mkMerge [ defs { inherit meta; } ];
|
|
||||||
|
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
services.taskserver = {
|
services.taskserver = {
|
||||||
@ -375,10 +373,8 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = withMeta {
|
config = mkMerge [
|
||||||
doc = ./taskserver.xml;
|
(mkIf cfg.enable {
|
||||||
} (mkIf cfg.enable {
|
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.taskserver nixos-taskserver ];
|
environment.systemPackages = [ pkgs.taskserver nixos-taskserver ];
|
||||||
|
|
||||||
users.users = optional (cfg.user == "taskd") {
|
users.users = optional (cfg.user == "taskd") {
|
||||||
@ -393,7 +389,56 @@ in {
|
|||||||
gid = config.ids.gids.taskd;
|
gid = config.ids.gids.taskd;
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.taskserver-ca = mkIf needToCreateCA {
|
systemd.services.taskserver-init = {
|
||||||
|
requiredBy = [ "taskserver.service" ];
|
||||||
|
description = "Initialize Taskserver Data Directory";
|
||||||
|
|
||||||
|
preStart = ''
|
||||||
|
mkdir -m 0770 -p "${cfg.dataDir}"
|
||||||
|
chown "${cfg.user}:${cfg.group}" "${cfg.dataDir}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
script = ''
|
||||||
|
${taskd} init
|
||||||
|
echo "include ${configFile}" > "${cfg.dataDir}/config"
|
||||||
|
touch "${cfg.dataDir}/.is_initialized"
|
||||||
|
'';
|
||||||
|
|
||||||
|
environment.TASKDDATA = cfg.dataDir;
|
||||||
|
|
||||||
|
unitConfig.ConditionPathExists = "!${cfg.dataDir}/.is_initialized";
|
||||||
|
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
serviceConfig.User = cfg.user;
|
||||||
|
serviceConfig.Group = cfg.group;
|
||||||
|
serviceConfig.PermissionsStartOnly = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.taskserver = {
|
||||||
|
description = "Taskwarrior Server";
|
||||||
|
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
|
||||||
|
environment.TASKDDATA = cfg.dataDir;
|
||||||
|
|
||||||
|
preStart = let
|
||||||
|
jsonOrgs = builtins.toJSON cfg.organisations;
|
||||||
|
jsonFile = pkgs.writeText "orgs.json" jsonOrgs;
|
||||||
|
helperTool = "${nixos-taskserver}/bin/nixos-taskserver";
|
||||||
|
in "${helperTool} process-json '${jsonFile}'";
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "@${taskd} taskd server";
|
||||||
|
ExecReload = "${pkgs.coreutils}/bin/kill -USR1 $MAINPID";
|
||||||
|
PermissionsStartOnly = true;
|
||||||
|
User = cfg.user;
|
||||||
|
Group = cfg.group;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
(mkIf needToCreateCA {
|
||||||
|
systemd.services.taskserver-ca = {
|
||||||
requiredBy = [ "taskserver.service" ];
|
requiredBy = [ "taskserver.service" ];
|
||||||
after = [ "taskserver-init.service" ];
|
after = [ "taskserver-init.service" ];
|
||||||
before = [ "taskserver.service" ];
|
before = [ "taskserver.service" ];
|
||||||
@ -473,52 +518,7 @@ in {
|
|||||||
chmod go+x "${cfg.dataDir}/keys"
|
chmod go+x "${cfg.dataDir}/keys"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
})
|
||||||
systemd.services.taskserver-init = {
|
{ meta.doc = ./taskserver.xml; }
|
||||||
requiredBy = [ "taskserver.service" ];
|
];
|
||||||
description = "Initialize Taskserver Data Directory";
|
|
||||||
|
|
||||||
preStart = ''
|
|
||||||
mkdir -m 0770 -p "${cfg.dataDir}"
|
|
||||||
chown "${cfg.user}:${cfg.group}" "${cfg.dataDir}"
|
|
||||||
'';
|
|
||||||
|
|
||||||
script = ''
|
|
||||||
${taskd} init
|
|
||||||
echo "include ${configFile}" > "${cfg.dataDir}/config"
|
|
||||||
touch "${cfg.dataDir}/.is_initialized"
|
|
||||||
'';
|
|
||||||
|
|
||||||
environment.TASKDDATA = cfg.dataDir;
|
|
||||||
|
|
||||||
unitConfig.ConditionPathExists = "!${cfg.dataDir}/.is_initialized";
|
|
||||||
|
|
||||||
serviceConfig.Type = "oneshot";
|
|
||||||
serviceConfig.User = cfg.user;
|
|
||||||
serviceConfig.Group = cfg.group;
|
|
||||||
serviceConfig.PermissionsStartOnly = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.taskserver = {
|
|
||||||
description = "Taskwarrior Server";
|
|
||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
after = [ "network.target" ];
|
|
||||||
|
|
||||||
environment.TASKDDATA = cfg.dataDir;
|
|
||||||
|
|
||||||
preStart = let
|
|
||||||
jsonOrgs = builtins.toJSON cfg.organisations;
|
|
||||||
jsonFile = pkgs.writeText "orgs.json" jsonOrgs;
|
|
||||||
in "${nixos-taskserver}/bin/nixos-taskserver process-json '${jsonFile}'";
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = "@${taskd} taskd server";
|
|
||||||
ExecReload = "${pkgs.coreutils}/bin/kill -USR1 $MAINPID";
|
|
||||||
PermissionsStartOnly = true;
|
|
||||||
User = cfg.user;
|
|
||||||
Group = cfg.group;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user