From 7452a7b13ea472a8d1dfe4d33db3274ee18e441e Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 19 Jun 2024 14:00:17 -0400 Subject: [PATCH] Add ngrams support to LanguageTool, add git pull alias --- flake.lock | 8 ++++---- flake.nix | 3 ++- hosts/Haven/default.nix | 27 ++++++++++++++++++++++++--- hosts/Khanda/default.nix | 9 ++++++--- hosts/Shura/default.nix | 5 ++++- modules/apps/writing.nix | 14 +++++++++++--- modules/users/aires/default.nix | 1 + nix-secrets | 2 +- packages/languagetool-ngrams.nix | 28 ++++++++++++++++++++++++++++ 9 files changed, 81 insertions(+), 16 deletions(-) create mode 100644 packages/languagetool-ngrams.nix diff --git a/flake.lock b/flake.lock index 2798b67..840f989 100644 --- a/flake.lock +++ b/flake.lock @@ -237,11 +237,11 @@ "nix-secrets": { "flake": false, "locked": { - "lastModified": 1718230752, - "narHash": "sha256-QL6bfApKuWoJiGve7vxE+PvYTDI+zTN7fxXJ+6XmPjI=", + "lastModified": 1718817342, + "narHash": "sha256-/NIAbcvPoYs7Hazhcwon6XoArxTY5v8ejJkWjOu2NmA=", "ref": "refs/heads/main", - "rev": "0d1a7e5130a5365964111ad58a2e58e63214d2b2", - "revCount": 43, + "rev": "ae4795463d47ca89021c059e11dab284a6e1d607", + "revCount": 44, "type": "git", "url": "file:./nix-secrets" }, diff --git a/flake.nix b/flake.nix index 57df032..27e6332 100644 --- a/flake.nix +++ b/flake.nix @@ -10,6 +10,7 @@ # Replace Nix with Lix: https://lix.systems/ lix = { url = "git+https://git@git.lix.systems/lix-project/lix?ref=refs/tags/2.90-beta.1"; + #url = "git+https://git@git.lix.systems/lix-project/lix?ref=release-2.90"; flake = false; }; lix-module = { @@ -68,7 +69,7 @@ defaultModules = [ { _module.args = { - inherit inputs self; + inherit inputs; }; } ./modules/autoimport.nix diff --git a/hosts/Haven/default.nix b/hosts/Haven/default.nix index 06cb104..daaaab2 100644 --- a/hosts/Haven/default.nix +++ b/hosts/Haven/default.nix @@ -8,6 +8,8 @@ let start-haven = pkgs.writeShellScriptBin "start-haven" (builtins.readFile ./start-haven.sh); + services-root = "/storage/services"; + subdomains = [ config.secrets.services.airsonic.url config.secrets.services.cache.url @@ -40,6 +42,18 @@ in ''}"; }; }; + "${config.secrets.networking.blogDomain}" = { + dnsProvider = "namecheap"; + webroot = null; # Required in order to prevent a failed assertion + credentialFiles = { + "NAMECHEAP_API_USER_FILE" = "${pkgs.writeText "namecheap-api-user" '' + ${config.secrets.networking.namecheap.api.user} + ''}"; + "NAMECHEAP_API_KEY_FILE" = "${pkgs.writeText "namecheap-api-key" '' + ${config.secrets.networking.namecheap.api.key} + ''}"; + }; + }; }; }; apcupsd = { @@ -48,13 +62,13 @@ in }; airsonic = { enable = true; - home = "/storage/services/airsonic-advanced"; + home = "${services-root}/airsonic-advanced"; }; autoUpgrade.pushUpdates = true; boinc.enable = true; cache = { enable = false; # Disable for now - secretKeyFile = "/storage/services/nix-cache/cache-priv-key.pem"; + secretKeyFile = "${services-root}/nix-cache/cache-priv-key.pem"; }; duplicacy-web = { enable = true; @@ -63,7 +77,7 @@ in }; forgejo = { enable = true; - home = "/storage/services/forgejo"; + home = "${services-root}/forgejo"; actions = { enable = true; token = config.secrets.services.forgejo.runner-token; @@ -82,6 +96,13 @@ in return = "301 https://${config.secrets.services.forgejo.url}"; }; }; + "${config.secrets.networking.blogDomain}" = { + useACMEHost = config.secrets.networking.blogDomain; + forceSSL = true; + locations."/" = { + root = "${services-root}/nginx/sites/${config.secrets.networking.blogDomain}"; + }; + }; "${config.secrets.services.gremlin-lab.url}" = { useACMEHost = config.secrets.networking.primaryDomain; forceSSL = true; diff --git a/hosts/Khanda/default.nix b/hosts/Khanda/default.nix index 90f3b49..43aa545 100644 --- a/hosts/Khanda/default.nix +++ b/hosts/Khanda/default.nix @@ -13,7 +13,10 @@ office.enable = true; recording.enable = true; social.enable = true; - writing.enable = true; + writing = { + enable = true; + ngrams.enable = false; + }; }; ui = { flatpak.enable = true; @@ -37,8 +40,8 @@ # Enable thermal control services.thermald.enable = true; - # Limit the number of cores Nix can use so at least one is always free - nix.settings.cores = 11; + # Limit the number of cores Nix can use + nix.settings.cores = 10; # Configure the virtual machine created by nixos-rebuild build-vm virtualisation.vmVariant.virtualisation = { diff --git a/hosts/Shura/default.nix b/hosts/Shura/default.nix index 546befb..922d206 100644 --- a/hosts/Shura/default.nix +++ b/hosts/Shura/default.nix @@ -38,7 +38,10 @@ in office.enable = true; recording.enable = true; social.enable = true; - writing.enable = true; + writing = { + enable = true; + ngrams.enable = true; + }; }; ui = { flatpak.enable = true; diff --git a/modules/apps/writing.nix b/modules/apps/writing.nix index 165ac55..5957c3f 100644 --- a/modules/apps/writing.nix +++ b/modules/apps/writing.nix @@ -8,13 +8,17 @@ let cfg = config.host.apps.writing; in -with lib; { options = { - host.apps.writing.enable = mkEnableOption (mdDoc "Enables writing and editing tools"); + host.apps.writing = { + enable = lib.mkEnableOption (lib.mdDoc "Enables writing and editing tools"); + ngrams.enable = lib.mkEnableOption ( + lib.mdDoc "Enables ngrams for improved grammar detection (warning: results in an 8GB+ download)." + ); + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { # Install packages for building ebooks environment.systemPackages = with pkgs; [ haskellPackages.pandoc @@ -29,6 +33,10 @@ with lib; port = 8090; public = false; allowOrigin = "*"; + # Enable Ngrams + settings.languageModel = lib.mkIf cfg.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 7e7048a..ce8e307 100644 --- a/modules/users/aires/default.nix +++ b/modules/users/aires/default.nix @@ -85,6 +85,7 @@ with lib; userEmail = config.secrets.users.aires.email; extraConfig = { push.autoSetupRemote = "true"; + aliases.pull = "!git pull && git submodule foreach --recursive 'git pull origin main'"; }; }; diff --git a/nix-secrets b/nix-secrets index 0d1a7e5..ae47954 160000 --- a/nix-secrets +++ b/nix-secrets @@ -1 +1 @@ -Subproject commit 0d1a7e5130a5365964111ad58a2e58e63214d2b2 +Subproject commit ae4795463d47ca89021c059e11dab284a6e1d607 diff --git a/packages/languagetool-ngrams.nix b/packages/languagetool-ngrams.nix new file mode 100644 index 0000000..8140462 --- /dev/null +++ b/packages/languagetool-ngrams.nix @@ -0,0 +1,28 @@ +{ pkgs, lib }: + +pkgs.stdenv.mkDerivation rec { + pname = "languagetool-ngrams"; + version = "20150817"; + language = "en"; + + src = builtins.fetchurl { + url = "https://languagetool.org/download/ngram-data/ngrams-${language}-${version}.zip"; + sha256 = "10e548731d9f58189fc36a553f7f685703be30da0d9bb42d1f7b5bf5f8bb232c"; + }; + + doCheck = false; + + dontUnpack = true; + + installPhase = '' + install -D $src $out/ngrams + chmod a+x $out/ngrams + ''; + + 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; + }; +}