From efda41a526448d77bfe51ec62da5a5d71d546e25 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Wed, 6 May 2026 01:39:04 +0900 Subject: [PATCH] WIP --- flake.nix | 21 +++------- .../0001-provide-sqlite-externally.patch | 20 ++++++++++ nix/fts5-icu-tokenizer/package.nix | 40 +++++++++++++++++++ nix/sqlite.nix | 17 ++++++++ 4 files changed, 83 insertions(+), 15 deletions(-) create mode 100644 nix/fts5-icu-tokenizer/0001-provide-sqlite-externally.patch create mode 100644 nix/fts5-icu-tokenizer/package.nix create mode 100644 nix/sqlite.nix diff --git a/flake.nix b/flake.nix index 5237c88..8c7c8da 100644 --- a/flake.nix +++ b/flake.nix @@ -107,20 +107,9 @@ }; }); - overlays.sqlite-icu-ext = final: prev: let - overrideArgs = prev': { - configureFlags = prev'.configureFlags ++ [ - "--with-icu-config=${lib.getExe' prev.icu.dev "icu-config"}" - "--enable-icu-collations" - ]; - - buildInputs = prev'.buildInputs ++ [ - prev.icu - ]; - }; - in { - sqlite-icu-ext = prev.sqlite.overrideAttrs overrideArgs; - sqlite-interactive-icu-ext = prev.sqlite-interactive.overrideAttrs overrideArgs; + overlays.sqlite-icu-ext = final: prev: { + sqlite-icu-ext = prev.callPackage ./nix/sqlite.nix { }; + sqlite-interactive-icu-ext = prev.callPackage ./nix/sqlite.nix { sqlite = prev.sqlite-interactive; }; }; packages = let @@ -156,7 +145,9 @@ ln -s ${src} $out ''; - inherit (pkgs) sqlite-icu-ext sqlite-interactive-icu-ext; + sqlite = pkgs.callPackage ./nix/sqlite.nix { }; + + fts5-icu-tokenizer = pkgs.callPackage ./nix/fts5-icu-tokenizer/package.nix { }; jmdict = pkgs.callPackage ./nix/jmdict.nix { inherit jmdict-src jmdict-with-examples-src edrdgMetadata; diff --git a/nix/fts5-icu-tokenizer/0001-provide-sqlite-externally.patch b/nix/fts5-icu-tokenizer/0001-provide-sqlite-externally.patch new file mode 100644 index 0000000..63f30a7 --- /dev/null +++ b/nix/fts5-icu-tokenizer/0001-provide-sqlite-externally.patch @@ -0,0 +1,20 @@ +diff --git i/CMakeLists.txt w/CMakeLists.txt +index 9d99543..11ce4a4 100644 +--- i/CMakeLists.txt ++++ w/CMakeLists.txt +@@ -131,6 +131,15 @@ if(NOT SQLite3_FOUND) + endif() + endif() + ++if(SQLite3_FOUND AND NOT TARGET SQLite3::SQLite3) ++ add_library(SQLite3::SQLite3 UNKNOWN IMPORTED) ++ ++ set_target_properties(SQLite3::SQLite3 PROPERTIES ++ IMPORTED_LOCATION "${SQLite3_LIBRARIES}" ++ INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIRS}" ++ ) ++endif() ++ + # --- Configure the Library --- + + # Select source files based on API version diff --git a/nix/fts5-icu-tokenizer/package.nix b/nix/fts5-icu-tokenizer/package.nix new file mode 100644 index 0000000..3c756f2 --- /dev/null +++ b/nix/fts5-icu-tokenizer/package.nix @@ -0,0 +1,40 @@ +{ + lib, + stdenv, + fetchFromSourcehut, + cmake, + pkg-config, + icu, + sqlite, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "fts5-icu-tokenizer"; + version = "5.5"; + src = fetchFromSourcehut { + vc = "hg"; + owner = "~cwt"; + repo = "fts5-icu-tokenizer"; + rev = "v${finalAttrs.version}"; + hash = "sha256-7Klsu9d1sY+W0buo6kwYdCyDA/u2dBTgu6WuttomTBo="; + }; + + patches = [ + ./0001-provide-sqlite-externally.patch + ]; + + nativeBuildInputs = [ + cmake + pkg-config + ]; + + buildInputs = [ + icu + sqlite + ]; + + cmakeFlags = [ + (lib.cmakeFeature "LOCALE" "ja") + (lib.cmakeFeature "API_VERSION" "v2") + ]; +}) diff --git a/nix/sqlite.nix b/nix/sqlite.nix new file mode 100644 index 0000000..de5bf89 --- /dev/null +++ b/nix/sqlite.nix @@ -0,0 +1,17 @@ +{ + lib, + sqlite, + libiconv, + icu, +}: + +sqlite.overrideAttrs (oldAttrs: { + name = "sqlite-icu-ext"; + + buildInputs = oldAttrs.buildInputs ++ [ icu ]; + + configureFlags = oldAttrs.configureFlags ++ [ + "--with-icu-config=${lib.getExe' icu.dev "icu-config"}" + "--enable-icu-collations" + ]; +})