From 3b9406a4d27077e8ac8ee8c7f66b7a29b1a305a9 Mon Sep 17 00:00:00 2001 From: Erik Arvstedt Date: Mon, 22 Dec 2025 16:27:07 +0100 Subject: [PATCH] joinmarket: fix for NixOS 25.11 Temporarily add nixpkgs-25.05 for joinmarket (see code comment). --- flake.lock | 17 +++++++++++++++++ flake.nix | 8 ++++++-- helper/update-flake.nix | 4 ++-- pkgs/default.nix | 7 ++++++- pkgs/joinmarket/default.nix | 4 ++-- pkgs/nixpkgs-pinned.nix | 1 + pkgs/pinned.nix | 4 ++-- pkgs/python-packages/default.nix | 21 +++++++++++++++------ 8 files changed, 51 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 4e3c6ba..036efc5 100644 --- a/flake.lock +++ b/flake.lock @@ -58,6 +58,22 @@ "type": "github" } }, + "nixpkgs-25_05": { + "locked": { + "lastModified": 1766014764, + "narHash": "sha256-+73VffE5GP5fvbib6Hs1Su6LehG+9UV1Kzs90T2gBLA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2b0d2b456e4e8452cf1c16d00118d145f31160f9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-unstable": { "locked": { "lastModified": 1766314097, @@ -79,6 +95,7 @@ "extra-container": "extra-container", "flake-utils": "flake-utils", "nixpkgs": "nixpkgs", + "nixpkgs-25_05": "nixpkgs-25_05", "nixpkgs-unstable": "nixpkgs-unstable" } }, diff --git a/flake.nix b/flake.nix index be56541..f33fdf8 100644 --- a/flake.nix +++ b/flake.nix @@ -7,6 +7,7 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + nixpkgs-25_05.url = "github:NixOS/nixpkgs/nixos-25.05"; flake-utils.url = "github:numtide/flake-utils"; extra-container = { url = "github:erikarvstedt/extra-container/0.13"; @@ -15,7 +16,7 @@ }; }; - outputs = { self, nixpkgs, nixpkgs-unstable, flake-utils, ... }: + outputs = { self, nixpkgs, nixpkgs-unstable, nixpkgs-25_05, flake-utils, ... }: let supportedSystems = [ "x86_64-linux" @@ -33,8 +34,9 @@ system , pkgs ? nixpkgs.legacyPackages.${system} , pkgsUnstable ? nixpkgs-unstable.legacyPackages.${system} + , pkgs-25_05 ? nixpkgs-25_05.legacyPackages.${system} }: - import ./pkgs { inherit pkgs pkgsUnstable; }; + import ./pkgs { inherit pkgs pkgsUnstable pkgs-25_05; }; test = { inherit (test) scenarios; @@ -95,6 +97,8 @@ "nixops19_09" "pinned" "generate-secrets" + "nbPython3Packages" + "nbPython3PackagesJoinmarket" ]) // { inherit (import ./examples/qemu-vm/minimal-vm.nix self pkgs system) # A simple demo VM. diff --git a/helper/update-flake.nix b/helper/update-flake.nix index 2bc592e..e5fa20d 100644 --- a/helper/update-flake.nix +++ b/helper/update-flake.nix @@ -64,7 +64,7 @@ in rec { toLines = pkgs: builtins.concatStringsSep "\n " (builtins.attrNames pkgs); in '' # This file is generated by ../helper/update-flake.nix - pkgs: pkgsUnstable: + pkgs: pkgsUnstable: pkgs-25_05: { inherit (pkgs) ${toLines versions.stable}; @@ -72,7 +72,7 @@ in rec { inherit (pkgsUnstable) ${toLines versions.unstable}; - inherit pkgs pkgsUnstable; + inherit pkgs pkgsUnstable pkgs-25_05; } ''; } diff --git a/pkgs/default.nix b/pkgs/default.nix index a2e8859..74e89ce 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -8,6 +8,11 @@ in config = {}; overlays = []; } +, pkgs-25_05 ? import nixpkgsPinned.nixpkgs-25_05 { + inherit (pkgs.stdenv.hostPlatform) system; + config = {}; + overlays = []; + } }: let self = { clightning-rest = pkgs.callPackage ./clightning-rest { inherit (self) fetchNodeModules; }; @@ -43,7 +48,7 @@ let self = { generate-secrets = import ./generate-secrets-deprecated.nix; nixops19_09 = pkgs.callPackage ./nixops { }; - pinned = import ./pinned.nix pkgs pkgsUnstable; + pinned = import ./pinned.nix pkgs pkgsUnstable pkgs-25_05; modulesPkgs = self // self.pinned; }; in self diff --git a/pkgs/joinmarket/default.nix b/pkgs/joinmarket/default.nix index 5c9a0e5..05e2555 100644 --- a/pkgs/joinmarket/default.nix +++ b/pkgs/joinmarket/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, python3, nbPython3PackagesJoinmarket }: +{ stdenv, lib, fetchFromGitHub, nbPython3PackagesJoinmarket }: let # Note: @@ -18,7 +18,7 @@ let matplotlib # for ob-watcher ]; - pythonEnv = python3.withPackages (_: runtimePackages); + pythonEnv = nbPython3PackagesJoinmarket.python.withPackages (_: runtimePackages); in stdenv.mkDerivation { pname = "joinmarket"; diff --git a/pkgs/nixpkgs-pinned.nix b/pkgs/nixpkgs-pinned.nix index 41b0983..d5a865f 100644 --- a/pkgs/nixpkgs-pinned.nix +++ b/pkgs/nixpkgs-pinned.nix @@ -17,4 +17,5 @@ in { nixpkgs = fetch lockedInputs.nixpkgs; nixpkgs-unstable = fetch lockedInputs.nixpkgs-unstable; + nixpkgs-25_05 = fetch lockedInputs.nixpkgs-25_05; } diff --git a/pkgs/pinned.nix b/pkgs/pinned.nix index 3a9ff66..fb96187 100644 --- a/pkgs/pinned.nix +++ b/pkgs/pinned.nix @@ -1,5 +1,5 @@ # This file is generated by ../helper/update-flake.nix -pkgs: pkgsUnstable: +pkgs: pkgsUnstable: pkgs-25_05: { inherit (pkgs) bitcoin @@ -21,5 +21,5 @@ pkgs: pkgsUnstable: inherit (pkgsUnstable) ; - inherit pkgs pkgsUnstable; + inherit pkgs pkgsUnstable pkgs-25_05; } diff --git a/pkgs/python-packages/default.nix b/pkgs/python-packages/default.nix index 310b173..78de859 100644 --- a/pkgs/python-packages/default.nix +++ b/pkgs/python-packages/default.nix @@ -21,18 +21,27 @@ rec { sha256 = callPackage ./sha256 {}; joinmarket = callPackage ./joinmarket { inherit (nbPkgs.joinmarket) version src; }; - - ## Specific versions of packages that already exist in nixpkgs - - # autobahn 20.12.3, required by joinmarketclient - autobahn = callPackage ./specific-versions/autobahn.nix {}; }; nbPython3Packages = (python3.override { packageOverrides = pyPkgsOverrides; }).pkgs; - nbPython3PackagesJoinmarket = nbPython3Packages; + # joinmarket requires cython 3.0 via pkg bencoder.pyx. + # The python pkgs from nixpkgs-25.11 default to cython 3.1. + # Downgrading to 3.0 causes mass rebuilds, so we use python pkgs from nixpkgs-25.05 for joinmarket. + # The nixpkgs-25.05 dependency will be removed with the next joinmarket update. + # https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/1787 + nbPython3PackagesJoinmarket = + (nbPkgs.pinned.pkgs-25_05.python3.override { + packageOverrides = self: super: + (pyPkgsOverrides self super) // { + ## Specific versions of packages that already exist in nixpkgs + + # autobahn 20.12.3, required by joinmarketclient + autobahn = self.callPackage ./specific-versions/autobahn.nix {}; + }; + }).pkgs; # Re-enable pkgs `hwi`, `trezor` that are unaffected by `CVE-2024-23342` because # they don't use python pkg `ecdsa` for signing.