summaryrefslogtreecommitdiffstats
path: root/pkgs/applications/blockchains/bitcoin-knots/default.nix
diff options
context:
space:
mode:
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 eea836ac62d3..803e27969e7a 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;
};
}