diff --git a/modules/nixos/services/languagetool/default.nix b/modules/nixos/services/languagetool/default.nix new file mode 100644 index 0000000..6183afe --- /dev/null +++ b/modules/nixos/services/languagetool/default.nix @@ -0,0 +1,45 @@ +{ + lib, + self, + config, + namespace, + ... +}: +let + inherit (lib) mkEnableOption mkIf types; + inherit (self.lib.options) mkOpt; + + cfg = config.${namespace}.services.languagetool; +in +{ + options.${namespace}.services.languagetool = { + enable = mkEnableOption "LanguageTool, a self-hostable natural language correction service."; + subdomain = + mkOpt types.str "languagetool" + "The subdomain, of the system domain, the service should be exposed on."; + }; + + config = mkIf cfg.enable { + services.languagetool = { + enable = true; + public = true; + port = 8081; + + jvmOptions = [ + "-Xms512m" + "-Xmx=1g" + ]; + }; + + services.traefik.dynamicConfigOptions = { + http = { + services.languagetool.loadBalancer.servers = [ { url = "http://localhost:8081"; } ]; + routers.languagetool = { + entryPoints = [ "websecure" ]; + service = "languagetool"; + rule = "Host(`${cfg.subdomain}.${config.${namespace}.services.domain}`)"; + }; + }; + }; + }; +} diff --git a/systems/x86_64-nixos/absolutesolver/default.nix b/systems/x86_64-nixos/absolutesolver/default.nix index a1e83db..f5025ef 100644 --- a/systems/x86_64-nixos/absolutesolver/default.nix +++ b/systems/x86_64-nixos/absolutesolver/default.nix @@ -58,6 +58,10 @@ sopsFile = ./secrets/atticd.env; sopsFormat = "dotenv"; }; + + languagetool = { + enable = true; + }; }; };