diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 964384f..1454f11 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -35,6 +35,7 @@ jobs: - default - netns - netnsRegtest + - joinmarket-bitcoind-29 needs: build_test_drivers if: needs.build_test_drivers.outputs.run_scenario_tests == 'true' steps: diff --git a/modules/joinmarket.nix b/modules/joinmarket.nix index 151092d..1ea6684 100644 --- a/modules/joinmarket.nix +++ b/modules/joinmarket.nix @@ -251,6 +251,19 @@ in { } (mkIf cfg.enable { + assertions = [ + { + assertion = lib.versionOlder bitcoind.package.version "30"; + message = '' + Joinmarket is not compatible with bitcoind >= 30. + (https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1775) + + To fix this, add the following to your config: + services.bitcoind.package = config.nix-bitcoin.pkgs.bitcoind_29; + ''; + } + ]; + services.bitcoind = { enable = true; disablewallet = false; diff --git a/modules/netns-isolation.nix b/modules/netns-isolation.nix index 602eb7f..9357503 100644 --- a/modules/netns-isolation.nix +++ b/modules/netns-isolation.nix @@ -341,7 +341,7 @@ in { services.nbxplorer.address = netns.nbxplorer.address; services.btcpayserver.address = netns.btcpayserver.address; - services.joinmarket = { + services.joinmarket = mkIf config.services.joinmarket.enable { payjoinAddress = netns.joinmarket.address; messagingAddress = netns.joinmarket.address; cliExec = mkCliExec "joinmarket"; diff --git a/pkgs/default.nix b/pkgs/default.nix index 97f705d..737bfba 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -25,6 +25,8 @@ let self = { mempool-nginx-conf; trustedcoin = pkgs.callPackage ./trustedcoin { }; + bitcoind_29 = pkgs.bitcoind; + pyPkgs = import ./python-packages self pkgs.python3; inherit (self.pyPkgs) nbPython3Packages diff --git a/test/run-tests.sh b/test/run-tests.sh index 2c4da76..1b5420e 100755 --- a/test/run-tests.sh +++ b/test/run-tests.sh @@ -302,6 +302,7 @@ buildable=( lndPruned wireguard-lndconnect trustedcoin + joinmarket-bitcoind-29 ) buildable() { buildTests buildable "$@"; } diff --git a/test/tests.nix b/test/tests.nix index cee3b7b..53c01d4 100644 --- a/test/tests.nix +++ b/test/tests.nix @@ -213,7 +213,6 @@ let services.fulcrum.enable = true; services.liquidd.enable = true; services.btcpayserver.enable = true; - services.joinmarket.enable = true; services.joinmarket-ob-watcher.enable = true; services.backups.enable = true; @@ -261,7 +260,6 @@ let services.electrs.enable = true; services.fulcrum.enable = true; services.btcpayserver.enable = true; - services.joinmarket.enable = true; }; # netns and regtest, without secure-node.nix @@ -342,6 +340,14 @@ let plugins.trustedcoin.enable = true; }; }; + + # The full regtest test with bitcoind 29 and joinmarket enabled. + # Joinmarket only supports bitcoind 29. + joinmarket-bitcoind-29 = { config, ... }: { + imports = [ scenarios.regtest ]; + services.joinmarket.enable = true; + services.bitcoind.package = config.nix-bitcoin.pkgs.bitcoind_29; + }; } // (import ../dev/dev-scenarios.nix { inherit lib scenarios; });