92 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  lib,
 | 
						|
  config,
 | 
						|
  ...
 | 
						|
}: let
 | 
						|
  ookflixLib = import ./lib.nix {inherit lib config;};
 | 
						|
 | 
						|
  inherit (ookflixLib) mkVolumeOption mkGroupOption mkServiceOptions;
 | 
						|
  inherit (lib) mkOption mkEnableOption;
 | 
						|
  inherit (lib.types) enum;
 | 
						|
  inherit (config.ooknet) server;
 | 
						|
  cfg = server.ookflix;
 | 
						|
in {
 | 
						|
  options.ooknet.server.ookflix = {
 | 
						|
    enable = mkEnableOption "Enable ookflix a container based media server module";
 | 
						|
    gpuAcceleration = {
 | 
						|
      enable = mkEnableOption "Enable GPU acceleration for video streamers";
 | 
						|
      type = mkOption {
 | 
						|
        type = enum ["nvidia" "intel" "amd"];
 | 
						|
        default = config.ooknet.hardware.gpu.type;
 | 
						|
        description = ''
 | 
						|
          What GPU type to use for GPU acceleration.
 | 
						|
          Defaults to system GPU type (ooknet.hardware.gpu.type)
 | 
						|
        '';
 | 
						|
      };
 | 
						|
    };
 | 
						|
    volumes = {
 | 
						|
      state.root = mkVolumeOption "root" "/var/lib/ookflix";
 | 
						|
      content.root = mkVolumeOption "root" "/jellyfin";
 | 
						|
      downloads = {
 | 
						|
        root = mkVolumeOption "${cfg.content.root}/downloads";
 | 
						|
        incomplete = mkVolumeOption "downloads" "incomplete";
 | 
						|
        complete = mkVolumeOption "downloads" "complete";
 | 
						|
        watch = mkVolumeOption "downloads" "watch";
 | 
						|
      };
 | 
						|
 | 
						|
      media = {
 | 
						|
        root = mkVolumeOption "root" "${cfg.volumes.content.root}/media";
 | 
						|
        movies = mkVolumeOption "media" "movies";
 | 
						|
        tv = mkVolumeOption "media" "tv";
 | 
						|
      };
 | 
						|
    };
 | 
						|
    # Shared groups
 | 
						|
    groups = {
 | 
						|
      media = mkGroupOption "media" 992;
 | 
						|
      downloader = mkGroupOption "downloader" 981;
 | 
						|
    };
 | 
						|
 | 
						|
    services = {
 | 
						|
      jellyfin = mkServiceOptions "jellyfin" {
 | 
						|
        port = 8096;
 | 
						|
        uid = 994;
 | 
						|
        gid = 994;
 | 
						|
      };
 | 
						|
      plex = mkServiceOptions "plex" {
 | 
						|
        port = 32400;
 | 
						|
        uid = 195;
 | 
						|
        gid = 195;
 | 
						|
      };
 | 
						|
      sonarr = mkServiceOptions "sonarr" {
 | 
						|
        port = 8989;
 | 
						|
        uid = 274;
 | 
						|
        gid = 274;
 | 
						|
      };
 | 
						|
      radarr = mkServiceOptions "radarr" {
 | 
						|
        port = 7878;
 | 
						|
        uid = 275;
 | 
						|
        gid = 275;
 | 
						|
      };
 | 
						|
      prowlarr = mkServiceOptions "prowlarr" {
 | 
						|
        port = 9696;
 | 
						|
        uid = 982;
 | 
						|
        gid = 987;
 | 
						|
      };
 | 
						|
      transmission = mkServiceOptions "transmission" {
 | 
						|
        port = 9091;
 | 
						|
        uid = 70;
 | 
						|
        gid = 70;
 | 
						|
      };
 | 
						|
      jellyseer = mkServiceOptions "jellyseer" {
 | 
						|
        port = 5055;
 | 
						|
        uid = 345;
 | 
						|
        gid = 345;
 | 
						|
      };
 | 
						|
      tautulli = mkServiceOptions "tautulli" {
 | 
						|
        port = 8181;
 | 
						|
        uid = 355;
 | 
						|
        gid = 355;
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |