main @ 56 LINES
[ HISTORY ] [ UP ]
┌─ NIX ──────────────────────────────────────────────────────────────────────┐
│ { │
│ config, │
│ lib, │
│ ook, │
│ self, │
│ ... │
│ }: let │
│ ookflixLib = import ../lib.nix {inherit lib config self;}; │
│ inherit (ookflixLib) mkServiceStateDir mkServiceUser; │
│ inherit (lib) mkIf optionalAttrs; │
│ inherit (ook.lib.container) mkContainerLabel mkContainerEnvironment mkContainerP │
│ ort; │
│ inherit (config.ooknet.server.ookflix) volumes services groups gpuAcceleration; │
│ inherit (config.ooknet.server.ookflix.services) jellyfin; │
│ in { │
│ config = mkIf services.jellyfin.enable { │
│ hardware.nvidia-container-toolkit.enable = gpuAcceleration.enable && gpuAccele │
│ ration.type == "nvidia"; │
│ users = mkServiceUser jellyfin.user.name; │
│ systemd.tmpfiles.settings.jellyfinStateDir = mkServiceStateDir "jellyfin"; │
│ virtualisation.oci-containers.containers = { │
│ # media streaming server │
│ # docs: <https://docs.linuxserver.io/images/docker-jellyfin/> │
│ jellyfin = { │
│ image = "lscr.io/linuxserver/jellyfin:10.11.5"; │
│ autoStart = true; │
│ hostname = "jellyfin"; │
│ ports = [(mkContainerPort jellyfin.port)]; │
│ volumes = [ │
│ "${volumes.media.root}:/data" │
│ "${jellyfin.stateDir}:/config" │
│ ]; │
│ labels = mkContainerLabel { │
│ name = "jellyfin"; │
│ inherit (jellyfin) port domain; │
│ homepage = { │
│ group = "media"; │
│ description = "media-server streamer"; │
│ }; │
│ }; │
│ extraOptions = │
│ if gpuAcceleration.enable │
│ then [ │
│ "--gpus=all" │
│ ] │
│ else []; │
│ environment = │
│ mkContainerEnvironment jellyfin.user.id groups.media.id │
│ // {JELLYFIN_PublishedServerUrl = jellyfin.domain;} │
│ // optionalAttrs (gpuAcceleration.enable && gpuAcceleration.type == "nvi │
│ dia") { │
│ NVIDIA_VISIBLE_DEVICES = "all"; │
│ NVIDIA_DRIVER_CAPABILITIES = "all"; │
│ }; │
│ }; │
│ }; │
│ }; │
│ } │
└────────────────────────────────────────────────────────────────────────────────────┘
┌─ NIX ────────────────────────────────┐
│ { │
│ config, │
│ lib, │
│ ook, │
│ self, │
│ ... │
│ }: let │
│ ookflixLib = import ../lib.nix {inherit li │
│ b config self;}; │
│ inherit (ookflixLib) mkServiceStateDir mkS │
│ erviceUser; │
│ inherit (lib) mkIf optionalAttrs; │
│ inherit (ook.lib.container) mkContainerLab │
│ el mkContainerEnvironment mkContainerPort; │
│ inherit (config.ooknet.server.ookflix) vol │
│ umes services groups gpuAcceleration; │
│ inherit (config.ooknet.server.ookflix.serv │
│ ices) jellyfin; │
│ in { │
│ config = mkIf services.jellyfin.enable { │
│ hardware.nvidia-container-toolkit.enable │
│ = gpuAcceleration.enable && gpuAcceleration │
│ .type == "nvidia"; │
│ users = mkServiceUser jellyfin.user.name │
│ ; │
│ systemd.tmpfiles.settings.jellyfinStateD │
│ ir = mkServiceStateDir "jellyfin"; │
│ virtualisation.oci-containers.containers │
│ = { │
│ # media streaming server │
│ # docs: <https://docs.linuxserver.io/i │
│ mages/docker-jellyfin/> │
│ jellyfin = { │
│ image = "lscr.io/linuxserver/jellyfi │
│ n:10.11.5"; │
│ autoStart = true; │
│ hostname = "jellyfin"; │
│ ports = [(mkContainerPort jellyfin.p │
│ ort)]; │
│ volumes = [ │
│ "${volumes.media.root}:/data" │
│ "${jellyfin.stateDir}:/config" │
│ ]; │
│ labels = mkContainerLabel { │
│ name = "jellyfin"; │
│ inherit (jellyfin) port domain; │
│ homepage = { │
│ group = "media"; │
│ description = "media-server stre │
│ amer"; │
│ }; │
│ }; │
│ extraOptions = │
│ if gpuAcceleration.enable │
│ then [ │
│ "--gpus=all" │
│ ] │
│ else []; │
│ environment = │
│ mkContainerEnvironment jellyfin.us │
│ er.id groups.media.id │
│ // {JELLYFIN_PublishedServerUrl = │
│ jellyfin.domain;} │
│ // optionalAttrs (gpuAcceleration. │
│ enable && gpuAcceleration.type == "nvidia") │
│ { │
│ NVIDIA_VISIBLE_DEVICES = "all"; │
│ NVIDIA_DRIVER_CAPABILITIES = "al │
│ l"; │
│ }; │
│ }; │
│ }; │
│ }; │
│ } │
└──────────────────────────────────────────────┘
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET