infrastructure/services/tvheadend.nix
2022-09-18 10:09:32 -07:00

56 lines
1.5 KiB
Nix

{ config, pkgs, lib, kw, ... }:
{
hardware.firmware = [ pkgs.libreelec-dvb-firmware ];
services.tvheadend.enable = true;
systemd.services.tvheadend.enable = lib.mkForce false;
users.users.tvheadend.group = "tvheadend";
users.groups.tvheadend = {};
networks.internet = {
tcp = [
9981
9982
5009
];
};
systemd.services.antennas = {
wantedBy = [ "plex.service" ];
after = [ "tvheadend-kat.service" ];
serviceConfig = let
antennaConf = pkgs.writeText "config.yaml" (builtins.toJSON {
antennas_url = "http://127.0.0.1:5009";
tvheadend_url = "http://127.0.0.1:9981";
tuner_count = "6";
}); in {
ExecStart = "${pkgs.antennas}/bin/antennas --config ${antennaConf}";
};
};
systemd.services.tvheadend-kat = {
description = "Tvheadend TV streaming server";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
script = ''
${pkgs.tvheadend}/bin/tvheadend \
--http_root /tvheadend \
--http_port 9981 \
--htsp_port 9982 \
-f \
-C \
-p ${config.users.users.tvheadend.home}/tvheadend.pid \
-u tvheadend \
-g video
'';
serviceConfig = {
Type = "forking";
PIDFile = "${config.users.users.tvheadend.home}/tvheadend.pid";
Restart = "always";
RestartSec = 5;
User = "tvheadend";
Group = "video";
ExecStop = "${pkgs.coreutils}/bin/rm ${config.users.users.tvheadend.home}/tvheadend.pid";
};
};
}