python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / networking / tvheadend.nix
blob466dbbccad53906a4599afe7fe297f5ebc2b5dea
1 { config, lib, pkgs, ... }:
3 with lib;
5 let cfg     = config.services.tvheadend;
6     pidFile = "${config.users.users.tvheadend.home}/tvheadend.pid";
7 in
10   options = {
11     services.tvheadend = {
12       enable = mkEnableOption (lib.mdDoc "Tvheadend");
13       httpPort = mkOption {
14         type        = types.int;
15         default     = 9981;
16         description = lib.mdDoc "Port to bind HTTP to.";
17       };
19       htspPort = mkOption {
20         type        = types.int;
21         default     = 9982;
22         description = lib.mdDoc "Port to bind HTSP to.";
23       };
24     };
25   };
27   config = mkIf cfg.enable {
28     users.users.tvheadend = {
29       description = "Tvheadend Service user";
30       home        = "/var/lib/tvheadend";
31       createHome  = true;
32       isSystemUser = true;
33       group = "tvheadend";
34     };
35     users.groups.tvheadend = {};
37     systemd.services.tvheadend = {
38       description = "Tvheadend TV streaming server";
39       wantedBy    = [ "multi-user.target" ];
40       after       = [ "network.target" ];
42       serviceConfig = {
43         Type         = "forking";
44         PIDFile      = pidFile;
45         Restart      = "always";
46         RestartSec   = 5;
47         User         = "tvheadend";
48         Group        = "video";
49         ExecStart    = ''
50                        ${pkgs.tvheadend}/bin/tvheadend \
51                        --http_port ${toString cfg.httpPort} \
52                        --htsp_port ${toString cfg.htspPort} \
53                        -f \
54                        -C \
55                        -p ${pidFile} \
56                        -u tvheadend \
57                        -g video
58                        '';
59         ExecStop     = "${pkgs.coreutils}/bin/rm ${pidFile}";
60       };
61     };
62   };