{ pkgs, lib, config, ... }: let cfg = config.mods.server; port = 2283; in with lib; { options.mods.server = { videos = { enable = mkEnableOption { default = false; description = "enables jellyfin server"; }; }; photos = { enable = mkEnableOption { default = false; description = "enables immich server"; }; }; }; config = { services.jellyfin = mkIf cfg.videos.enable { enable = true; openFirewall = true; user = "${config.mods.user.name}"; }; # mods.server.nginx.ports.photos = port; services.nginx.virtualHosts."photos.muon.host" = { enableACME = true; forceSSL = true; locations."/" = { proxyPass = "http://10.0.0.3:${toString port}"; proxyWebsockets = true; # needed if you need to use WebSocket extraConfig = # required when the server wants to use HTTP Authentication "proxy_pass_header Authorization;"; }; }; services.immich = mkIf cfg.photos.enable { enable = true; openFirewall = true; host = "0.0.0.0"; port = port; }; users.users.immich = mkIf cfg.photos.enable { extraGroups = [ "video" "render" ]; }; }; }