mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-25 20:34:52 +03:00
Add services file for taskwarrior server service
This commit is contained in:
parent
d06dfe861d
commit
da53312f5c
208
nixos/modules/services/misc/taskserver.nix
Normal file
208
nixos/modules/services/misc/taskserver.nix
Normal file
@ -0,0 +1,208 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.taskserver;
|
||||||
|
in {
|
||||||
|
|
||||||
|
options = {
|
||||||
|
services.taskserver = {
|
||||||
|
|
||||||
|
enable = mkEnableOption "Taskwarrior server.";
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
default = "taskd";
|
||||||
|
description = "User for taskserver.";
|
||||||
|
};
|
||||||
|
|
||||||
|
dataDir = mkOption {
|
||||||
|
default = "/var/lib/taskserver/data/";
|
||||||
|
description = "Data directory for taskserver.";
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
caCert = mkOption {
|
||||||
|
description = "Fully qualified path to the CA certificate. Optional.";
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
ciphers = mkOption {
|
||||||
|
default = "NORMAL";
|
||||||
|
description = ''
|
||||||
|
List of GnuTLS ciphers to use. See your
|
||||||
|
GnuTLS documentation for full details.
|
||||||
|
'';
|
||||||
|
type = types.string;
|
||||||
|
};
|
||||||
|
|
||||||
|
confirmation = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Determines whether certain commands are confirmed.
|
||||||
|
'';
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
debug = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Logs debugging information.
|
||||||
|
'';
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
extensions = mkOption {
|
||||||
|
description = ''
|
||||||
|
Fully qualified path of the Taskserver extension scripts. Currently
|
||||||
|
there are none.
|
||||||
|
'';
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
ipLog = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Logs the IP addresses of incoming requests.
|
||||||
|
'';
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
log = mkOption {
|
||||||
|
default = "/tmp/taskd.log";
|
||||||
|
description = ''
|
||||||
|
Fully-qualified path name to the Taskserver log file.
|
||||||
|
'';
|
||||||
|
type = types.string;
|
||||||
|
};
|
||||||
|
|
||||||
|
pidFile = mkOption {
|
||||||
|
default = "/tmp/taskd.pid";
|
||||||
|
description = ''
|
||||||
|
Fully-qualified path name to the Taskserver PID file. This is used
|
||||||
|
by the 'taskdctl' script to start/stop the daemon.
|
||||||
|
'';
|
||||||
|
type = types.string;
|
||||||
|
};
|
||||||
|
|
||||||
|
queueSize = mkOption {
|
||||||
|
default = 10;
|
||||||
|
description = ''
|
||||||
|
Size of the connection backlog. See 'man listen'.
|
||||||
|
'';
|
||||||
|
type = types.int;
|
||||||
|
};
|
||||||
|
|
||||||
|
requestLimit = mkOption {
|
||||||
|
default = 1048576;
|
||||||
|
description = ''
|
||||||
|
Size limit of incoming requests, in bytes.
|
||||||
|
'';
|
||||||
|
type = types.int;
|
||||||
|
};
|
||||||
|
|
||||||
|
client = {
|
||||||
|
|
||||||
|
allow = mkOption {
|
||||||
|
default = [ "[Tt]ask [2-9]+" ];
|
||||||
|
description = ''
|
||||||
|
A comma-separated list of regular expressions that are matched
|
||||||
|
against the reported client id (such as "task 2.3.0"). The values
|
||||||
|
'all' or 'none' have special meaning. Overidden by any
|
||||||
|
'client.deny' entry.
|
||||||
|
'';
|
||||||
|
type = types.listOf types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
cert = mkOption {
|
||||||
|
description = ''
|
||||||
|
Fully qualified path of the client cert. This is used by the
|
||||||
|
'client' command.
|
||||||
|
'';
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
deny = mkOption {
|
||||||
|
default = [ "[Tt]ask [2-9]+" ];
|
||||||
|
description = ''
|
||||||
|
A comma-separated list of regular expressions that are matched
|
||||||
|
against the reported client id (such as "task 2.3.0"). The values
|
||||||
|
'all' or 'none' have special meaning. Any 'client.deny' entry
|
||||||
|
overrides any 'client.allow' entry.
|
||||||
|
'';
|
||||||
|
type = types.listOf types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
server = {
|
||||||
|
host = mkOption {
|
||||||
|
default = "localhost";
|
||||||
|
description = ''
|
||||||
|
The address (IPv4, IPv6 or DNS) of the Taskserver.
|
||||||
|
'';
|
||||||
|
type = types.string;
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
default = 53589;
|
||||||
|
description = ''
|
||||||
|
Portnumber of the Taskserver.
|
||||||
|
'';
|
||||||
|
type = types.int;
|
||||||
|
};
|
||||||
|
|
||||||
|
cert = mkOption {
|
||||||
|
description = "Fully qualified path to the server certificate";
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
crl = mkOption {
|
||||||
|
description = ''
|
||||||
|
Fully qualified path to the server certificate
|
||||||
|
revocation list.
|
||||||
|
'';
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
key = mkOption {
|
||||||
|
description = ''
|
||||||
|
Fully qualified path to the server key.
|
||||||
|
|
||||||
|
Note that sending the HUP signal to the Taskserver
|
||||||
|
causes a configuration file reload before the next
|
||||||
|
request is handled.
|
||||||
|
'';
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.taskserver ];
|
||||||
|
|
||||||
|
systemd.services.taskserver = {
|
||||||
|
description = "taskserver Service.";
|
||||||
|
path = [ pkgs.taskserver ];
|
||||||
|
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
|
||||||
|
preStart = ''
|
||||||
|
mkdir -p ${cfg.dataDir}
|
||||||
|
'';
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
TASKDDATA = "${cfg.dataDir}";
|
||||||
|
};
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.taskserver}/bin/taskdctl start";
|
||||||
|
ExecStop = "${pkgs.taskserver}/bin/taskdctl stop";
|
||||||
|
User = cfg.user;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user