perlPackages.NetAsyncWebSocket: 0.13 -> 0.14 (#352432)
[NixPkgs.git] / nixos / modules / services / torrent / torrentstream.nix
blob7374cad4f260d36d663149236bf9f783faedbcc3
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
8 let
9   cfg = config.services.torrentstream;
10   dataDir = "/var/lib/torrentstream/";
13   options.services.torrentstream = {
14     enable = lib.mkEnableOption "TorrentStream daemon";
15     package = lib.mkPackageOption pkgs "torrentstream" { };
16     port = lib.mkOption {
17       type = lib.types.port;
18       default = 5082;
19       description = ''
20         TorrentStream port.
21       '';
22     };
23     openFirewall = lib.mkOption {
24       type = lib.types.bool;
25       default = false;
26       description = ''
27         Open ports in the firewall for TorrentStream daemon.
28       '';
29     };
30     address = lib.mkOption {
31       type = lib.types.str;
32       default = "0.0.0.0";
33       description = ''
34         Address to listen on.
35       '';
36     };
37   };
38   config = lib.mkIf cfg.enable {
39     systemd.services.torrentstream = {
40       after = [ "network.target" ];
41       description = "TorrentStream Daemon";
42       wantedBy = [ "multi-user.target" ];
43       serviceConfig = {
44         ExecStart = lib.getExe cfg.package;
45         Restart = "on-failure";
46         UMask = "077";
47         StateDirectory = "torrentstream";
48         DynamicUser = true;
49       };
50       environment = {
51         WEB_PORT = toString cfg.port;
52         DOWNLOAD_PATH = "%S/torrentstream";
53         LISTEN_ADDR = cfg.address;
54       };
55     };
56     networking.firewall.allowedTCPPorts = lib.mkIf cfg.openFirewall [ cfg.port ];
57   };