{ lib, pkgs, config, ... }: with lib; let cfg = config.reo101.jellyfin; in { imports = [ ]; options = { reo101.jellyfin = { enable = mkEnableOption "reo101 Jellyfin config"; image = mkOption { type = types.strMatching ".+/.+:.+"; default = "docker.io/jellyfin/jellyfin:latest"; defaultText = "docker.io/jellyfin/jellyfin:latest"; description = '' The Docker image for Jellyfin ''; }; volumes = mkOption { type = types.listOf (types.strMatching ".+:.+"); default = [ "/var/cache/jellyfin/config:/config" "/var/cache/jellyfin/cache:/cache" "/var/log/jellyfin:/log" "/media:/media:ro" ]; description = '' The volumes the Jellyfin container should bind to ''; }; ports = mkOption { type = types.listOf (types.strMatching ".+:.+"); default = [ "8096:8096" ]; description = '' The ports the Jellyfin container should bind to ''; }; }; }; config = mkIf cfg.enable { virtualisation.oci-containers.containers."jellyfin" = { autoStart = true; image = cfg.image; volumes = cfg.volumes; ports = cfg.ports; environment = { JELLYFIN_LOG_DIR = "/log"; }; }; }; meta = { maintainers = with lib.maintainers; [ reo101 ]; }; }