diff --git a/nixos/modules/services/web-apps/hedgedoc.nix b/nixos/modules/services/web-apps/hedgedoc.nix index 4c0b1d688665..51ff2d13de25 100644 --- a/nixos/modules/services/web-apps/hedgedoc.nix +++ b/nixos/modules/services/web-apps/hedgedoc.nix @@ -47,6 +47,12 @@ in package = lib.mkPackageOption pkgs "hedgedoc" { }; enable = lib.mkEnableOption "the HedgeDoc Markdown Editor"; + configureNginx = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Whether to configure nginx as a reverse proxy."; + }; + settings = mkOption { type = types.submodule { freeformType = settingsFormat.type; @@ -249,10 +255,32 @@ in isSystemUser = true; }; - services.hedgedoc.settings = { - defaultNotePath = lib.mkDefault "${cfg.package}/share/hedgedoc/public/default.md"; - docsPath = lib.mkDefault "${cfg.package}/share/hedgedoc/public/docs"; - viewPath = lib.mkDefault "${cfg.package}/share/hedgedoc/public/views"; + services = { + hedgedoc.settings = { + defaultNotePath = lib.mkDefault "${cfg.package}/share/hedgedoc/public/default.md"; + docsPath = lib.mkDefault "${cfg.package}/share/hedgedoc/public/docs"; + viewPath = lib.mkDefault "${cfg.package}/share/hedgedoc/public/views"; + }; + + nginx = lib.mkIf cfg.configureNginx.enable { + enable = true; + upstreams.hedgedoc.servers."unix:${config.services.hedgedoc.settings.path}" = { }; + virtualHosts."${cfg.settings.domain}" = { + enableACME = true; + forceSSL = true; + locations = { + "/" = { + proxyPass = "http://hedgedoc"; + recommendedProxySettings = true; + }; + "/socket.io/" = { + proxyPass = "http://hedgedoc"; + proxyWebsockets = true; + recommendedProxySettings = true; + }; + }; + }; + }; }; systemd.services.hedgedoc = {