diff --git a/hosts/Hevana/default.nix b/hosts/Hevana/default.nix index d7e6f31..e4e8858 100644 --- a/hosts/Hevana/default.nix +++ b/hosts/Hevana/default.nix @@ -158,6 +158,14 @@ in home = "${services-root}/jellyfin"; url = config.secrets.services.jellyfin.url; }; + languagetool = { + enable = true; + url = config.secrets.services.languagetool.url; + port = 8090; + auth.user = config.secrets.services.languagetool.auth.user; + auth.password = config.secrets.services.languagetool.auth.password; + ngrams.enable = true; + }; msmtp = { enable = true; accounts.default = { diff --git a/modules/apps/writing.nix b/modules/apps/writing.nix index fe67128..82c5f05 100644 --- a/modules/apps/writing.nix +++ b/modules/apps/writing.nix @@ -41,7 +41,7 @@ in # Enable Ngrams settings.languageModel = lib.mkIf cfg.languagetool.ngrams.enable "${ (pkgs.callPackage ../../packages/languagetool-ngrams.nix { inherit pkgs lib; }) - }/ngrams"; + }/share/languagetool/ngrams"; }; }; } diff --git a/modules/secrets/default.nix b/modules/secrets/default.nix index 59b16cf..10d1b88 100644 Binary files a/modules/secrets/default.nix and b/modules/secrets/default.nix differ diff --git a/modules/services/languagetool.nix b/modules/services/languagetool.nix new file mode 100644 index 0000000..f928427 --- /dev/null +++ b/modules/services/languagetool.nix @@ -0,0 +1,73 @@ +{ + pkgs, + config, + lib, + ... +}: +let + cfg = config.aux.system.services.languagetool; +in +{ + options = { + aux.system.services.languagetool = { + enable = lib.mkEnableOption (lib.mdDoc "Enables LanguageTool server."); + auth = { + password = lib.mkOption { + default = ""; + type = lib.types.str; + description = "The password to use for basic authentication for LanguageTool."; + example = "MySuperSecurePassword123"; + }; + user = lib.mkOption { + default = "ltuser"; + type = lib.types.str; + description = "The username to use for basic auth."; + }; + }; + ngrams.enable = lib.mkEnableOption ( + lib.mdDoc "Enables n-gram data set. See https://dev.languagetool.org/finding-errors-using-n-gram-data.html" + ); + port = lib.mkOption { + default = 8080; + type = lib.types.int; + description = "The port to run LanguageTool on."; + example = 8080; + }; + url = lib.mkOption { + default = ""; + type = lib.types.str; + description = "The complete URL where LanguageTool is hosted."; + example = "https://languagetool.example.com"; + }; + }; + }; + + config = lib.mkIf cfg.enable { + services = { + languagetool = lib.mkIf cfg.enable { + enable = true; + port = 8090; + public = true; + allowOrigin = "*"; + # Enable Ngrams + settings.languageModel = lib.mkIf cfg.ngrams.enable "${ + (pkgs.callPackage ../../packages/languagetool-ngrams.nix { inherit pkgs lib; }) + }/ngrams"; + }; + # Create Nginx virtualhost + nginx.virtualHosts."${cfg.url}" = { + useACMEHost = pkgs.util.getDomainFromURL cfg.url; + forceSSL = true; + basicAuth = { + "${cfg.auth.user}" = cfg.auth.password; + }; + locations."/" = { + proxyPass = "http://127.0.0.1:8090"; + extraConfig = "proxy_ssl_server_name on;"; + }; + }; + }; + + systemd.services.nginx.wants = [ config.systemd.services.languagetool.name ]; + }; +}