main @ 128 LINES
[ HISTORY ] [ UP ]
┌─ NIX ──────────────────────────────────────────────────────────────────────┐
│ { │
│ 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; │
│ }; │
│ }; │
│ }; │
│ } │
└────────────────────────────────────────────────────────────────────────────────────┘
┌─ NIX ────────────────────────────────┐
│ { │
│ 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