From 026bf166d95cf8a68845b0eed0b1eaddfbc98d01 Mon Sep 17 00:00:00 2001 From: Sarah Clark Date: Thu, 26 Jun 2025 13:40:55 -0700 Subject: [PATCH 1/2] python3Packages.sqlite-vec: init at 0.1.6 --- .../python-modules/sqlite-vec/default.nix | 85 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 4 + 2 files changed, 89 insertions(+) create mode 100644 pkgs/development/python-modules/sqlite-vec/default.nix diff --git a/pkgs/development/python-modules/sqlite-vec/default.nix b/pkgs/development/python-modules/sqlite-vec/default.nix new file mode 100644 index 000000000000..09fcf06304af --- /dev/null +++ b/pkgs/development/python-modules/sqlite-vec/default.nix @@ -0,0 +1,85 @@ +{ + lib, + buildPythonPackage, + fetchpatch, + + # build-system + setuptools, + setuptools-scm, + + # dependencies + sqlite-vec-c, # alias for pkgs.sqlite-vec + + # optional dependencies + numpy, + + # check inputs + openai, + pytestCheckHook, +}: + +buildPythonPackage rec { + inherit (sqlite-vec-c) pname version src; + pyproject = true; + + # The actual source root is bindings/python but the patches + # apply to the bindings directory. + # This is a known issue, see https://discourse.nixos.org/t/how-to-apply-patches-with-sourceroot/59727 + sourceRoot = "${src.name}/bindings"; + + patches = [ + (fetchpatch { + # https://github.com/asg017/sqlite-vec/pull/233 + name = "add-python-build-files.patch"; + url = "https://github.com/asg017/sqlite-vec/commit/c1917deb11aa79dcac32440679345b93e13b1b86.patch"; + hash = "sha256-4/9QLKuM/1AbD8AQHwJ14rhWVYVc+MILvK6+tWwWQlw="; + stripLen = 1; + }) + (fetchpatch { + # https://github.com/asg017/sqlite-vec/pull/233 + name = "add-python-test.patch"; + url = "https://github.com/asg017/sqlite-vec/commit/608972c9dcbfc7f4583e99fd8de6e5e16da11081.patch"; + hash = "sha256-8dfw7zs7z2FYh8DoAxurMYCDMOheg8Zl1XGcPw1A1BM="; + stripLen = 1; + }) + ]; + + # Change into the proper directory for building, move `extra_init.py` into its proper location, + # and supply the path to the library. + postPatch = '' + cd python + mv extra_init.py sqlite_vec/ + substituteInPlace sqlite_vec/__init__.py \ + --replace-fail "@libpath@" "${lib.getLib sqlite-vec-c}/lib/" + ''; + + build-system = [ + setuptools + setuptools-scm + ]; + + dependencies = [ + sqlite-vec-c + ]; + + optional-dependencies = { + numpy = [ + numpy + ]; + }; + + nativeCheckInputs = [ + numpy + openai + pytestCheckHook + sqlite-vec-c + ]; + + pythonImportsCheck = [ "sqlite_vec" ]; + + meta = sqlite-vec-c.meta // { + description = "Python bindings for sqlite-vec"; + maintainers = [ lib.maintainers.sarahec ]; + badPlatforms = [ "x86_64-darwin" ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 263a5fcd1ab3..c3b0a3daf68e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -17009,6 +17009,10 @@ self: super: with self; { sqlite-utils = callPackage ../development/python-modules/sqlite-utils { }; + sqlite-vec = callPackage ../development/python-modules/sqlite-vec { + sqlite-vec-c = pkgs.sqlite-vec; + }; + sqlitedict = callPackage ../development/python-modules/sqlitedict { }; sqliteschema = callPackage ../development/python-modules/sqliteschema { }; From d29355f82e5fdff26ed0e98a5969b608b7a86688 Mon Sep 17 00:00:00 2001 From: Sarah Clark Date: Wed, 9 Jul 2025 15:44:15 -0700 Subject: [PATCH 2/2] python3Packages.txtai: use pkgs.sqlite-vec via sqlite-vec-c --- pkgs/development/python-modules/sqlite-vec/default.nix | 5 ++++- pkgs/development/python-modules/txtai/default.nix | 4 ++-- pkgs/top-level/python-packages.nix | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/sqlite-vec/default.nix b/pkgs/development/python-modules/sqlite-vec/default.nix index 09fcf06304af..7a389f10d40f 100644 --- a/pkgs/development/python-modules/sqlite-vec/default.nix +++ b/pkgs/development/python-modules/sqlite-vec/default.nix @@ -80,6 +80,9 @@ buildPythonPackage rec { meta = sqlite-vec-c.meta // { description = "Python bindings for sqlite-vec"; maintainers = [ lib.maintainers.sarahec ]; - badPlatforms = [ "x86_64-darwin" ]; + badPlatforms = [ + # segfaults during test + "x86_64-darwin" + ]; }; } diff --git a/pkgs/development/python-modules/txtai/default.nix b/pkgs/development/python-modules/txtai/default.nix index c2e51878a79a..888124f28ecb 100644 --- a/pkgs/development/python-modules/txtai/default.nix +++ b/pkgs/development/python-modules/txtai/default.nix @@ -24,7 +24,7 @@ hnswlib, pgvector, sqlalchemy, - sqlite-vec, + sqlite-vec-c, # api aiohttp, fastapi, @@ -103,7 +103,7 @@ let hnswlib pgvector sqlalchemy - sqlite-vec + sqlite-vec-c ]; api = [ aiohttp diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c3b0a3daf68e..1f6bf1ba40d4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -18312,7 +18312,7 @@ self: super: with self; { txrequests = callPackage ../development/python-modules/txrequests { }; - txtai = callPackage ../development/python-modules/txtai { }; + txtai = callPackage ../development/python-modules/txtai { sqlite-vec-c = pkgs.sqlite-vec; }; txtorcon = callPackage ../development/python-modules/txtorcon { };