{ config, lib, pkgs, ... }: { options.server = { jellyfin = { enable = lib.mkEnableOption "enable jelyfin"; port = lib.mkOption { default = 8096; description = "set jellyfin port"; }; public = lib.mkEnableOption "make jellyfin public"; subdomain = lib.mkOption { default = "watch"; description = "set jellyfin subdomain"; }; }; jellyseer = { enable = lib.mkEnableOption "enable jellyseer"; port = lib.mkOption { default = 8097; description = "set jellyseer port"; }; public = lib.mkEnableOption "make jellyseer public"; subdomain = lib.mkOption { default = "jellyseer"; description = "set jellyseer subdomain"; }; }; }; config = { environment.systemPackages = [ ] ++ ( if config.server.jellyfin.enable then [ pkgs.jellyfin pkgs.jellyfin-web pkgs.jellyfin-ffmpeg ] else [ ] ); services = { jellyfin = lib.mkIf config.server.jellyfin.enable { enable = true; }; seerr = lib.mkIf config.server.jellyseer.enable { enable = true; }; nginx.virtualHosts = { "${config.server.jellyfin.subdomain}.${config.networking.domain}" = lib.mkIf config.server.jellyfin.public { enableACME = true; forceSSL = true; locations."/" = { proxyPass = "http://127.0.0.1:${config.server.jellyfin.port}"; }; }; "${config.server.jellyseer.subdomain}.${config.networking.domain}" = lib.mkIf config.server.jellyfin.public { enableACME = true; forceSSL = true; locations."/" = { proxyPass = "http://127.0.0.1:${config.server.jellyseer.port}"; }; }; }; }; }; }