{ lib, pkgs, config, ... }: with lib; let cfg = config.nas-apps.jellyfin; in { options.nas-apps.jellyfin = { enable = mkEnableOption "jellyfin docker service"; autoStart = mkOption { type = types.bool; default = true; }; port = mkOption { type = types.str; default = "8096"; }; name = mkOption { type = types.str; default = "jellyfin"; }; image = mkOption { type = types.str; default = "lscr.io/linuxserver/jellyfin"; }; configPath = mkOption { type = types.str; default = "/mnt/ssd/nix-app-data/jellyfin"; }; moviesPath = mkOption { type = types.str; default = "/mnt/mainpool/Movies"; }; tvPath = mkOption { type = types.str; default = "/mnt/mainpool/Tv"; }; puid = mkOption { type = types.str; default = "911"; }; pgid = mkOption { type = types.str; default = "1000"; }; timeZone = mkOption { type = types.str; default = "America/Chicago"; }; }; 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"; # # }; # # }; # }