OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
 
main @ 128 LINES
 
[ HISTORY ]  [ UP ]
 

{
  lib,
  config,
  self,
  ...
}: let
  ookflixLib = import ./lib.nix {inherit lib config self;};

  inherit (ookflixLib) mkVolumeOption mkGroupOption mkServiceOptions mkBasicServic
eOptions 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;
      };
    };
  };
}

{
  lib,
  config,
  self,
  ...
}: let
  ookflixLib = import ./lib.nix {inherit lib
 config self;};

  inherit (ookflixLib) mkVolumeOption mkGrou
pOption mkServiceOptions mkBasicServiceOptio
ns 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 conta
iner based media server module"
      // {default = elem "ookflix" services;
};
    gpuAcceleration = {
      enable =
        mkEnableOption "Enable GPU accelerat
ion for video streamers"
        // {default = elem "ookflix" service
s;};
      type = mkOption {
        type = enum ["nvidia" "intel" "amd"]
;
        default = config.ooknet.hardware.gpu
.type;
        description = ''
          What GPU type to use for GPU accel
eration.
          Defaults to system GPU type (ookne
t.hardware.gpu.type)
        '';
      };
    };
    volumes = {
      state.root = mkVolumeOption "root" "/v
ar/lib/ookflix";
      data.root = mkVolumeOption "root" "/je
llyfin";

      torrents = {
        root = mkVolumeOption "data" "torren
ts";
        tv = mkVolumeOption "torrents" "tv";
        movies = mkVolumeOption "torrents" "
movies";
        books = mkVolumeOption "torrents" "b
ooks";
      };

      usenet = {
        root = mkVolumeOption "data" "usenet
";
        incomplete = mkVolumeOption "usenet"
 "incomplete";
        complete = {
          root = mkVolumeOption "usenet" "co
mplete";
          tv = mkVolumeOption "usenet/comple
te" "tv";
          movies = mkVolumeOption "usenet/co
mplete" "movies";
          books = mkVolumeOption "usenet/com
plete" "books";
        };
      };
      media = {
        root = mkVolumeOption "data" "media"
;
        movies = mkVolumeOption "media" "mov
ies";
        tv = mkVolumeOption "media" "tv";
        books = mkVolumeOption "media" "book
s";
      };
    };
    # 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 "P
ort exposed by qbittorrent" 8081;
        };
      jellyseerr = mkServiceOptions "jellyse
err" {
        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 "gluet
un" {
        uid = 356;
        gid = 357;
      };
    };
  };
}
 
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET