{ lib, pkgs, config, ... }: with lib; let cfg = config.nas-apps.jellyfin; in { imports = [ ./options.nix ]; config = mkIf cfg.enable { systemd.services.jellyfin-nvidia-docker = { path = [ pkgs.bash pkgs.docker ]; script = '' set -e exec docker run \ --rm \ --gpus all \ --runtime=nvidia \ --name=${cfg.name} \ -e PUID=${cfg.puid} \ -e PGID=${cfg.pgid} \ -e TZ=${cfg.timeZone} \ -e 'NVIDIA_DRIVER_CAPABILITIES'='all' \ -e 'NVIDIA_VISIBLE_DEVICES'='all' \ -p ${cfg.port}:8096 \ -v '${cfg.configPath}:/config' \ -v '${cfg.moviesPath}:/data/movies' \ -v '${cfg.tvPath}:/data/tv' \ ${cfg.image}:latest ''; wantedBy = [ "multi-user.target" ]; }; }; } # { config, pkgs, ... }: # { # # Jellyfin # # Nix # # environment.systemPackages = [ # # pkgs.jellyfin # # pkgs.jellyfin-web # # pkgs.jellyfin-ffmpeg # # ]; # # services.jellyfin = { # # enable = true; # # user = "911"; # # group = "1000"; # # # dataDir = "/mnt/Safe\ SSD/ssd_app_data/jellyfin/config"; # defaults to /var/lib/jellyfin and cannot be changed.... # # openFirewall = true; # # }; # # nix-docker # # virtualisation.oci-containers.containers."jellyfin" = { # # autoStart = true; # # image = "linuxserver/jellyfin"; # # cmd = [ "--gpus all" ]; # # volumes = [ # # "/mnt/Safe\ SSD/ssd_app_data/jellyfin/config:/config" # # "/mnt/Safe\ SSD/ssd_app_data/jellyfin/cache:/cache" # # "/mnt/Safe\ SSD/ssd_app_data/jellyfin/log:/log" # # "/mnt/Main\ Pool/Movies:/movies" # # "/mnt/Main\ Pool/TV:/tv" # # ]; # # ports = [ "8096:8096" ]; # # environment = { # # NVIDIA_VISIBLE_DEVICES = "all"; # # NVIDIA_DRIVER_CAPABILITIES = "compute,utility"; # # JELLYFIN_LOG_DIR = "/log"; # # PUID = "911"; # # PGID = "1000"; # # }; # # }; # }