62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ config, lib, pkgs, ... }:
 | 
						|
 | 
						|
with lib;
 | 
						|
 | 
						|
let cfg     = config.services.tvheadend;
 | 
						|
    pidFile = "${config.users.users.tvheadend.home}/tvheadend.pid";
 | 
						|
in
 | 
						|
 | 
						|
{
 | 
						|
  options = {
 | 
						|
    services.tvheadend = {
 | 
						|
      enable = mkEnableOption "Tvheadend";
 | 
						|
      httpPort = mkOption {
 | 
						|
        type        = types.int;
 | 
						|
        default     = 9981;
 | 
						|
        description = "Port to bind HTTP to.";
 | 
						|
      };
 | 
						|
 | 
						|
      htspPort = mkOption {
 | 
						|
        type        = types.int;
 | 
						|
        default     = 9982;
 | 
						|
        description = "Port to bind HTSP to.";
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
 | 
						|
  config = mkIf cfg.enable {
 | 
						|
    users.users.tvheadend = {
 | 
						|
      description = "Tvheadend Service user";
 | 
						|
      home        = "/var/lib/tvheadend";
 | 
						|
      createHome  = true;
 | 
						|
      uid         = config.ids.uids.tvheadend;
 | 
						|
    };
 | 
						|
 | 
						|
    systemd.services.tvheadend = {
 | 
						|
      description = "Tvheadend TV streaming server";
 | 
						|
      wantedBy    = [ "multi-user.target" ];
 | 
						|
      after       = [ "network.target" ];
 | 
						|
 | 
						|
      serviceConfig = {
 | 
						|
        Type         = "forking";
 | 
						|
        PIDFile      = pidFile;
 | 
						|
        Restart      = "always";
 | 
						|
        RestartSec   = 5;
 | 
						|
        User         = "tvheadend";
 | 
						|
        Group        = "video";
 | 
						|
        ExecStart    = ''
 | 
						|
                       ${pkgs.tvheadend}/bin/tvheadend \
 | 
						|
                       --http_port ${toString cfg.httpPort} \
 | 
						|
                       --htsp_port ${toString cfg.htspPort} \
 | 
						|
                       -f \
 | 
						|
                       -C \
 | 
						|
                       -p ${pidFile} \
 | 
						|
                       -u tvheadend \
 | 
						|
                       -g video
 | 
						|
                       '';
 | 
						|
        ExecStop     = "${pkgs.coreutils}/bin/rm ${pidFile}";
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |