summary refs log tree commit diff
path: root/pkgs/applications/blockchains/bitcoin-knots/default.nix
diff options
context:
space:
mode:
authorPavol Rusnak <pavol@rusnak.io>2021-11-21 19:27:08 +0100
committerPavol Rusnak <pavol@rusnak.io>2021-11-21 20:00:24 +0100
commitef9bcf24ca2ee5c6d348b1b95c3a8d59aba33490 (patch)
treedc8499e524226b1c27458280937ec9f053a08745 /pkgs/applications/blockchains/bitcoin-knots/default.nix
parentaa64f174795bea025eb45b6c665d5cc9ceca24ee (diff)
downloadnixpkgs-ef9bcf24ca2ee5c6d348b1b95c3a8d59aba33490.tar
nixpkgs-ef9bcf24ca2ee5c6d348b1b95c3a8d59aba33490.tar.gz
nixpkgs-ef9bcf24ca2ee5c6d348b1b95c3a8d59aba33490.tar.bz2
nixpkgs-ef9bcf24ca2ee5c6d348b1b95c3a8d59aba33490.tar.lz
nixpkgs-ef9bcf24ca2ee5c6d348b1b95c3a8d59aba33490.tar.xz
nixpkgs-ef9bcf24ca2ee5c6d348b1b95c3a8d59aba33490.tar.zst
nixpkgs-ef9bcf24ca2ee5c6d348b1b95c3a8d59aba33490.zip
bitcoin-knots: 0.20.0.knots20200614 -> 22.0.knots20211108
make bitcoin-knots/default.nix much more similar to bitcoin/default.nix
to simplify maintenance
Diffstat (limited to 'pkgs/applications/blockchains/bitcoin-knots/default.nix')
-rw-r--r--pkgs/applications/blockchains/bitcoin-knots/default.nix96
1 files changed, 69 insertions, 27 deletions
diff --git a/pkgs/applications/blockchains/bitcoin-knots/default.nix b/pkgs/applications/blockchains/bitcoin-knots/default.nix
index eea836ac62d..803e27969e7 100644
--- a/pkgs/applications/blockchains/bitcoin-knots/default.nix
+++ b/pkgs/applications/blockchains/bitcoin-knots/default.nix
@@ -1,41 +1,83 @@
-{ lib, stdenv
-, fetchFromGitHub
-, pkg-config
+{ lib
+, stdenv
+, fetchurl
 , autoreconfHook
-, db5
-, openssl
+, pkg-config
+, util-linux
+, hexdump
+, autoSignDarwinBinariesHook
+, wrapQtAppsHook ? null
 , boost
-, zlib
-, miniupnpc
 , libevent
-, protobuf
-, util-linux
+, miniupnpc
+, zeromq
+, zlib
+, db48
+, sqlite
+, qrencode
+, qtbase ? null
+, qttools ? null
+, python3
+, nixosTests
+, withGui
+, withWallet ? true
 }:
 
+with lib;
 stdenv.mkDerivation rec {
-  pname = "bitcoind-knots";
-  version = "0.20.0";
-  versionDate = "20200614";
-
-  src = fetchFromGitHub {
-    owner = "bitcoinknots";
-    repo = "bitcoin";
-    rev = "v${version}.knots${versionDate}";
-    sha256 = "0c8k1154kcwz6q2803wx0zigvqaij1fi5akgfqlj3yl57jjw48jj";
+  pname = if withGui then "bitcoin-knots" else "bitcoind-knots";
+  version = "22.0.knots20211108";
+
+  src = fetchurl {
+    url = "https://bitcoinknots.org/files/22.x/${version}/guix/bitcoin-${version}.tar.gz";
+    sha256 = "04sqbx4sp3bzwbl8z53nz96n3s0590h327ih0mbgyvfvl3b8pj4i";
   };
 
-  nativeBuildInputs = [ pkg-config autoreconfHook ];
-  buildInputs = [ openssl db5 openssl util-linux
-                  protobuf boost zlib miniupnpc libevent ];
+  nativeBuildInputs =
+    [ autoreconfHook pkg-config ]
+    ++ optionals stdenv.isLinux [ util-linux ]
+    ++ optionals stdenv.isDarwin [ hexdump ]
+    ++ optionals (stdenv.isDarwin && stdenv.isAarch64) [ autoSignDarwinBinariesHook ]
+    ++ optionals withGui [ wrapQtAppsHook ];
+
+  buildInputs = [ boost libevent miniupnpc zeromq zlib ]
+    ++ optionals withWallet [ db48 sqlite ]
+    ++ optionals withGui [ qrencode qtbase qttools ];
+
+  configureFlags = [
+    "--with-boost-libdir=${boost.out}/lib"
+    "--disable-bench"
+  ] ++ optionals (!doCheck) [
+    "--disable-tests"
+    "--disable-gui-tests"
+  ] ++ optionals (!withWallet) [
+    "--disable-wallet"
+  ] ++ optionals withGui [
+    "--with-gui=qt5"
+    "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin"
+  ];
+
+  checkInputs = [ python3 ];
 
-  configureFlags = [ "--with-incompatible-bdb"
-                     "--with-boost-libdir=${boost.out}/lib" ];
+  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
+    ++ optional withGui "QT_PLUGIN_PATH=${qtbase}/${qtbase.qtPluginPrefix}";
+
+  enableParallelBuilding = true;
+
+  passthru.tests = {
+    smoke-test = nixosTests.bitcoind-knots;
+  };
 
-  meta = with lib; {
-    description = "An enhanced Bitcoin node software";
+  meta = {
+    description = "A derivative of Bitcoin Core with a collection of improvements";
     homepage = "https://bitcoinknots.org/";
+    maintainers = with maintainers; [ prusnak mmahut ];
     license = licenses.mit;
-    maintainers = [ maintainers.mmahut ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }