about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAtemu <atemu.main@gmail.com>2024-03-25 19:15:14 +0100
committerAtemu <atemu.main@gmail.com>2024-03-26 17:56:01 +0100
commit70fa188e175ab9d1034416374b2af15ad94decbc (patch)
treece4305bb50a80f7791c3718bf3fcd25f4fac3a41
parentb06025f1533a1e07b6db3e75151caa155d1c7eb3 (diff)
downloadnixlib-70fa188e175ab9d1034416374b2af15ad94decbc.tar
nixlib-70fa188e175ab9d1034416374b2af15ad94decbc.tar.gz
nixlib-70fa188e175ab9d1034416374b2af15ad94decbc.tar.bz2
nixlib-70fa188e175ab9d1034416374b2af15ad94decbc.tar.lz
nixlib-70fa188e175ab9d1034416374b2af15ad94decbc.tar.xz
nixlib-70fa188e175ab9d1034416374b2af15ad94decbc.tar.zst
nixlib-70fa188e175ab9d1034416374b2af15ad94decbc.zip
nixos/paperless: set OMP_NUM_THREADS=1 by default
Fixes https://github.com/NixOS/nixpkgs/issues/240591
-rw-r--r--nixos/modules/services/misc/paperless.nix16
1 files changed, 16 insertions, 0 deletions
diff --git a/nixos/modules/services/misc/paperless.nix b/nixos/modules/services/misc/paperless.nix
index 9314c4f3848d..9301d1f68725 100644
--- a/nixos/modules/services/misc/paperless.nix
+++ b/nixos/modules/services/misc/paperless.nix
@@ -27,6 +27,8 @@ let
       name = "paperless_ngx_nltk_data";
       paths = pkg.nltkData;
     };
+  } // optionalAttrs (cfg.openMPThreadingWorkaround) {
+    OMP_NUM_THREADS = "1";
   } // (lib.mapAttrs (_: s:
     if (lib.isAttrs s || lib.isList s) then builtins.toJSON s
     else if lib.isBool s then lib.boolToString s
@@ -199,6 +201,20 @@ in
     };
 
     package = mkPackageOption pkgs "paperless-ngx" { };
+
+    openMPThreadingWorkaround = mkEnableOption ''
+      a workaround for document classifier timeouts.
+
+      Paperless uses OpenBLAS via scikit-learn for document classification.
+
+      The default is to use threading for OpenMP but this would cause the
+      document classifier to spin on one core seemingly indefinitely if there
+      are large amounts of classes per classification; causing it to
+      effectively never complete due to running into timeouts.
+
+      This sets `OMP_NUM_THREADS` to `1` in order to mitigate the issue. See
+      https://github.com/NixOS/nixpkgs/issues/240591 for more information.
+    '' // mkOption { default = true; };
   };
 
   config = mkIf cfg.enable {