{ config, pkgs, lib, ... }: let inherit (lib) mkIf; cfg = config.pepe.services.languagetool; ngramDataDir = pkgs.symlinkJoin { name = "languagetool-ngrams"; paths = builtins.attrValues pkgs.langtoolPkgs; }; in { options.pepe.services.languagetool = with lib; { enable = mkEnableOption "Enable LanguageTool"; package = mkPackageOption pkgs "languagetool" { }; fasttextPackage = mkPackageOption pkgs "fasttext" {}; domain = mkOption { type = types.str; default = null; }; }; config = mkIf cfg.enable { pepe.core = { vhost.hosts.${cfg.domain} = { locations."/" = { port = config.services.languagetool.port; allowLAN = true; allowVPN = true; allowWAN = true; }; }; }; services.languagetool = { enable = true; package = cfg.package; allowOrigin = cfg.domain; settings = { languageModel = "${ngramDataDir}/share/languagetool/ngrams/"; fasttextModel = "${pkgs.langtoolPkgs.fasttextmodel}/share/languagetool/fasttextmodel/lid.176.bin"; fasttextBinary = "${cfg.fasttextPackage}/bin/fasttext"; }; }; }; }