nixpkgs/pkgs/servers/search/khoj/default.nix
2024-04-05 20:54:31 +02:00

143 lines
3.2 KiB
Nix

{ lib
, stdenv
, fetchFromGitHub
, python3
, postgresql
, postgresqlTestHook
}:
python3.pkgs.buildPythonApplication rec {
pname = "khoj";
version = "1.0.1";
pyproject = true;
src = fetchFromGitHub {
owner = "debanjum";
repo = "khoj";
rev = "refs/tags/${version}";
hash = "sha256-lvOeYTrvW5MfhuJ3lj9n9TRlvpRwVP2vFeaEeJdqIec=";
};
env = {
DJANGO_SETTINGS_MODULE = "khoj.app.settings";
postgresqlEnableTCP = 1;
};
nativeBuildInputs = with python3.pkgs; [
hatch-vcs
hatchling
];
propagatedBuildInputs = with python3.pkgs; [
aiohttp
anyio
authlib
beautifulsoup4
dateparser
defusedxml
django
fastapi
google-auth
# gpt4all
gunicorn
httpx
itsdangerous
jinja2
langchain
lxml
openai
openai-whisper
pgvector
pillow
psycopg2
pydantic
pymupdf
python-multipart
pyyaml
# rapidocr-onnxruntime
requests
rich
schedule
sentence-transformers
stripe
tenacity
tiktoken
torch
transformers
tzdata
uvicorn
];
nativeCheckInputs = with python3.pkgs; [
freezegun
factory-boy
pytest-xdist
trio
psutil
pytest-django
pytestCheckHook
] ++ [
(postgresql.withPackages (p: with p; [ pgvector ]))
postgresqlTestHook
];
preCheck = ''
export HOME=$(mktemp -d)
'';
pythonImportsCheck = [
"khoj"
];
disabledTests = [
# Tests require network access
"test_different_user_data_not_accessed"
"test_get_api_config_types"
"test_get_configured_types_via_api"
"test_image_metadata"
"test_image_search"
"test_image_search_by_filepath"
"test_image_search_query_truncated"
"test_index_update"
"test_index_update_with_no_auth_key"
"test_notes_search"
"test_notes_search_with_exclude_filter"
"test_notes_search_with_include_filter"
"test_parse_html_plaintext_file"
"test_regenerate_index_with_new_entry"
"test_regenerate_with_github_fails_without_pat"
"test_regenerate_with_invalid_content_type"
"test_regenerate_with_valid_content_type"
"test_search_for_user2_returns_empty"
"test_search_with_invalid_auth_key"
"test_search_with_invalid_content_type"
"test_search_with_no_auth_key"
"test_search_with_valid_content_type"
"test_text_index_same_if_content_unchanged"
"test_text_indexer_deletes_embedding_before_regenerate"
"test_text_search"
"test_text_search_setup_batch_processes"
"test_update_with_invalid_content_type"
"test_user_no_data_returns_empty"
# Tests require rapidocr-onnxruntime
"test_multi_page_pdf_to_jsonl"
"test_single_page_pdf_to_jsonl"
"test_ocr_page_pdf_to_jsonl"
];
disabledTestPaths = [
# Tests require network access
"tests/test_conversation_utils.py"
];
meta = with lib; {
description = "Natural Language Search Assistant for your Org-Mode and Markdown notes, Beancount transactions and Photos";
homepage = "https://github.com/debanjum/khoj";
changelog = "https://github.com/debanjum/khoj/releases/tag/${version}";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ dit7ya ];
broken = true; # last successful build 2024-01-10
};
}