127 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   lib,
 | |
|   config,
 | |
|   self,
 | |
|   ...
 | |
| }: let
 | |
|   ookflixLib = import ./lib.nix {inherit lib config self;};
 | |
| 
 | |
|   inherit (ookflixLib) mkVolumeOption mkGroupOption mkServiceOptions mkBasicServiceOptions mkPortOption;
 | |
|   inherit (lib) mkOption mkEnableOption elem;
 | |
|   inherit (config.ooknet.server) services;
 | |
|   inherit (lib.types) enum;
 | |
| in {
 | |
|   options.ooknet.server.ookflix = {
 | |
|     enable =
 | |
|       mkEnableOption "Enable ookflix a container based media server module"
 | |
|       // {default = elem "ookflix" services;};
 | |
|     gpuAcceleration = {
 | |
|       enable =
 | |
|         mkEnableOption "Enable GPU acceleration for video streamers"
 | |
|         // {default = elem "ookflix" services;};
 | |
|       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";
 | |
|       data.root = mkVolumeOption "root" "/jellyfin";
 | |
| 
 | |
|       torrents = {
 | |
|         root = mkVolumeOption "data" "torrents";
 | |
|         tv = mkVolumeOption "torrents" "tv";
 | |
|         movies = mkVolumeOption "torrents" "movies";
 | |
|         books = mkVolumeOption "torrents" "books";
 | |
|       };
 | |
| 
 | |
|       usenet = {
 | |
|         root = mkVolumeOption "data" "usenet";
 | |
|         incomplete = mkVolumeOption "usenet" "incomplete";
 | |
|         complete = {
 | |
|           root = mkVolumeOption "usenet" "complete";
 | |
|           tv = mkVolumeOption "usenet/complete" "tv";
 | |
|           movies = mkVolumeOption "usenet/complete" "movies";
 | |
|           books = mkVolumeOption "usenet/complete" "books";
 | |
|         };
 | |
|       };
 | |
|       media = {
 | |
|         root = mkVolumeOption "data" "media";
 | |
|         movies = mkVolumeOption "media" "movies";
 | |
|         tv = mkVolumeOption "media" "tv";
 | |
|         books = mkVolumeOption "media" "books";
 | |
|       };
 | |
|     };
 | |
|     # Shared groups
 | |
|     groups = {
 | |
|       media = mkGroupOption "media" 992;
 | |
|       downloads = 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;
 | |
|       };
 | |
|       qbittorrent =
 | |
|         mkServiceOptions "qbittorrent" {
 | |
|           port = 8080;
 | |
|           uid = 377;
 | |
|           gid = 377;
 | |
|         }
 | |
|         // {
 | |
|           torrentPort = mkPortOption 58080 "Torrenting Port for qbittorrent" 58080;
 | |
|           exposedPort = mkPortOption 8081 "Port exposed by qbittorrent" 8081;
 | |
|         };
 | |
|       jellyseerr = mkServiceOptions "jellyseerr" {
 | |
|         port = 5055;
 | |
|         uid = 345;
 | |
|         gid = 345;
 | |
|       };
 | |
|       tautulli = mkServiceOptions "tautulli" {
 | |
|         port = 8181;
 | |
|         uid = 355;
 | |
|         gid = 355;
 | |
|       };
 | |
|       traefik = mkServiceOptions "traefik" {
 | |
|         port = 8080;
 | |
|         uid = 389;
 | |
|         gid = 389;
 | |
|       };
 | |
|       homepage = mkServiceOptions "homepage" {
 | |
|         port = 3000;
 | |
|         uid = 400;
 | |
|         gid = 400;
 | |
|       };
 | |
|       gluetun = mkBasicServiceOptions "gluetun" {
 | |
|         uid = 356;
 | |
|         gid = 357;
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 |