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::-"
 | |
|     ];
 | |
|   };
 | |
| }
 |