38 lines
		
	
	
	
		
			871 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			871 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  lib,
 | 
						|
  pkgs,
 | 
						|
  config,
 | 
						|
  ...
 | 
						|
}: let
 | 
						|
  jellyfinPort = 8096;
 | 
						|
  dlanPort = 1900;
 | 
						|
in {
 | 
						|
  imports = [
 | 
						|
    ./proxy.nix
 | 
						|
    ./fail2ban.nix
 | 
						|
    ./impermanence.nix
 | 
						|
  ];
 | 
						|
 | 
						|
  options.services.jellyfin = {
 | 
						|
    media_directory = lib.mkOption {
 | 
						|
      type = lib.types.str;
 | 
						|
      description = "directory jellyfin media will be hosted at";
 | 
						|
      default = "/srv/jellyfin/media";
 | 
						|
    };
 | 
						|
  };
 | 
						|
 | 
						|
  config = lib.mkIf config.services.jellyfin.enable {
 | 
						|
    environment.systemPackages = [
 | 
						|
      pkgs.jellyfin
 | 
						|
      pkgs.jellyfin-web
 | 
						|
      pkgs.jellyfin-ffmpeg
 | 
						|
    ];
 | 
						|
 | 
						|
    networking.firewall.allowedTCPPorts = [jellyfinPort dlanPort];
 | 
						|
 | 
						|
    systemd.tmpfiles.rules = [
 | 
						|
      "d ${config.services.jellyfin.media_directory} 2770 jellyfin jellyfin_media"
 | 
						|
      "A ${config.services.jellyfin.media_directory} -    -        -               - u:jellyfin:rwX,g:jellyfin_media:rwX,o::-"
 | 
						|
    ];
 | 
						|
  };
 | 
						|
}
 |