From ac2b1873b91def83600f2ad3dfbbef5dd238ef44 Mon Sep 17 00:00:00 2001 From: kurogeek Date: Mon, 26 Oct 2026 07:54:10 +0000 Subject: [PATCH] overlays: add frappix fixups for nixos-unstable (sql_metadata, rq_1) Building the frappix hosts on nixos-unstable 3ec6363 fails in frappix's python overlay: - sql_metadata 2.12.0 pins sqlparse<0.6, nixpkgs ships 0.6.0. frappe itself needs 0.6 (MAX_GROUPING_TOKENS), and sql_metadata 3.x needs sqlglot >= 30 which nixpkgs lacks, so relax the pin. frappe only feeds it SELECT statements; the only regressions on 0.6 are CREATE TABLE IF NOT EXISTS name extraction. - rq 1.16.2 test_parse_connection fails against redis-py 8.1 (extra himport_registry kwarg). Test-only; disable it. nix flake check does not catch these: it only evaluates hosts. --- overlays/default.nix | 2 ++ overlays/frappix-fixups.nix | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 overlays/frappix-fixups.nix diff --git a/overlays/default.nix b/overlays/default.nix index a17e401a..8089a47c 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -10,5 +10,7 @@ frappixPythonOverlay = inputs.frappix.pythonOverlay.x86_64-linux; frappixToolsOverlay = inputs.frappix.toolsOverlay.x86_64-linux; frappixAppsOverlay = import ../pkgs/frappix/overlay.nix; + # Must be applied after frappixPythonOverlay (overrides packages from it). + frappixFixupsOverlay = import ./frappix-fixups.nix; }; } diff --git a/overlays/frappix-fixups.nix b/overlays/frappix-fixups.nix new file mode 100644 index 00000000..7bd25d99 --- /dev/null +++ b/overlays/frappix-fixups.nix @@ -0,0 +1,34 @@ +# Fixups for frappix's python overlay on current nixos-unstable. Everything +# here belongs upstream in kurogeek/frappix; drop entries as they land. +# Must be applied after frappixPythonOverlay. +_final: prev: +let + inherit (prev) lib; +in +{ + pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ + (_pyFinal: pyPrev: { + # frappe >= v15.120 needs sqlparse 0.6 (db_query.py touches + # sqlparse.engine.grouping.MAX_GROUPING_TOKENS), but every sql_metadata + # 2.x release pins sqlparse<0.6; the sqlglot-based 3.x needs sqlglot >= 30, + # which nixpkgs does not ship yet. Relaxing the pin is safe for frappe: its + # two call sites (desk/reportview.py, core/doctype/recorder/db_optimizer.py) + # only parse SELECT statements, and the only sql_metadata test regressions + # on sqlparse 0.6 are `CREATE TABLE IF NOT EXISTS` name extraction (2/150). + sql_metadata = + if lib.versionAtLeast pyPrev.sql_metadata.version "3" then + lib.warn "frappix ships sql_metadata ${pyPrev.sql_metadata.version} (no sqlparse dependency): drop the sql_metadata entry from overlays/frappix-fixups.nix" pyPrev.sql_metadata + else + pyPrev.sql_metadata.overridePythonAttrs (old: { + pythonRelaxDeps = (old.pythonRelaxDeps or [ ]) ++ [ "sqlparse" ]; + }); + + # rq 1.16.2 (frappix's rq_1 pin): test_parse_connection compares redis + # connection kwargs against a literal; redis-py 8.1 (current nixpkgs) adds + # `himport_registry`, so the assertion fails. Test-only. + rq_1 = pyPrev.rq_1.overridePythonAttrs (old: { + disabledTests = old.disabledTests ++ [ "test_parse_connection" ]; + }); + }) + ]; +}