diff --git a/nixos/modules/services/misc/docling-serve.nix b/nixos/modules/services/misc/docling-serve.nix index e717c1fe5e80..b9b7274047e0 100644 --- a/nixos/modules/services/misc/docling-serve.nix +++ b/nixos/modules/services/misc/docling-serve.nix @@ -15,6 +15,13 @@ in enable = lib.mkEnableOption "Docling Serve server"; package = lib.mkPackageOption pkgs "docling-serve" { }; + stateDir = lib.mkOption { + type = types.path; + default = "/var/lib/docling-serve"; + example = "/home/foo"; + description = "State directory of Docling Serve."; + }; + host = lib.mkOption { type = types.str; default = "127.0.0.1"; @@ -36,11 +43,11 @@ in environment = lib.mkOption { type = types.attrsOf types.str; default = { - DOCLING_SERVE_ENABLE_UI = "True"; + DOCLING_SERVE_ENABLE_UI = "False"; }; example = '' { - DOCLING_SERVE_ENABLE_UI = "False"; + DOCLING_SERVE_ENABLE_UI = "True"; } ''; description = '' @@ -77,11 +84,19 @@ in wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; - environment = cfg.environment; + environment = { + HF_HOME = "."; + EASYOCR_MODULE_PATH = "."; + MPLCONFIGDIR = "."; + } // cfg.environment; serviceConfig = { ExecStart = "${lib.getExe cfg.package} run --host \"${cfg.host}\" --port ${toString cfg.port}"; EnvironmentFile = lib.optional (cfg.environmentFile != null) cfg.environmentFile; + WorkingDirectory = cfg.stateDir; + StateDirectory = "docling-serve"; + RuntimeDirectory = "docling-serve"; + RuntimeDirectoryMode = "0755"; PrivateTmp = true; DynamicUser = true; DevicePolicy = "closed"; diff --git a/pkgs/by-name/do/docling-serve/package.nix b/pkgs/by-name/do/docling-serve/package.nix index df0fb39a4724..ff8e4514d60e 100644 --- a/pkgs/by-name/do/docling-serve/package.nix +++ b/pkgs/by-name/do/docling-serve/package.nix @@ -1,6 +1,10 @@ -{ python3Packages, nixosTests }: +{ + python3Packages, + nixosTests, + withUI ? false, +}: -(python3Packages.toPythonApplication python3Packages.docling-serve) +(python3Packages.toPythonApplication (python3Packages.docling-serve.override { inherit withUI; })) // { passthru.tests = { docling-serve = nixosTests.docling-serve; diff --git a/pkgs/development/python-modules/docling-serve/default.nix b/pkgs/development/python-modules/docling-serve/default.nix index 3d8d487cf8ff..4a521fbadbec 100644 --- a/pkgs/development/python-modules/docling-serve/default.nix +++ b/pkgs/development/python-modules/docling-serve/default.nix @@ -12,6 +12,10 @@ python-multipart, uvicorn, websockets, + gradio, + nodejs, + which, + withUI ? false, }: buildPythonPackage rec { @@ -43,7 +47,15 @@ buildPythonPackage rec { python-multipart uvicorn websockets - ]; + ] ++ lib.optionals withUI optional-dependencies.ui; + + optional-dependencies = { + ui = [ + gradio + nodejs + which + ]; + }; pythonImportsCheck = [ "docling_serve"