1{ config, lib, pkgs, ... }:
2
3with lib;
4let
5 cfg = config.services.opentracker;
6in {
7 options.services.opentracker = {
8 enable = mkEnableOption "opentracker";
9
10 package = mkOption {
11 type = types.package;
12 description = ''
13 opentracker package to use
14 '';
15 default = pkgs.opentracker;
16 defaultText = "pkgs.opentracker";
17 };
18
19 extraOptions = mkOption {
20 type = types.separatedString " ";
21 description = ''
22 Configuration Arguments for opentracker
23 See https://erdgeist.org/arts/software/opentracker/ for all params
24 '';
25 default = "";
26 };
27 };
28
29 config = lib.mkIf cfg.enable {
30
31 systemd.services.opentracker = {
32 description = "opentracker server";
33 after = [ "network.target" ];
34 wantedBy = [ "multi-user.target" ];
35 restartIfChanged = true;
36 serviceConfig = {
37 ExecStart = "${cfg.package}/bin/opentracker ${cfg.extraOptions}";
38 PrivateTmp = true;
39 WorkingDirectory = "/var/empty";
40 # By default opentracker drops all privileges and runs in chroot after starting up as root.
41 };
42 };
43 };
44}
45