From f0495113cf4e6fabdd325846a6fb691342bbeec3 Mon Sep 17 00:00:00 2001 From: Andre Date: Sat, 28 Sep 2024 13:42:40 -0400 Subject: [PATCH] Apps: re-enable LanguageTool --- hosts/Khanda/default.nix | 8 +++++++- modules/apps/writing.nix | 24 ++++++++++++++++++++++- modules/users/aires/default.nix | 2 +- packages/languagetool-ngrams.nix | 33 ++++++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 packages/languagetool-ngrams.nix diff --git a/hosts/Khanda/default.nix b/hosts/Khanda/default.nix index d021fd0..e26fa71 100644 --- a/hosts/Khanda/default.nix +++ b/hosts/Khanda/default.nix @@ -25,7 +25,13 @@ in office.enable = true; recording.enable = true; social.enable = true; - writing.enable = true; + writing = { + enable = true; + languagetool = { + enable = true; + ngrams.enable = true; + }; + }; }; # Enable Secure Boot support. diff --git a/modules/apps/writing.nix b/modules/apps/writing.nix index 9e751be..fe67128 100644 --- a/modules/apps/writing.nix +++ b/modules/apps/writing.nix @@ -10,7 +10,17 @@ let in { options = { - aux.system.apps.writing.enable = lib.mkEnableOption "Enables writing and editing tools"; + aux.system.apps.writing = { + enable = lib.mkEnableOption "Enables writing and editing tools"; + + languagetool = { + enable = lib.mkEnableOption (lib.mdDoc "Enables local Language Tool server."); + # WARNING: Ngrams package requires a lot of RAM + ngrams.enable = lib.mkEnableOption ( + lib.mdDoc "Enables ngrams for improved grammar detection (warning: results in an 8GB+ download)." + ); + }; + }; }; config = lib.mkIf cfg.enable { @@ -21,5 +31,17 @@ in haskellPackages.pandoc-crossref texliveSmall ]; + + # Spelling and grammer checking: hosted on localhost:8081 + services.languagetool = lib.mkIf cfg.languagetool.enable { + enable = true; + port = 8090; + public = false; + allowOrigin = "*"; + # Enable Ngrams + settings.languageModel = lib.mkIf cfg.languagetool.ngrams.enable "${ + (pkgs.callPackage ../../packages/languagetool-ngrams.nix { inherit pkgs lib; }) + }/ngrams"; + }; }; } diff --git a/modules/users/aires/default.nix b/modules/users/aires/default.nix index f986df2..f26ac2a 100644 --- a/modules/users/aires/default.nix +++ b/modules/users/aires/default.nix @@ -90,7 +90,7 @@ in theme = "gentoo"; }; shellAliases = { - nos = lib.mkIf config.aux.system.nixos-upgrade-script.enable "nixos-upgrade-script"; + nos = "nixos-upgrade-script"; z = "zellij"; update = "upgrade"; upgrade = "nh os boot --update --ask"; diff --git a/packages/languagetool-ngrams.nix b/packages/languagetool-ngrams.nix new file mode 100644 index 0000000..e8efa40 --- /dev/null +++ b/packages/languagetool-ngrams.nix @@ -0,0 +1,33 @@ +# For a packaging example, see https://github.com/Janik-Haag/nix-languagetool-ngram/blob/main/ngram-template.nix +{ + pkgs, + lib, + fetchzip, +}: + +pkgs.stdenv.mkDerivation rec { + pname = "languagetool-ngram-en"; + version = "20150817"; + language = "en"; + + src = fetchzip { + url = "https://languagetool.org/download/ngram-data/ngrams-${language}-${version}.zip"; + sha256 = "10e548731d9f58189fc36a553f7f685703be30da0d9bb42d1f7b5bf5f8bb232c"; + }; + + dontBuild = true; + dontConfigure = true; + dontFixup = true; + + installPhase = '' + mkdir -p $out/share/languagetool/ngrams + ln -s $src $out/share/languagetool/ngrams/${language} + ''; + + meta = with lib; { + homepage = "https://dev.languagetool.org/finding-errors-using-n-gram-data.html"; + description = "LanguageTool can make use of large n-gram data sets to detect errors with words that are often confused, like their and there."; + platforms = platforms.linux; + license = licenses.cc-by-sa-40; + }; +}