From 97eaa5a604be86d30e249dff0fea111809af6be3 Mon Sep 17 00:00:00 2001 From: Jonas Nick Date: Sat, 20 Apr 2024 07:50:46 +0000 Subject: [PATCH] update nixpkgs btcpayserver: 1.12.5 -> 1.13.1 clightning: 24.02.1 -> 24.02.2 hwi: 2.4.0 -> 3.0.0 nbxplorer: 2.5.0 -> 2.5.2 Don't update bitcoin to 27.0 due to compatibility issues with lnd. --- flake.lock | 12 ++-- pkgs/bitcoin/default.nix | 124 +++++++++++++++++++++++++++++++++++ pkgs/default.nix | 16 +++++ pkgs/pinned.nix | 2 - test/nixos-search/flake.lock | 6 +- test/tests.py | 2 +- 6 files changed, 150 insertions(+), 12 deletions(-) create mode 100644 pkgs/bitcoin/default.nix diff --git a/flake.lock b/flake.lock index 0385c3f07..3c0b06ab8 100644 --- a/flake.lock +++ b/flake.lock @@ -43,11 +43,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1711668574, - "narHash": "sha256-u1dfs0ASQIEr1icTVrsKwg2xToIpn7ZXxW3RHfHxshg=", + "lastModified": 1713344939, + "narHash": "sha256-jpHkAt0sG2/J7ueKnG7VvLLkBYUMQbXQ2L8OBpVG53s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "219951b495fc2eac67b1456824cc1ec1fd2ee659", + "rev": "e402c3eb6d88384ca6c52ef1c53e61bdc9b84ddd", "type": "github" }, "original": { @@ -59,11 +59,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1712026416, - "narHash": "sha256-N/3VR/9e1NlN49p7kCiATiEY6Tzdo+CbrAG8kqCQKcI=", + "lastModified": 1713562564, + "narHash": "sha256-NQpYhgoy0M89g9whRixSwsHb8RFIbwlxeYiVSDwSXJg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "080a4a27f206d07724b88da096e27ef63401a504", + "rev": "92d295f588631b0db2da509f381b4fb1e74173c5", "type": "github" }, "original": { diff --git a/pkgs/bitcoin/default.nix b/pkgs/bitcoin/default.nix new file mode 100644 index 000000000..8d8f8c89c --- /dev/null +++ b/pkgs/bitcoin/default.nix @@ -0,0 +1,124 @@ +# Copied from nixpkgs 9765893b19b7e121f327f3d2e0d6079386bebea2 +{ lib +, stdenv +, fetchurl +, autoreconfHook +, pkg-config +, installShellFiles +, util-linux +, hexdump +, autoSignDarwinBinariesHook +, wrapQtAppsHook ? null +, boost +, libevent +, miniupnpc +, zeromq +, zlib +, db48 +, sqlite +, qrencode +, qtbase ? null +, qttools ? null +, python3 +, nixosTests +, withGui +, withWallet ? true +}: + +let + desktop = fetchurl { + # c2e5f3e is the last commit when the debian/bitcoin-qt.desktop file was changed + url = "https://raw.githubusercontent.com/bitcoin-core/packaging/c2e5f3e20a8093ea02b73cbaf113bc0947b4140e/debian/bitcoin-qt.desktop"; + sha256 = "0cpna0nxcd1dw3nnzli36nf9zj28d2g9jf5y0zl9j18lvanvniha"; + }; +in +stdenv.mkDerivation rec { + pname = if withGui then "bitcoin" else "bitcoind"; + version = "26.1"; + + src = fetchurl { + urls = [ + "https://bitcoincore.org/bin/bitcoin-core-${version}/bitcoin-${version}.tar.gz" + ]; + # hash retrieved from signed SHA256SUMS + sha256 = "9164ee5d717b4a20cb09f0496544d9d32f365734814fe399f5cdb4552a9b35ee"; + }; + + nativeBuildInputs = + [ autoreconfHook pkg-config installShellFiles ] + ++ lib.optionals stdenv.isLinux [ util-linux ] + ++ lib.optionals stdenv.isDarwin [ hexdump ] + ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ autoSignDarwinBinariesHook ] + ++ lib.optionals withGui [ wrapQtAppsHook ]; + + buildInputs = [ boost libevent miniupnpc zeromq zlib ] + ++ lib.optionals withWallet [ db48 sqlite ] + ++ lib.optionals withGui [ qrencode qtbase qttools ]; + + postInstall = '' + installShellCompletion --bash contrib/completions/bash/bitcoin-cli.bash + installShellCompletion --bash contrib/completions/bash/bitcoind.bash + installShellCompletion --bash contrib/completions/bash/bitcoin-tx.bash + + installShellCompletion --fish contrib/completions/fish/bitcoin-cli.fish + installShellCompletion --fish contrib/completions/fish/bitcoind.fish + installShellCompletion --fish contrib/completions/fish/bitcoin-tx.fish + installShellCompletion --fish contrib/completions/fish/bitcoin-util.fish + installShellCompletion --fish contrib/completions/fish/bitcoin-wallet.fish + '' + lib.optionalString withGui '' + installShellCompletion --fish contrib/completions/fish/bitcoin-qt.fish + + install -Dm644 ${desktop} $out/share/applications/bitcoin-qt.desktop + substituteInPlace $out/share/applications/bitcoin-qt.desktop --replace "Icon=bitcoin128" "Icon=bitcoin" + install -Dm644 share/pixmaps/bitcoin256.png $out/share/pixmaps/bitcoin.png + ''; + + preConfigure = lib.optionalString stdenv.isDarwin '' + export MACOSX_DEPLOYMENT_TARGET=10.13 + ''; + + configureFlags = [ + "--with-boost-libdir=${boost.out}/lib" + "--disable-bench" + ] ++ lib.optionals (!doCheck) [ + "--disable-tests" + "--disable-gui-tests" + ] ++ lib.optionals (!withWallet) [ + "--disable-wallet" + ] ++ lib.optionals withGui [ + "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" + ]; + + nativeCheckInputs = [ python3 ]; + + doCheck = true; + + checkFlags = + [ "LC_ALL=en_US.UTF-8" ] + # QT_PLUGIN_PATH needs to be set when executing QT, which is needed when testing Bitcoin's GUI. + # See also https://github.com/NixOS/nixpkgs/issues/24256 + ++ lib.optional withGui "QT_PLUGIN_PATH=${qtbase}/${qtbase.qtPluginPrefix}"; + + enableParallelBuilding = true; + + passthru.tests = { + smoke-test = nixosTests.bitcoind; + }; + + meta = with lib; { + description = "Peer-to-peer electronic cash system"; + longDescription = '' + Bitcoin is a free open source peer-to-peer electronic cash system that is + completely decentralized, without the need for a central server or trusted + parties. Users hold the crypto keys to their own money and transact directly + with each other, with the help of a P2P network to check for double-spending. + ''; + homepage = "https://bitcoin.org/en/"; + downloadPage = "https://bitcoincore.org/bin/bitcoin-core-${version}/"; + changelog = "https://bitcoincore.org/en/releases/${version}/"; + maintainers = with maintainers; [ prusnak roconnor ]; + license = licenses.mit; + platforms = platforms.unix; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index 327ed1a0e..94d6e1698 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -10,6 +10,22 @@ in } }: let self = { + # TODO-EXTERNAL: + # Remove bitcoin and bitcoind 26.x packages and replace with 27.0 from nixpkgs + # when a version of lnd is released that is compatible with 27.0 + # (https://github.com/lightningnetwork/lnd/pull/8664). + bitcoin = let inherit (pkgsUnstable) libsForQt5 stdenv darwin; in + libsForQt5.callPackage ./bitcoin { + stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv; + withGui = true; + inherit (darwin) autoSignDarwinBinariesHook; + }; + + bitcoind = let inherit (pkgsUnstable) callPackage darwin; in + callPackage ./bitcoin { + withGui = false; + inherit (darwin) autoSignDarwinBinariesHook; + }; clightning-rest = pkgs.callPackage ./clightning-rest { inherit (self) fetchNodeModules; }; clboss = pkgs.callPackage ./clboss { }; clightning-plugins = pkgs.recurseIntoAttrs (import ./clightning-plugins pkgs self.nbPython3Packages); diff --git a/pkgs/pinned.nix b/pkgs/pinned.nix index 5525371f2..4ad418ba9 100644 --- a/pkgs/pinned.nix +++ b/pkgs/pinned.nix @@ -2,8 +2,6 @@ pkgs: pkgsUnstable: { inherit (pkgs) - bitcoin - bitcoind charge-lnd electrs extra-container diff --git a/test/nixos-search/flake.lock b/test/nixos-search/flake.lock index cea293481..08bcda5d6 100644 --- a/test/nixos-search/flake.lock +++ b/test/nixos-search/flake.lock @@ -39,11 +39,11 @@ "npmlock2nix": "npmlock2nix" }, "locked": { - "lastModified": 1710291012, - "narHash": "sha256-vna5BXoLB50MT+tuN4f/VTIvOc4GyD46WtA2aTjohcA=", + "lastModified": 1713242159, + "narHash": "sha256-3rZnNNdTDWb5uUHUetY5woURdcnChCik7gd0UfT0fvA=", "owner": "nixos", "repo": "nixos-search", - "rev": "7081483b91ca079db329e8d1309ca65adc3e90fb", + "rev": "7bdc02cc99a5f293a127048f59b5bf0ae0d6ff24", "type": "github" }, "original": { diff --git a/test/tests.py b/test/tests.py index a122a6dfd..ef38b9de5 100644 --- a/test/tests.py +++ b/test/tests.py @@ -235,7 +235,7 @@ def _(): '"version"', ) # Test web server response - assert_matches(f"curl -fsS -L {ip('btcpayserver')}:23000", "Welcome to your BTCPay Server") + assert_matches(f"curl -fsS -L {ip('btcpayserver')}:23000", "Welcome to your BTCPay Server") @test("rtl") def _():