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