diff options
Diffstat (limited to 'pkgs/applications/blockchains')
85 files changed, 8121 insertions, 0 deletions
diff --git a/pkgs/applications/blockchains/aeon/default.nix b/pkgs/applications/blockchains/aeon/default.nix new file mode 100644 index 00000000000..51557b3fecb --- /dev/null +++ b/pkgs/applications/blockchains/aeon/default.nix @@ -0,0 +1,43 @@ +{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, git, doxygen, graphviz +, boost, miniupnpc, openssl, unbound, cppzmq +, zeromq, pcsclite, readline, libsodium +}: + +let + version = "0.14.1.0"; +in +stdenv.mkDerivation { + pname = "aeon"; + inherit version; + + src = fetchFromGitHub { + owner = "aeonix"; + repo = "aeon"; + rev = "v${version}-aeon"; + fetchSubmodules = true; + sha256 = "sha256-yej4w/2m9YXsMobqHwzA5GBbduhaeTVvmnHUJNWX87E="; + }; + + nativeBuildInputs = [ cmake pkg-config git doxygen graphviz ]; + + buildInputs = [ + boost miniupnpc openssl unbound + cppzmq zeromq pcsclite readline libsodium + ]; + + cmakeFlags = [ + "-DCMAKE_BUILD_TYPE=Release" + "-DBUILD_GUI_DEPS=ON" + "-DReadline_ROOT_DIR=${readline.dev}" + ]; + + hardeningDisable = [ "fortify" ]; + + meta = with lib; { + description = "Private, secure, untraceable currency"; + homepage = "http://www.aeon.cash/"; + license = licenses.bsd3; + maintainers = [ maintainers.aij ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/blockchains/alfis/default.nix b/pkgs/applications/blockchains/alfis/default.nix new file mode 100644 index 00000000000..28ce7512129 --- /dev/null +++ b/pkgs/applications/blockchains/alfis/default.nix @@ -0,0 +1,56 @@ +{ stdenv +, lib +, rustPlatform +, fetchFromGitHub +, pkg-config +, makeWrapper +, webkitgtk +, zenity +, Cocoa +, Security +, WebKit +, withGui ? true +}: + +rustPlatform.buildRustPackage rec { + pname = "alfis"; + version = "0.6.11"; + + src = fetchFromGitHub { + owner = "Revertron"; + repo = "Alfis"; + rev = "v${version}"; + sha256 = "sha256-vm/JBJh58UaSem18RpJuPUzM2GCy4RfCb6Hr1B7KWQA="; + }; + + cargoSha256 = "sha256-8ijGO8up0qVQ/kVX5/DveKyovYLh7jm+d7vooS1waAA="; + + checkFlags = [ + # these want internet access, disable them + "--skip=dns::client::tests::test_tcp_client" + "--skip=dns::client::tests::test_udp_client" + ]; + + nativeBuildInputs = [ pkg-config makeWrapper ]; + buildInputs = lib.optional stdenv.isDarwin Security + ++ lib.optional (withGui && stdenv.isLinux) webkitgtk + ++ lib.optionals (withGui && stdenv.isDarwin) [ Cocoa WebKit ]; + + buildNoDefaultFeatures = true; + buildFeatures = [ + "doh" + ] ++ lib.optional withGui "webgui"; + + postInstall = lib.optionalString (withGui && stdenv.isLinux) '' + wrapProgram $out/bin/alfis \ + --prefix PATH : ${lib.makeBinPath [ zenity ]} + ''; + + meta = with lib; { + description = "Alternative Free Identity System"; + homepage = "https://alfis.name"; + license = licenses.agpl3Only; + maintainers = with maintainers; [ misuzu ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/besu/default.nix b/pkgs/applications/blockchains/besu/default.nix new file mode 100644 index 00000000000..550d65051e3 --- /dev/null +++ b/pkgs/applications/blockchains/besu/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchurl, makeWrapper, jre }: + +stdenv.mkDerivation rec { + pname = "besu"; + version = "21.10.8"; + + src = fetchurl { + url = "https://hyperledger.jfrog.io/artifactory/${pname}-binaries/${pname}/${version}/${pname}-${version}.tar.gz"; + sha256 = "sha256-0yXi42vDinB6nuv5IGj1AhYGqMa2Rku0tNWQCO+AFPw="; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p $out/bin + cp -r bin $out/ + mkdir -p $out/lib + cp -r lib $out/ + wrapProgram $out/bin/${pname} --set JAVA_HOME "${jre}" + ''; + + meta = with lib; { + description = "An enterprise-grade Java-based, Apache 2.0 licensed Ethereum client"; + homepage = "https://www.hyperledger.org/projects/besu"; + license = licenses.asl20; + platforms = platforms.all; + maintainers = with maintainers; [ mmahut ]; + }; +} diff --git a/pkgs/applications/blockchains/bisq-desktop/default.nix b/pkgs/applications/blockchains/bisq-desktop/default.nix new file mode 100644 index 00000000000..869f8dcad05 --- /dev/null +++ b/pkgs/applications/blockchains/bisq-desktop/default.nix @@ -0,0 +1,102 @@ +{ stdenv +, lib +, makeWrapper +, fetchurl +, makeDesktopItem +, copyDesktopItems +, imagemagick +, openjdk11 +, dpkg +, writeScript +, bash +, tor +, gnutar +, zip +, xz +}: + +let + bisq-launcher = writeScript "bisq-launcher" '' + #! ${bash}/bin/bash + + # This is just a comment to convince Nix that Tor is a + # runtime dependency; The Tor binary is in a *.jar file, + # whereas Nix only scans for hashes in uncompressed text. + # ${bisq-tor} + + JAVA_TOOL_OPTIONS="-XX:+UseG1GC -XX:MaxHeapFreeRatio=10 -XX:MinHeapFreeRatio=5 -XX:+UseStringDeduplication" bisq-desktop-wrapped "$@" + ''; + + bisq-tor = writeScript "bisq-tor" '' + #! ${bash}/bin/bash + + exec ${tor}/bin/tor "$@" + ''; +in +stdenv.mkDerivation rec { + pname = "bisq-desktop"; + version = "1.8.4"; + + src = fetchurl { + url = "https://github.com/bisq-network/bisq/releases/download/v${version}/Bisq-64bit-${version}.deb"; + sha256 = "09bpkmn22kal3cxg8sil02wy2f2gplsbdkp4viagn0jppma02jid"; + }; + + nativeBuildInputs = [ makeWrapper copyDesktopItems imagemagick dpkg gnutar zip xz ]; + + desktopItems = [ + (makeDesktopItem { + name = "Bisq"; + exec = "bisq-desktop"; + icon = "bisq"; + desktopName = "Bisq ${version}"; + genericName = "Decentralized bitcoin exchange"; + categories = [ "Network" "P2P" ]; + }) + ]; + + unpackPhase = '' + dpkg -x $src . + ''; + + buildPhase = '' + # Replace the embedded Tor binary (which is in a Tar archive) + # with one from Nixpkgs. + + mkdir -p native/linux/x64/ + cp ${bisq-tor} ./tor + tar -cJf native/linux/x64/tor.tar.xz tor + zip -r opt/bisq/lib/app/desktop-${version}-all.jar native + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib $out/bin + cp opt/bisq/lib/app/desktop-${version}-all.jar $out/lib + + makeWrapper ${openjdk11}/bin/java $out/bin/bisq-desktop-wrapped \ + --add-flags "-jar $out/lib/desktop-${version}-all.jar bisq.desktop.app.BisqAppMain" + + makeWrapper ${bisq-launcher} $out/bin/bisq-desktop \ + --prefix PATH : $out/bin + + for n in 16 24 32 48 64 96 128 256; do + size=$n"x"$n + convert opt/bisq/lib/Bisq.png -resize $size bisq.png + install -Dm644 -t $out/share/icons/hicolor/$size/apps bisq.png + done; + + runHook postInstall + ''; + + passthru.updateScript = ./update.sh; + + meta = with lib; { + description = "A decentralized bitcoin exchange network"; + homepage = "https://bisq.network"; + license = licenses.mit; + maintainers = with maintainers; [ juaningan emmanuelrosa ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/blockchains/bisq-desktop/update.sh b/pkgs/applications/blockchains/bisq-desktop/update.sh new file mode 100755 index 00000000000..393447834bb --- /dev/null +++ b/pkgs/applications/blockchains/bisq-desktop/update.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl jq gnused gnupg common-updater-scripts + +set -eu -o pipefail + +version="$(curl -s https://api.github.com/repos/bisq-network/bisq/releases| jq '.[] | {name,prerelease} | select(.prerelease==false) | limit(1;.[])' | sed 's/[\"v]//g' | head -n 1)" +depname="Bisq-64bit-$version.deb" +src="https://github.com/bisq-network/bisq/releases/download/v$version/$depname" +signature="$src.asc" +key="CB36 D7D2 EBB2 E35D 9B75 500B CD5D C1C5 29CD FD3B" + +pushd $(mktemp -d --suffix=-bisq-updater) +export GNUPGHOME=$PWD/gnupg +mkdir -m 700 -p "$GNUPGHOME" +curl -L -o "$depname" -- "$src" +curl -L -o signature.asc -- "$signature" +gpg --batch --recv-keys "$key" +gpg --batch --verify signature.asc "$depname" +sha256=$(nix-prefetch-url --type sha256 "file://$PWD/$depname") +popd + +update-source-version bisq-desktop "$version" "$sha256" diff --git a/pkgs/applications/blockchains/bitcoin-abc/default.nix b/pkgs/applications/blockchains/bitcoin-abc/default.nix new file mode 100644 index 00000000000..6f1734bbc13 --- /dev/null +++ b/pkgs/applications/blockchains/bitcoin-abc/default.nix @@ -0,0 +1,76 @@ +{ lib +, stdenv +, mkDerivation +, fetchFromGitHub +, pkg-config +, cmake +, openssl +, db53 +, boost +, zlib +, miniupnpc +, qtbase ? null +, qttools ? null +, util-linux +, protobuf +, qrencode +, libevent +, withGui +, python3 +, jemalloc +, zeromq4 +}: + +mkDerivation rec { + pname = "bitcoin" + lib.optionalString (!withGui) "d" + "-abc"; + version = "0.21.13"; + + src = fetchFromGitHub { + owner = "bitcoin-ABC"; + repo = "bitcoin-abc"; + rev = "v${version}"; + sha256 = "1x8xcdi1vcskggk9bqkwr3ah4vi9b7sj2h8hf7spac6dvz8lmzav"; + }; + + patches = [ ./fix-bitcoin-qt-build.patch ]; + + nativeBuildInputs = [ pkg-config cmake ]; + buildInputs = [ + openssl + db53 + boost + zlib + python3 + jemalloc + zeromq4 + miniupnpc + util-linux + protobuf + libevent + ] ++ lib.optionals withGui [ qtbase qttools qrencode ]; + + cmakeFlags = lib.optionals (!withGui) [ + "-DBUILD_BITCOIN_QT=OFF" + ]; + + # many of the generated scripts lack execute permissions + postConfigure = '' + find ./. -type f -iname "*.sh" -exec chmod +x {} \; + ''; + + meta = with lib; { + description = "Peer-to-peer electronic cash system (Cash client)"; + longDescription = '' + Bitcoin ABC is the name of open source software which enables the use of Bitcoin. + It is designed to facilite a hard fork to increase Bitcoin's block size limit. + "ABC" stands for "Adjustable Blocksize Cap". + + Bitcoin ABC is a fork of the Bitcoin Core software project. + ''; + homepage = "https://bitcoinabc.org/"; + maintainers = with maintainers; [ lassulus ]; + license = licenses.mit; + broken = stdenv.isDarwin; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/bitcoin-abc/fix-bitcoin-qt-build.patch b/pkgs/applications/blockchains/bitcoin-abc/fix-bitcoin-qt-build.patch new file mode 100644 index 00000000000..c49bbc43251 --- /dev/null +++ b/pkgs/applications/blockchains/bitcoin-abc/fix-bitcoin-qt-build.patch @@ -0,0 +1,15 @@ +--- bitcoin-abc-v0.15.0-src/build-aux/m4/bitcoin_qt.m4 1970-01-01 01:00:01.000000000 +0100 ++++ bitcoin-abc-v0.15.0-src.org/build-aux/m4/bitcoin_qt.m4 2017-09-27 23:38:44.748384197 +0100 +@@ -35,11 +35,7 @@ + dnl Output: $1 is set to the path of $2 if found. $2 are searched in order. + AC_DEFUN([BITCOIN_QT_PATH_PROGS],[ + BITCOIN_QT_CHECK([ +- if test "x$3" != x; then +- AC_PATH_PROGS($1,$2,,$3) +- else +- AC_PATH_PROGS($1,$2) +- fi ++ AC_PATH_PROGS($1,$2) + if test "x$$1" = x && test "x$4" != xyes; then + BITCOIN_QT_FAIL([$1 not found]) + fi diff --git a/pkgs/applications/blockchains/bitcoin-classic/default.nix b/pkgs/applications/blockchains/bitcoin-classic/default.nix new file mode 100644 index 00000000000..8aacb50a1b5 --- /dev/null +++ b/pkgs/applications/blockchains/bitcoin-classic/default.nix @@ -0,0 +1,76 @@ +{ lib +, stdenv +, fetchFromGitHub +, pkg-config +, autoreconfHook +, openssl +, db48 +, boost +, zlib +, miniupnpc +, qtbase ? null +, qttools ? null +, util-linux +, protobuf +, qrencode +, libevent +, withGui +}: + +stdenv.mkDerivation rec { + pname = "bitcoin" + lib.optionalString (!withGui) "d" + "-classic"; + version = "1.3.8uahf"; + + src = fetchFromGitHub { + owner = "bitcoinclassic"; + repo = "bitcoinclassic"; + rev = "v${version}"; + sha256 = "sha256-fVmFD1B4kKoejd2cmPPF5TJJQTAA6AVsGlVY8IIUNK4="; + }; + + nativeBuildInputs = [ pkg-config autoreconfHook ]; + buildInputs = [ + openssl + db48 + boost + zlib + miniupnpc + util-linux + protobuf + libevent + ] ++ lib.optionals withGui [ qtbase qttools qrencode ]; + + configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ] + ++ lib.optionals withGui [ + "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" + ]; + + enableParallelBuilding = true; + + dontWrapQtApps = true; + + meta = with lib; { + description = "Peer-to-peer electronic cash system (Classic client)"; + 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. + + Bitcoin Classic stands for the original Bitcoin as Satoshi described it, + "A Peer-to-Peer Electronic Cash System". We are writing the software that + miners and users say they want. We will make sure it solves their needs, help + them deploy it, and gracefully upgrade the bitcoin network's capacity + together. The data shows that Bitcoin can grow, on-chain, to welcome many + more users onto our coin in a safe and distributed manner. In the future we + will continue to release updates that are in line with Satoshi’s whitepaper & + vision, and are agreed upon by the community. + ''; + homepage = "https://bitcoinclassic.com/"; + maintainers = with maintainers; [ jefdaj ]; + license = licenses.mit; + broken = stdenv.isDarwin; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/bitcoin-gold/default.nix b/pkgs/applications/blockchains/bitcoin-gold/default.nix new file mode 100644 index 00000000000..5d6775f729a --- /dev/null +++ b/pkgs/applications/blockchains/bitcoin-gold/default.nix @@ -0,0 +1,72 @@ +{ lib, stdenv +, fetchFromGitHub +, openssl +, boost +, libb2 +, libevent +, autoreconfHook +, db4 +, pkg-config +, protobuf +, hexdump +, zeromq +, libsodium +, withGui +, qtbase ? null +, qttools ? null +, wrapQtAppsHook ? null +}: + +with lib; + +stdenv.mkDerivation rec { + + pname = "bitcoin" + toString (optional (!withGui) "d") + "-gold"; + version = "0.17.3"; + + src = fetchFromGitHub { + owner = "BTCGPU"; + repo = "BTCGPU"; + rev = "v${version}"; + sha256 = "sha256-1tFoUNsCPJkHSmNRl5gE3n2EQD6RZSry1zIM5hiTzEI="; + }; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + hexdump + ] ++ optionals withGui [ + wrapQtAppsHook + ]; + + buildInputs = [ + openssl + boost + libevent + db4 + zeromq + libsodium + libb2 + ] ++ optionals withGui [ + qtbase + qttools + protobuf + ]; + + enableParallelBuilding = true; + + configureFlags = [ + "--with-boost-libdir=${boost.out}/lib" + ] ++ optionals withGui [ + "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" + ]; + + meta = { + description = "BTG is a cryptocurrency with Bitcoin fundamentals, mined on common GPUs instead of specialty ASICs"; + homepage = "https://bitcoingold.org/"; + license = licenses.mit; + maintainers = [ maintainers.mmahut ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/bitcoin-knots/default.nix b/pkgs/applications/blockchains/bitcoin-knots/default.nix new file mode 100644 index 00000000000..803e27969e7 --- /dev/null +++ b/pkgs/applications/blockchains/bitcoin-knots/default.nix @@ -0,0 +1,83 @@ +{ lib +, stdenv +, fetchurl +, autoreconfHook +, pkg-config +, util-linux +, hexdump +, autoSignDarwinBinariesHook +, wrapQtAppsHook ? null +, boost +, libevent +, miniupnpc +, zeromq +, zlib +, db48 +, sqlite +, qrencode +, qtbase ? null +, qttools ? null +, python3 +, nixosTests +, withGui +, withWallet ? true +}: + +with lib; +stdenv.mkDerivation rec { + 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 = + [ 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 ]; + + 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 = { + description = "A derivative of Bitcoin Core with a collection of improvements"; + homepage = "https://bitcoinknots.org/"; + maintainers = with maintainers; [ prusnak mmahut ]; + license = licenses.mit; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/bitcoin-unlimited/default.nix b/pkgs/applications/blockchains/bitcoin-unlimited/default.nix new file mode 100644 index 00000000000..802a19167a9 --- /dev/null +++ b/pkgs/applications/blockchains/bitcoin-unlimited/default.nix @@ -0,0 +1,66 @@ +{ lib, stdenv, fetchFromGitHub, pkg-config, autoreconfHook, openssl, db48, boost +, zlib, miniupnpc, util-linux, protobuf, qrencode, libevent, python3 +, withGui, wrapQtAppsHook ? null, qtbase ? null, qttools ? null +, Foundation, ApplicationServices, AppKit }: + +with lib; + +stdenv.mkDerivation rec { + name = "bitcoin" + (toString (optional (!withGui) "d")) + "-unlimited-" + version; + version = "1.9.2.0"; + + src = fetchFromGitHub { + owner = "bitcoinunlimited"; + repo = "bitcoinunlimited"; + rev = "BCHunlimited${version}"; + sha256 = "sha256-qUf/GWZHpI57ATTlvRhjDtAjRa8a4uvUb0G9Xcf0j7w="; + }; + + nativeBuildInputs = [ pkg-config autoreconfHook python3 ] + ++ optionals withGui [ wrapQtAppsHook qttools ]; + buildInputs = [ openssl db48 boost zlib + miniupnpc util-linux protobuf libevent ] + ++ optionals withGui [ qtbase qttools qrencode ] + ++ optionals stdenv.isDarwin [ Foundation ApplicationServices AppKit ]; + + configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ] + ++ optionals withGui [ "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" + ]; + enableParallelBuilding = true; + + meta = { + description = "Peer-to-peer electronic cash system (Unlimited client)"; + 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. + + The Bitcoin Unlimited (BU) project seeks to provide a voice to all + stakeholders in the Bitcoin ecosystem. + + Every node operator or miner can currently choose their own blocksize limit + by modifying their client. Bitcoin Unlimited makes the process easier by + providing a configurable option for the accepted and generated blocksize via + a GUI menu. Bitcoin Unlimited further provides a user-configurable failsafe + setting allowing you to accept a block larger than your maximum accepted + blocksize if it reaches a certain number of blocks deep in the chain. + + The Bitcoin Unlimited client is not a competitive block scaling proposal + like BIP-101, BIP-102, etc. Instead it tracks consensus. This means that it + tracks the blockchain that the hash power majority follows, irrespective of + blocksize, and signals its ability to accept larger blocks via protocol and + block versioning fields. + + If you support an increase in the blocksize limit by any means - or just + support Bitcoin conflict resolution as originally envisioned by its founder - + consider running a Bitcoin Unlimited client. + ''; + homepage = "https://www.bitcoinunlimited.info/"; + maintainers = with maintainers; [ DmitryTsygankov ]; + license = licenses.mit; + broken = stdenv.isDarwin; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/bitcoin/default.nix b/pkgs/applications/blockchains/bitcoin/default.nix new file mode 100644 index 00000000000..35ab9791ec7 --- /dev/null +++ b/pkgs/applications/blockchains/bitcoin/default.nix @@ -0,0 +1,108 @@ +{ lib +, stdenv +, fetchurl +, autoreconfHook +, pkg-config +, util-linux +, hexdump +, autoSignDarwinBinariesHook +, wrapQtAppsHook ? null +, boost +, libevent +, miniupnpc +, zeromq +, zlib +, db48 +, sqlite +, qrencode +, qtbase ? null +, qttools ? null +, python3 +, nixosTests +, withGui +, withWallet ? true +}: + +with lib; +let + version = "22.0"; + majorVersion = versions.major version; + desktop = fetchurl { + url = "https://raw.githubusercontent.com/bitcoin-core/packaging/${majorVersion}.x/debian/bitcoin-qt.desktop"; + sha256 = "0cpna0nxcd1dw3nnzli36nf9zj28d2g9jf5y0zl9j18lvanvniha"; + }; +in +stdenv.mkDerivation rec { + pname = if withGui then "bitcoin" else "bitcoind"; + inherit version; + + src = fetchurl { + urls = [ + "https://bitcoincore.org/bin/bitcoin-core-${version}/bitcoin-${version}.tar.gz" + "https://bitcoin.org/bin/bitcoin-core-${version}/bitcoin-${version}.tar.gz" + ]; + sha256 = "d0e9d089b57048b1555efa7cd5a63a7ed042482045f6f33402b1df425bf9613b"; + }; + + 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 ]; + + postInstall = optionalString withGui '' + 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 + ''; + + 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 ]; + + 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; + }; + + meta = { + 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/applications/blockchains/btcdeb/default.nix b/pkgs/applications/blockchains/btcdeb/default.nix new file mode 100644 index 00000000000..7f4e438173b --- /dev/null +++ b/pkgs/applications/blockchains/btcdeb/default.nix @@ -0,0 +1,30 @@ +{ lib, stdenv +, fetchFromGitHub +, autoreconfHook +, pkg-config +, openssl +}: + +with lib; +stdenv.mkDerivation rec { + pname = "btcdeb-unstable"; + version = "200806"; + + src = fetchFromGitHub { + owner = "bitcoin-core"; + repo = "btcdeb"; + rev = "f6708c397c64894c9f9e31bea2d22285d9462de7"; + sha256 = "0qkmf89z2n7s95vhw3n9vh9dbi14zy4vqw3ffdh1w911jwm5ry3z"; + }; + + nativeBuildInputs = [ pkg-config autoreconfHook ]; + buildInputs = [ openssl ]; + + meta = { + description = "Bitcoin Script Debugger"; + homepage = "https://github.com/kallewoof/btcdeb"; + license = licenses.mit; + maintainers = with maintainers; [ akru ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/btcpayserver/default.nix b/pkgs/applications/blockchains/btcpayserver/default.nix new file mode 100644 index 00000000000..4a06592ce01 --- /dev/null +++ b/pkgs/applications/blockchains/btcpayserver/default.nix @@ -0,0 +1,34 @@ +{ lib, buildDotnetModule, fetchFromGitHub, dotnetCorePackages +, altcoinSupport ? false }: + +buildDotnetModule rec { + pname = "btcpayserver"; + version = "1.4.7"; + + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-Qz4BNrhK+NPnKBgjXGYl4P2R878LCuMGZxLECawA12E="; + }; + + projectFile = "BTCPayServer/BTCPayServer.csproj"; + nugetDeps = ./deps.nix; + + dotnet-sdk = dotnetCorePackages.sdk_6_0; + dotnet-runtime = dotnetCorePackages.aspnetcore_6_0; + + buildType = if altcoinSupport then "Altcoins-Release" else "Release"; + + postFixup = '' + mv $out/bin/{BTCPayServer,btcpayserver} + ''; + + meta = with lib; { + description = "Self-hosted, open-source cryptocurrency payment processor"; + homepage = "https://btcpayserver.org"; + maintainers = with maintainers; [ kcalvinalvin earvstedt ]; + license = licenses.mit; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/btcpayserver/deps.nix b/pkgs/applications/blockchains/btcpayserver/deps.nix new file mode 100644 index 00000000000..57602e2231c --- /dev/null +++ b/pkgs/applications/blockchains/btcpayserver/deps.nix @@ -0,0 +1,2057 @@ +{ fetchNuGet }: [ + (fetchNuGet { + pname = "AngleSharp.Css"; + version = "0.14.2"; + sha256 = "1d34a8ab5dri4wlw07jvk7b1z0d0zizwihwpdfva3sxhb4279ahd"; + }) + (fetchNuGet { + pname = "AngleSharp"; + version = "0.14.0"; + sha256 = "1zgwhh1fp2mmaplvpgm86rpmslix3wqfxf0d3hxx1gxwfgr6wxm6"; + }) + (fetchNuGet { + pname = "AWSSDK.Core"; + version = "3.3.104.14"; + sha256 = "157694kb63z1szbsv861515fvjv7amrjrfmgbm3idpyw31afk650"; + }) + (fetchNuGet { + pname = "AWSSDK.S3"; + version = "3.3.110.10"; + sha256 = "1lf1hfbx792dpa1hxgn0a0jrrvldd16hgbxx229dk2qcz5qlnc38"; + }) + (fetchNuGet { + pname = "BIP78.Sender"; + version = "0.2.2"; + sha256 = "12pm2s35c0qzc06099q2z1pxwq94rq85n74yz8fs8gwvm2ksgp4p"; + }) + (fetchNuGet { + pname = "BTCPayServer.Hwi"; + version = "2.0.2"; + sha256 = "0lh3n1qncqs4kbrmx65xs271f0d9c7irrs9qnsa9q51cbbqbljh9"; + }) + (fetchNuGet { + pname = "BTCPayServer.Lightning.All"; + version = "1.3.2"; + sha256 = "0xcfba8n9zf5m1nb48ilggp03kpki4nv4kx7k7a5w1gxgm6k6j9z"; + }) + (fetchNuGet { + pname = "BTCPayServer.Lightning.Charge"; + version = "1.3.1"; + sha256 = "1xakwnb839dl0qnhqprsnfq8png31iyb0fsngljis5jc8yvb4353"; + }) + (fetchNuGet { + pname = "BTCPayServer.Lightning.CLightning"; + version = "1.3.1"; + sha256 = "0a79p6i3xiq6svv08c4hhihkvqa2ac7fphi3g9i0cwh47ak0k5h2"; + }) + (fetchNuGet { + pname = "BTCPayServer.Lightning.Common"; + version = "1.2.7"; + sha256 = "1hz4bn3aw537r253ipdpa6sydwhb6dh3r82xp1jizn9a6mnw54x6"; + }) + (fetchNuGet { + pname = "BTCPayServer.Lightning.Common"; + version = "1.3.1"; + sha256 = "165p1246fn628hlwdrx7sanlxa6qqpn480rq1asn5r1602w21844"; + }) + (fetchNuGet { + pname = "BTCPayServer.Lightning.Eclair"; + version = "1.3.1"; + sha256 = "1vlwm5mw8wffp00xhkx19yavk59b5x540sg81vis3q7hjvvgca5c"; + }) + (fetchNuGet { + pname = "BTCPayServer.Lightning.LNBank"; + version = "1.3.1"; + sha256 = "0qga34vi4fzfr0g4qk0ad8xkqdig2ishmdj9i32s5yrrjrkx7c8d"; + }) + (fetchNuGet { + pname = "BTCPayServer.Lightning.LND"; + version = "1.3.1"; + sha256 = "1b70jlyzy9xjvfywzi6i3l3sd4mkknxpni9akdi0phsfqysmy0wl"; + }) + (fetchNuGet { + pname = "BuildBundlerMinifier"; + version = "3.2.449"; + sha256 = "1dcjlfl5w2vfppx2hq3jj6xy24id2x3hcajwylhphlz9jw2bnhsv"; + }) + (fetchNuGet { + pname = "BundlerMinifier.Core"; + version = "3.2.435"; + sha256 = "17338x8ycr7hjzq16kr0ri30k19802hsn1sy259k3v694mxk59vd"; + }) + (fetchNuGet { + pname = "BundlerMinifier.TagHelpers"; + version = "3.2.435"; + sha256 = "0ksmby0lzgsxkv0xfzr840262kcqra9vds91mcx0rf20blksfvsk"; + }) + (fetchNuGet { + pname = "CsvHelper"; + version = "15.0.5"; + sha256 = "01y8bhsnxghn3flz0pr11vj6wjrpmia8rpdrsp7kjfc1zmhqlgma"; + }) + (fetchNuGet { + pname = "DigitalRuby.ExchangeSharp"; + version = "0.6.3"; + sha256 = "1vb7ahafcd3lcbiiz552aisilwm1yq3j600gkf1wik8vhvsk02fs"; + }) + (fetchNuGet { + pname = "Fido2.AspNet"; + version = "2.0.1"; + sha256 = "1d6bjyck3mlhb9b4c75xhzr2pcs47vdqg2ayi5wnjh1aszyam3nq"; + }) + (fetchNuGet { + pname = "Fido2.Models"; + version = "2.0.1"; + sha256 = "0llpzkik82n5gpgjawx181j85d2lizimkbdkxj1wyrjvxb2xbg3q"; + }) + (fetchNuGet { + pname = "Fido2"; + version = "2.0.1"; + sha256 = "1s829n970lxngbhac9lvarwa9n9hqxr79kwv8i12amnmg6ir8ny5"; + }) + (fetchNuGet { + pname = "Google.Api.Gax.Rest"; + version = "2.5.0"; + sha256 = "1zkjl5zh6qwdz4qmnxnk5877pas638i2qi25znilhqqf3mrkp0rp"; + }) + (fetchNuGet { + pname = "Google.Api.Gax"; + version = "2.5.0"; + sha256 = "0q6pi53px998i3gdndla8v0zqdpyi9gnsy9mdcfpkrg09vfbdsl9"; + }) + (fetchNuGet { + pname = "Google.Apis.Auth"; + version = "1.35.1"; + sha256 = "1qdnd1nq9bfgyljmiww91pfi0iz1n29rz2dlizhxcijqya2ldha3"; + }) + (fetchNuGet { + pname = "Google.Apis.Auth"; + version = "1.38.0"; + sha256 = "0x3bdwiyqjxw5df99bfasmsv09kb47wzisag938631cijl0g277y"; + }) + (fetchNuGet { + pname = "Google.Apis.Core"; + version = "1.35.1"; + sha256 = "01dfw2kxknlc5pm7x1q88lv9j979509lkkgvlffjry5bawsxsja4"; + }) + (fetchNuGet { + pname = "Google.Apis.Core"; + version = "1.38.0"; + sha256 = "012gslhnx65vqfyzjnqx4bqk9kb8bwbx966q2f9fdgrfcn26gj9j"; + }) + (fetchNuGet { + pname = "Google.Apis.Storage.v1"; + version = "1.38.0.1470"; + sha256 = "0mfrz7fmpfbjvp4zfpjasmnfbgxgxrrjkf8xgp9p6h9g8qh2f2h2"; + }) + (fetchNuGet { + pname = "Google.Apis"; + version = "1.35.1"; + sha256 = "1022l8m7v9f3rkjc9l11mkzwsbmqx9sk5f4aym035vn9hdr16d49"; + }) + (fetchNuGet { + pname = "Google.Apis"; + version = "1.38.0"; + sha256 = "01j3d1lv106cqw9n0lwgclrxghy852fsibv6av4xr03ivrkm8g40"; + }) + (fetchNuGet { + pname = "Google.Cloud.Storage.V1"; + version = "2.3.0"; + sha256 = "01jhrd6m6md8m28chzg2dkdfd4yris79j1xi7r1ydm1cfjhmlj64"; + }) + (fetchNuGet { + pname = "HtmlSanitizer"; + version = "5.0.372"; + sha256 = "1gllp58vdbql2ybwf05i2178x7p4g8zyyk64317d1pyss5217g7r"; + }) + (fetchNuGet { + pname = "Humanizer.Core"; + version = "2.8.26"; + sha256 = "1v8xd12yms4qq1md4vh6faxicmqrvahqdd7sdkyzrphab9v44nsm"; + }) + (fetchNuGet { + pname = "libsodium"; + version = "1.0.18"; + sha256 = "15qzl5k31yaaapqlijr336lh4lzz1qqxlimgxy8fdyig8jdmgszn"; + }) + (fetchNuGet { + pname = "LNURL"; + version = "0.0.15"; + sha256 = "1fy6ywzqs5y9c6d156v08dg8c6689d5xb4y1ar7gqgz6f3cl842n"; + }) + (fetchNuGet { + pname = "MailKit"; + version = "3.0.0"; + sha256 = "0z6bf80zqqwlli844xkv7xzdip8lwrag5cpvx3vydzy6qg0xf2cg"; + }) + (fetchNuGet { + pname = "McMaster.NETCore.Plugins.Mvc"; + version = "1.4.0"; + sha256 = "07i0p6236hyh1c3cb5v6zkayq5807rd6msc341v2jh6yd5radasy"; + }) + (fetchNuGet { + pname = "McMaster.NETCore.Plugins"; + version = "1.4.0"; + sha256 = "1k2qz0qnf2b1kfwbzcynivy93jm7dcwl866d0fl7qlgq5vql7niy"; + }) + (fetchNuGet { + pname = "Microsoft.AspNet.SignalR.Client"; + version = "2.3.0"; + sha256 = "1xyj8b88bc6sc7fxgqyalzfmlfgbagfk7adyk29if9hr8ki9bic4"; + }) + (fetchNuGet { + pname = "Microsoft.AspNet.WebApi.Client"; + version = "5.2.7"; + sha256 = "1j0wbdmycj5xbk06p32f7xrddc40sbj3yca4d7ywg611yk26mvi1"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Connections.Abstractions"; + version = "3.1.10"; + sha256 = "05drcgbpzq700kvxnfxha10w3jgfp2jp0r2h4hpczjxj6cywbbi6"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Cryptography.Internal"; + version = "6.0.1"; + sha256 = "1mj04ynr6bxvmq9nrggi832n8hbcr9j9kjr9y2rgiq91y6skzg37"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Cryptography.KeyDerivation"; + version = "6.0.1"; + sha256 = "0aqaviwbnwg0vpwwdbif7b9ncpckwpclm77l3ac11s8fsq3vb3sm"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Hosting.Abstractions"; + version = "2.0.0"; + sha256 = "0x6vw7kiy9z7cdmgbqav0d9wq66032wg39l2c9cv6xvxxvdpbkz7"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Hosting.Server.Abstractions"; + version = "2.0.0"; + sha256 = "1k4dr6l32swi8zasfvzxixnjvgbrra7v6lgpri0929vb3r5lagjb"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Http.Abstractions"; + version = "2.0.0"; + sha256 = "1hgmnd5mj35g8cqq3mdhjf9cmi3wm5lqiyrj5mgfscnig6i686xr"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Http.Connections.Client"; + version = "3.1.10"; + sha256 = "1sni7hjpylamxaf98insalx3jj2k8skb02mhkmamxxj2488r2p9j"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Http.Connections.Common"; + version = "3.1.10"; + sha256 = "19mddj0dpy4j6fwh8b1q7aznnckjrkpvbqiyq4sq4z7lcgw6pbq6"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Http.Features"; + version = "2.0.0"; + sha256 = "1zk5ad3laa7ma83md8r80kijqzps6dcrvv0k1015nddfk1qd74s6"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Http.Features"; + version = "3.1.10"; + sha256 = "1y6zf2qgph6ga59272msywdv2xrycg56wz50bjm5pivmh6wv9240"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Identity.EntityFrameworkCore"; + version = "6.0.1"; + sha256 = "1j9z0xzj2hlffhg28ijp33flljq75js8dvlchbpggvvd789hm4il"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.JsonPatch"; + version = "6.0.1"; + sha256 = "0rsqng2b8a3zaha9c2x1195das5wwvmnz31xf14ancgha4lxq68r"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Mvc.NewtonsoftJson"; + version = "6.0.1"; + sha256 = "179b2774s68im71r32lv4nydcp586x86zggs8ml6jcfjrd9fs5b1"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Mvc.Razor.Extensions"; + version = "6.0.1"; + sha256 = "1grhlksdd7mwv72g78kx86mzba8mgza3i53x9jv16bkc1wxqwfcd"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"; + version = "6.0.1"; + sha256 = "0778xw230flwqkjjydp73gb6r3brrlqwqdrf4m0b92b083bysh59"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Razor.Language"; + version = "6.0.1"; + sha256 = "11spvrnp2mz5kc11ycv2wpgn8bilwpinbl6vkvvr7jjrqlm36lk1"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.SignalR.Client.Core"; + version = "3.1.10"; + sha256 = "1289624ilk45ca8rkyvirqdjsg9jsnqn8dzbjr6f83641fi73s69"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.SignalR.Client"; + version = "3.1.10"; + sha256 = "1s352srycksfnvz5hhi7himpg2gn39iw2gizlc3g30w6pvy8p29c"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.SignalR.Common"; + version = "3.1.10"; + sha256 = "0c6lim7my3alq43xxqkgykba068hjlzdcif6c956irailijc0smw"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.SignalR.Protocols.Json"; + version = "3.1.10"; + sha256 = "0qzdpblmgqm3bl5wr14igkqp35zwx4wdkwlh55xm4v3hzhq6l46m"; + }) + (fetchNuGet { + pname = "Microsoft.CodeAnalysis.Analyzers"; + version = "3.3.2"; + sha256 = "162vb5894zxps0cf5n9gc08an7gwybzz87allx3lsszvllr9ldx4"; + }) + (fetchNuGet { + pname = "Microsoft.CodeAnalysis.Common"; + version = "4.0.0"; + sha256 = "1rwnz5zy7ia9312n2qzzar95x9p7iiw57cql7ssdwv255xl1ix29"; + }) + (fetchNuGet { + pname = "Microsoft.CodeAnalysis.Common"; + version = "4.0.1"; + sha256 = "0axjv1nhk1z9d4c51d9yxdp09l8yqqnqaifhqcwnxnv0r4y5cka9"; + }) + (fetchNuGet { + pname = "Microsoft.CodeAnalysis.CSharp"; + version = "4.0.0"; + sha256 = "1mzxjy7xp8r9x25xyspq89ngsz0hmkbp0l0h3v1jv2rcrw63wqb4"; + }) + (fetchNuGet { + pname = "Microsoft.CodeAnalysis.CSharp"; + version = "4.0.1"; + sha256 = "1h6jfifg7pw2vacpdds4v4jqnaydg9b108irf315wzx6rh8yv9cb"; + }) + (fetchNuGet { + pname = "Microsoft.CodeAnalysis.Razor"; + version = "6.0.1"; + sha256 = "0dwwhiv28wyzq3177qg961ll2q3ggiw2k0zdashgym5cl67p93lm"; + }) + (fetchNuGet { + pname = "Microsoft.CodeCoverage"; + version = "17.0.0"; + sha256 = "18gdbsqf6i79ld4ikqr4jhx9ndsggm865b5xj1xmnmgg12ydp19a"; + }) + (fetchNuGet { + pname = "Microsoft.CSharp"; + version = "4.0.1"; + sha256 = "0zxc0apx1gcx361jlq8smc9pfdgmyjh6hpka8dypc9w23nlsh6yj"; + }) + (fetchNuGet { + pname = "Microsoft.CSharp"; + version = "4.3.0"; + sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb"; + }) + (fetchNuGet { + pname = "Microsoft.CSharp"; + version = "4.5.0"; + sha256 = "01i28nvzccxbqmiz217fxs6hnjwmd5fafs37rd49a6qp53y6623l"; + }) + (fetchNuGet { + pname = "Microsoft.CSharp"; + version = "4.7.0"; + sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j"; + }) + (fetchNuGet { + pname = "Microsoft.Data.Sqlite.Core"; + version = "6.0.1"; + sha256 = "0gzn3rynp9k6mx4h4dhq124b7ra8m11rkjh40r2r8z4gkr0shjv1"; + }) + (fetchNuGet { + pname = "Microsoft.DotNet.PlatformAbstractions"; + version = "2.0.4"; + sha256 = "1fdzln4im9hb55agzwchbfgm3vmngigmbpci5j89b0gqcxixmv8j"; + }) + (fetchNuGet { + pname = "Microsoft.DotNet.PlatformAbstractions"; + version = "3.1.6"; + sha256 = "0b9myd7gqbpaw9pkd2bx45jhik9mwj0f1ss57sk2cxmag2lkdws5"; + }) + (fetchNuGet { + pname = "Microsoft.EntityFrameworkCore.Abstractions"; + version = "6.0.0"; + sha256 = "1aw13qjkpglc1mm3cv7s73s8fschy8lzdnigsp346b7mycpg7v92"; + }) + (fetchNuGet { + pname = "Microsoft.EntityFrameworkCore.Abstractions"; + version = "6.0.1"; + sha256 = "15mx86i7gqlak604vr853x7a4b4l48wz5vqh9qbib7wh4pkf4rp3"; + }) + (fetchNuGet { + pname = "Microsoft.EntityFrameworkCore.Analyzers"; + version = "6.0.1"; + sha256 = "16739crhjky22j53v8varninz9bqdmdfwjnzj6xvfxqfl858jja5"; + }) + (fetchNuGet { + pname = "Microsoft.EntityFrameworkCore.Design"; + version = "6.0.1"; + sha256 = "13bi91lkasy4qj04jn2hmbwpsc6fybgllwsr87qhz5p86ig9ryq9"; + }) + (fetchNuGet { + pname = "Microsoft.EntityFrameworkCore.Relational"; + version = "6.0.0"; + sha256 = "1v2r8004isvz4d8qxh5clgkbnlwivjlsqhn7skw0y9b5i61y2mwk"; + }) + (fetchNuGet { + pname = "Microsoft.EntityFrameworkCore.Relational"; + version = "6.0.1"; + sha256 = "0224qas1rl3jv02ribb2lwfqcd64ij40v6q10369h4mrwr071zr2"; + }) + (fetchNuGet { + pname = "Microsoft.EntityFrameworkCore.Sqlite.Core"; + version = "6.0.1"; + sha256 = "1snpa3pzpqfsnf2dpmvhv08lzcdiqcl5af6aldlxrm82dpif95q5"; + }) + (fetchNuGet { + pname = "Microsoft.EntityFrameworkCore.Sqlite"; + version = "6.0.1"; + sha256 = "14r1j8bamfwnjzx6igc5nzqvp5gzl2wyfbi53pznkw61xcf6hnch"; + }) + (fetchNuGet { + pname = "Microsoft.EntityFrameworkCore"; + version = "6.0.1"; + sha256 = "0ynspdv0f199ppwcg7hnjv6hp01qyaxfcmh1phy9nwjjxlrkwkjc"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Caching.Abstractions"; + version = "2.2.0"; + sha256 = "0hhxc5dp52faha1bdqw0k426zicsv6x1kfqi30m9agr0b2hixj52"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Caching.Abstractions"; + version = "6.0.0"; + sha256 = "0qn30d3pg4rx1x2k525jj4x5g1fxm2v5m0ksz2dmk1gmqalpask8"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Caching.Memory"; + version = "6.0.0"; + sha256 = "0dq1x7962zsp926rj76i4akk4hsy7r5ldys8r4xsd78rq5f67rhq"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.Abstractions"; + version = "1.1.2"; + sha256 = "0z83kxfzsgqlshg4x1mhdnhlrprrwsgnnibvwk257drzy9079994"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.Abstractions"; + version = "2.0.0"; + sha256 = "1ilz2yrgg9rbjyhn6a5zh9pr51nmh11z7sixb4p7vivgydj9gxwf"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.Abstractions"; + version = "2.1.0"; + sha256 = "03gzlr3z9j1xnr1k6y91zgxpz3pj27i3zsvjwj7i8jqnlqmk7pxd"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.Abstractions"; + version = "3.1.10"; + sha256 = "1pj4n3c015ils13fwky2rfv5q8xza671ixb54vr479pc7an2fah3"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.Abstractions"; + version = "3.1.5"; + sha256 = "03jwqjrfyx11ax19bq84c28qzaiyj4whrx7vayy4hr7sv0p28h8k"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.Abstractions"; + version = "6.0.0"; + sha256 = "0w6wwxv12nbc3sghvr68847wc9skkdgsicrz3fx4chgng1i3xy0j"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.Binder"; + version = "2.0.0"; + sha256 = "1prvdbma6r18n5agbhhabv6g357p1j70gq4m9g0vs859kf44nrgc"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.Binder"; + version = "3.1.10"; + sha256 = "004f9nshm5jg0g4n9f48phjx90pzmj88qbqyiimzgvwl0qkk870q"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.Binder"; + version = "3.1.5"; + sha256 = "0310pvrwbbqak7k4s32syryqxlkwli8w8bwlpnqmz42svh2302wv"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.EnvironmentVariables"; + version = "2.1.0"; + sha256 = "0xx3idb1l5y1da5zynlys5gyarijmw5pc9hgci8xdxbrcv6rzbjb"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.FileExtensions"; + version = "2.1.0"; + sha256 = "1lz2xwm63clbh9dfhmygbqvcp4dsrwh5jihv82dmqd5h7lqngl40"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.Ini"; + version = "2.1.0"; + sha256 = "0bchsljywcq36si4zs2dcx2gj8x98ww93dh2bx2z6x5ilxyjnfip"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration"; + version = "2.0.0"; + sha256 = "0yssxq9di5h6xw2cayp5hj3l9b2p0jw9wcjz73rwk4586spac9s9"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration"; + version = "2.1.0"; + sha256 = "04rjl38wlr1jjjpbzgf64jp0ql6sbzbil0brwq9mgr3hdgwd7vx2"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration"; + version = "3.1.10"; + sha256 = "04xjhi2pmvycx4yam7i3j2l2yjzzbzvxn4i12f00r39j4kkfwqsn"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration"; + version = "3.1.5"; + sha256 = "1i7zm8ghgxwp655anyfm910qm7rcpvrz48fxjyzw9w63hj4sv6bk"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; + version = "2.0.0"; + sha256 = "1pwrfh9b72k9rq6mb2jab5qhhi225d5rjalzkapiayggmygc8nhz"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; + version = "2.1.0"; + sha256 = "0c0cx8r5xkjpxmcfp51959jnp55qjvq28d9vaslk08avvi1by12s"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; + version = "3.1.10"; + sha256 = "0c9p32jd8fi5k02nbp7ilj0jmnl63kq2464acpsb6ajs4837c02q"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; + version = "3.1.5"; + sha256 = "1wkf8ajh4pj6g3wwd18g3hjc3lqqny8052rl373ddcardxrs2gvn"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; + version = "6.0.0"; + sha256 = "1vi67fw7q99gj7jd64gnnfr4d2c0ijpva7g9prps48ja6g91x6a9"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.DependencyInjection"; + version = "2.0.0"; + sha256 = "018izzgykaqcliwarijapgki9kp2c560qv8qsxdjywr7byws5apq"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.DependencyInjection"; + version = "3.1.10"; + sha256 = "0if1g8gj3ngvqf4ddkjhz30p4y2yax8m5vlbrjzgixq80g3apy6d"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.DependencyInjection"; + version = "6.0.0"; + sha256 = "1wlhb2vygzfdjbdzy7waxblmrx0q3pdcqvpapnpmq9fcx5m8r6w1"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.DependencyModel"; + version = "2.0.4"; + sha256 = "041i1vlcibpzgalxxzdk81g5pgmqvmz2g61k0rqa2sky0wpvijx9"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.DependencyModel"; + version = "5.0.0"; + sha256 = "1mma1zxi0b40972cwfvkj9y0w9r7vjbi74784jzcb22pric00k5x"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.DependencyModel"; + version = "6.0.0"; + sha256 = "08c4fh1n8vsish1vh7h73mva34g0as4ph29s4lvps7kmjb4z64nl"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.FileProviders.Abstractions"; + version = "2.0.0"; + sha256 = "0d6y5isjy6jpf4w3f3w89cwh9p40glzhwvm7cwhx05wkqd8bk9w4"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.FileProviders.Abstractions"; + version = "2.1.0"; + sha256 = "1sxls5f5cgb0wr8cwb05skqmz074683hrhmd3hhq6m5dasnzb8n3"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.FileProviders.Physical"; + version = "2.1.0"; + sha256 = "1firpsl5bk219i9gdfgiqw1zm68146h1dzx9hvawfpw9slfaa56w"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.FileSystemGlobbing"; + version = "2.1.0"; + sha256 = "1d2622qp22x1cnlwycnzjbc3sgi9jria26fk78zwzsa08npa3avv"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Hosting.Abstractions"; + version = "2.0.0"; + sha256 = "056wgjcdzvz1qwb26xv6hgxq4xya56qiimhk30v8an8cgsrjk3mc"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Hosting.Abstractions"; + version = "2.1.0"; + sha256 = "04vm9mdjjzg3lpp2rzpgkpn8h5bzdl3bwcr22lshd3kp602ws4k9"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Identity.Core"; + version = "6.0.1"; + sha256 = "1kwn30a024fqi9gpap8g2wifjzij0bcz70lgz7bdz4vy3sp9mn99"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Identity.Stores"; + version = "6.0.1"; + sha256 = "1l2njmcg4fvg6jr9gjvcr7yfj0r0ndwsa8r1dwlaciz3a2x2pfg8"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging.Abstractions"; + version = "1.0.0"; + sha256 = "1sh9bidmhy32gkz6fkli79mxv06546ybrzppfw5v2aq0bda1ghka"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging.Abstractions"; + version = "1.1.2"; + sha256 = "0j9b4z3pf8a5xphx3ksn6jm01rf4z001vfll5kcbxw995xcidjw1"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging.Abstractions"; + version = "2.0.0"; + sha256 = "1x5isi71z02khikzvm7vaschb006pqqrsv86ky1x08a4hir4s43h"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging.Abstractions"; + version = "2.1.0"; + sha256 = "1gvgif1wcx4k6pv7gc00qv1hid945jdywy1s50s33q0hfd91hbnj"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging.Abstractions"; + version = "3.1.10"; + sha256 = "1571q9iznbsmd7p87w420parmpdgi8zfjcs4kynmwv344dwdismz"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging.Abstractions"; + version = "3.1.5"; + sha256 = "0lr22hlf52csrna9ly2lbz3y1agfgdlg7rvsqjg7ik488dhkmhji"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging.Abstractions"; + version = "6.0.0"; + sha256 = "0b75fmins171zi6bfdcq1kcvyrirs8n91mknjnxy4c3ygi1rrnj0"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging.Filter"; + version = "1.1.2"; + sha256 = "1pip87q89376xxpi3r5pf9vxhqxx21qrp179fbldbkr2m1577k9m"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging"; + version = "2.0.0"; + sha256 = "1jkwjcq1ld9znz1haazk8ili2g4pzfdp6i7r7rki4hg3jcadn386"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging"; + version = "3.1.10"; + sha256 = "1lf1hgpk0d5g9mv68f9b2cp6jhpnc4a6bflc1f2mn9x4dvmpv2wi"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging"; + version = "6.0.0"; + sha256 = "0fd9jii3y3irfcwlsiww1y9npjgabzarh33rn566wpcz24lijszi"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Options.ConfigurationExtensions"; + version = "2.0.0"; + sha256 = "1isc3rjbzz60f7wbmgcwslx5d10hm5hisnk7v54vfi2bz7132gll"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Options.ConfigurationExtensions"; + version = "3.1.5"; + sha256 = "10w78fj2jpmghvprz6b046xcr68zzp6x550a7m1iivn0h7a3l7pi"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Options"; + version = "2.0.0"; + sha256 = "0g4zadlg73f507krilhaaa7h0jdga216syrzjlyf5fdk25gxmjqh"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Options"; + version = "3.1.10"; + sha256 = "0kmh12w0y4bf2jnmbbxk10mqnynjqa5qks5pa0zg4vsnfscj8i95"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Options"; + version = "3.1.5"; + sha256 = "0rhqyqa7vhlmz2g0250zhypaayvckx4dv89micdg521cpvr5arpr"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Options"; + version = "6.0.0"; + sha256 = "008pnk2p50i594ahz308v81a41mbjz9mwcarqhmrjpl2d20c868g"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.PlatformAbstractions"; + version = "1.1.0"; + sha256 = "0r4j8v2vvp3kalvb11ny9cvpls3nrvqj0c81rxbkh99ynd2dbscp"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Primitives"; + version = "1.1.1"; + sha256 = "0rcwxz1r89y96s8k3bmg0v6zdqanqfp09khy5l99wnl777y15g7x"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Primitives"; + version = "2.0.0"; + sha256 = "1xppr5jbny04slyjgngxjdm0maxdh47vq481ps944d7jrfs0p3mb"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Primitives"; + version = "2.1.0"; + sha256 = "1r9gzwdfmb8ysnc4nzmyz5cyar1lw0qmizsvrsh252nhlyg06nmb"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Primitives"; + version = "2.2.0"; + sha256 = "0znah6arbcqari49ymigg3wiy2hgdifz8zsq8vdc3ynnf45r7h0c"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Primitives"; + version = "3.1.10"; + sha256 = "0a3f35427hpai0wq1wlqpn4m5aacfddkq25hp71nwlz5zm1dqfmk"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Primitives"; + version = "3.1.5"; + sha256 = "0n2pk1sy8ikd29282sx4ps9r1wnhzgg4nwmkka9ypjizd8lkkk2m"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Primitives"; + version = "6.0.0"; + sha256 = "1kjiw6s4yfz9gm7mx3wkhp06ghnbs95icj9hi505shz9rjrg42q2"; + }) + (fetchNuGet { + pname = "Microsoft.IdentityModel.JsonWebTokens"; + version = "6.6.0"; + sha256 = "06z5a1jpqpdd1pix85is7kkpn4v0l4an909skji2p8gm09p5sfyv"; + }) + (fetchNuGet { + pname = "Microsoft.IdentityModel.Logging"; + version = "6.6.0"; + sha256 = "1mpkx544cbxws1a22zwxbp3lqqamcc3x915l23spsxqvgr02jjrq"; + }) + (fetchNuGet { + pname = "Microsoft.IdentityModel.Tokens"; + version = "6.6.0"; + sha256 = "0h5vbsd5x9cf7nqyrwn7d7y1axhf1zz0jr9prvi4xpxawa3kajyj"; + }) + (fetchNuGet { + pname = "Microsoft.NET.Test.Sdk"; + version = "17.0.0"; + sha256 = "0bknyf5kig5icwjxls7pcn51x2b2qf91dz9qv67fl70v6cczaz2r"; + }) + (fetchNuGet { + pname = "Microsoft.NetCore.Analyzers"; + version = "3.3.2"; + sha256 = "1h1bjiiw64qncs61p2idwxswv4kzq06bbl2rlghiagv6sbjk4pnq"; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Platforms"; + version = "1.0.1"; + sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr"; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Platforms"; + version = "1.1.0"; + sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Platforms"; + version = "2.0.0"; + sha256 = "1fk2fk2639i7nzy58m9dvpdnzql4vb8yl8vr19r2fp8lmj9w2jr0"; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Platforms"; + version = "2.1.2"; + sha256 = "1507hnpr9my3z4w1r6xk5n0s1j3y6a2c2cnynj76za7cphxi1141"; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Targets"; + version = "1.0.1"; + sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p"; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Targets"; + version = "1.1.0"; + sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; + }) + (fetchNuGet { + pname = "Microsoft.TestPlatform.ObjectModel"; + version = "17.0.0"; + sha256 = "1bh5scbvl6ndldqv20sl34h4y257irm9ziv2wyfc3hka6912fhn7"; + }) + (fetchNuGet { + pname = "Microsoft.TestPlatform.TestHost"; + version = "17.0.0"; + sha256 = "06mn31cgpp7d8lwdyjanh89prc66j37dchn74vrd9s588rq0y70r"; + }) + (fetchNuGet { + pname = "Microsoft.Win32.Primitives"; + version = "4.0.1"; + sha256 = "1n8ap0cmljbqskxpf8fjzn7kh1vvlndsa75k01qig26mbw97k2q7"; + }) + (fetchNuGet { + pname = "Microsoft.Win32.Primitives"; + version = "4.3.0"; + sha256 = "0j0c1wj4ndj21zsgivsc24whiya605603kxrbiw6wkfdync464wq"; + }) + (fetchNuGet { + pname = "MimeKit"; + version = "3.0.0"; + sha256 = "1ccds2g2cr3xficahq5i3i049nlzv2075x8yc24kwz3v1wyw458s"; + }) + (fetchNuGet { + pname = "MySqlConnector"; + version = "2.0.0"; + sha256 = "0l0r4wr1h176w6hcsfjp5kx05fpzhhgzxcmirv8zfyk899vfgqkz"; + }) + (fetchNuGet { + pname = "NBitcoin.Altcoins"; + version = "3.0.8"; + sha256 = "1qck2nfj8494pxwzhccslq4cbypsgnwcv3nvz24czsd87wn8n618"; + }) + (fetchNuGet { + pname = "NBitcoin"; + version = "5.0.40"; + sha256 = "1rqzn84yaww4afagwg8jg1l5qdkvqyjdfcyd5widddqwxabbsjvh"; + }) + (fetchNuGet { + pname = "NBitcoin"; + version = "6.0.15"; + sha256 = "038dcl2k88w4cijws3pdnjflgy4lmqx70z0l7yqz355kmxjz8ain"; + }) + (fetchNuGet { + pname = "NBitcoin"; + version = "6.0.3"; + sha256 = "1kfq1q86844ssp8myy5vmvg33h3x0p9gqrlc99fl9gm1vzjc723f"; + }) + (fetchNuGet { + pname = "NBitcoin"; + version = "6.0.8"; + sha256 = "1f90zyrd35fzx0vgvd83jhd6hczd4037h2k198xiyxj04l4m3wm5"; + }) + (fetchNuGet { + pname = "NBitcoin"; + version = "7.0.1"; + sha256 = "05kqpjyp3ckb2183g9vfsdv362y5xg5j21p36zls0x3b0jgrwxw7"; + }) + (fetchNuGet { + pname = "NBitpayClient"; + version = "1.0.0.39"; + sha256 = "1sgwradg7jnb4n3chwqfkximj1qhgl3r23p0sifmaa0kql2hlira"; + }) + (fetchNuGet { + pname = "NBXplorer.Client"; + version = "4.1.3"; + sha256 = "1nh4jj7yg81825hr7cc99qlnfmdm6jibap81qqi8a968b61z4251"; + }) + (fetchNuGet { + pname = "NETStandard.Library"; + version = "1.6.1"; + sha256 = "1z70wvsx2d847a2cjfii7b83pjfs34q05gb037fdjikv5kbagml8"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json.Bson"; + version = "1.0.1"; + sha256 = "1r1hvj5gjl466bya2bfl5aaj8rbwyf5x1msg710wf3k2llbci1xa"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json.Bson"; + version = "1.0.2"; + sha256 = "0c27bhy9x3c2n26inq32kmp6drpm71n6mqnmcr19wrlcaihglj35"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json.Schema"; + version = "3.0.14"; + sha256 = "1njk1arrf8pbx0i0p3yww459i70p0fcx02vs0jnbb6znvcy4mvh6"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json"; + version = "10.0.3"; + sha256 = "06vy67bkshclpz69kps4vgzc9h2cgg41c8vlqmdbwclfky7c4haq"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json"; + version = "11.0.2"; + sha256 = "1784xi44f4k8v1fr696hsccmwpy94bz7kixxqlri98zhcxn406b2"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json"; + version = "12.0.3"; + sha256 = "17dzl305d835mzign8r15vkmav2hq8l6g7942dfjpnzr17wwl89x"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json"; + version = "13.0.1"; + sha256 = "0fijg0w6iwap8gvzyjnndds0q4b8anwxxvik7y8vgq97dram4srb"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json"; + version = "9.0.1"; + sha256 = "0mcy0i7pnfpqm4pcaiyzzji4g0c8i3a5gjz28rrr28110np8304r"; + }) + (fetchNuGet { + pname = "NicolasDorier.CommandLine.Configuration"; + version = "1.0.0.3"; + sha256 = "0al0pd4zhjpmn8m208xjmy17cbyab68grzdvzr2lhsckwkl6b1jg"; + }) + (fetchNuGet { + pname = "NicolasDorier.CommandLine"; + version = "1.0.0.2"; + sha256 = "08a9l18zkhcfa6f56xqylzvmqjzgxsmgkpm2r3ckvxfyml6w0qyy"; + }) + (fetchNuGet { + pname = "NicolasDorier.RateLimits"; + version = "1.1.0"; + sha256 = "06cajxi8wnrxfwqfnk98avphwiyvg1fw428bd42lqjgq9k414rk9"; + }) + (fetchNuGet { + pname = "NicolasDorier.StandardConfiguration"; + version = "1.0.0.18"; + sha256 = "0lgssxafv6cqlw21fb79fm0fcln0clgsk6zadcwrnjv9vampfw7b"; + }) + (fetchNuGet { + pname = "NLog"; + version = "4.5.10"; + sha256 = "0d4yqxrhqn2k36h3v1f5pn6qqlagbzg67v6gvxqhz3s4zyc3b8rg"; + }) + (fetchNuGet { + pname = "Npgsql.EntityFrameworkCore.PostgreSQL"; + version = "6.0.1"; + sha256 = "108sc62dqdb6ym2ck651kamcv6qf93cmaqzygfblmiglwzi6frnx"; + }) + (fetchNuGet { + pname = "Npgsql"; + version = "6.0.1"; + sha256 = "150paiwqxp6zsy5v7vl2a9h3ikzfv3pd04whxifmamq0h1ghw0ld"; + }) + (fetchNuGet { + pname = "NSec.Cryptography"; + version = "20.2.0"; + sha256 = "19slji51v8s8i4836nqqg7qb3i3p4ahqahz0fbb3gwpp67pn6izx"; + }) + (fetchNuGet { + pname = "NuGet.Frameworks"; + version = "5.0.0"; + sha256 = "18ijvmj13cwjdrrm52c8fpq021531zaz4mj4b4zapxaqzzxf2qjr"; + }) + (fetchNuGet { + pname = "NUglify"; + version = "1.5.12"; + sha256 = "0f4gs31z8dwfvd246nrv3m0qkxzav37hxynx2maykza017khynyf"; + }) + (fetchNuGet { + pname = "PeterO.Cbor"; + version = "4.1.3"; + sha256 = "0882i3bhhx2yag2m4lbdsgngjwaj9ff4v0ab9zb839i4r77aq1yn"; + }) + (fetchNuGet { + pname = "PeterO.Numbers"; + version = "1.6.0"; + sha256 = "04kfdkfr600h69g67g6izbn57bxqjamvaadyw3p9gjsc0wrivi98"; + }) + (fetchNuGet { + pname = "PeterO.URIUtility"; + version = "1.0.0"; + sha256 = "04ihfbk2lf0smznwfb62h57qknls5jyxirdz72g5wn9h1dcgkdac"; + }) + (fetchNuGet { + pname = "Pomelo.EntityFrameworkCore.MySql"; + version = "6.0.0"; + sha256 = "0qvm5rh9kv8znsp8wbss81w5a2afh0dl13pwkc824j7ywklz0gzz"; + }) + (fetchNuGet { + pname = "Portable.BouncyCastle"; + version = "1.9.0"; + sha256 = "0kphjwz4hk2nki3b4f9z096xzd520nrpvi3cjib8fkjk6zhwrr8q"; + }) + (fetchNuGet { + pname = "QRCoder"; + version = "1.4.3"; + sha256 = "1hmlqbdyq5n9bsmns5h0dwcxpd2jvqr9a2y6dyc9kbjmc8j1dpla"; + }) + (fetchNuGet { + pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; + }) + (fetchNuGet { + pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; + }) + (fetchNuGet { + pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; + }) + (fetchNuGet { + pname = "runtime.native.System.IO.Compression"; + version = "4.3.0"; + sha256 = "1vvivbqsk6y4hzcid27pqpm5bsi6sc50hvqwbcx8aap5ifrxfs8d"; + }) + (fetchNuGet { + pname = "runtime.native.System.Net.Http"; + version = "4.3.0"; + sha256 = "1n6rgz5132lcibbch1qlf0g9jk60r0kqv087hxc0lisy50zpm7kk"; + }) + (fetchNuGet { + pname = "runtime.native.System.Net.Security"; + version = "4.3.0"; + sha256 = "0dnqjhw445ay3chpia9p6vy4w2j6s9vy3hxszqvdanpvvyaxijr3"; + }) + (fetchNuGet { + pname = "runtime.native.System.Security.Cryptography.Apple"; + version = "4.3.0"; + sha256 = "1b61p6gw1m02cc1ry996fl49liiwky6181dzr873g9ds92zl326q"; + }) + (fetchNuGet { + pname = "runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; + }) + (fetchNuGet { + pname = "runtime.native.System.Security.Cryptography"; + version = "4.0.0"; + sha256 = "0k57aa2c3b10wl3hfqbgrl7xq7g8hh3a3ir44b31dn5p61iiw3z9"; + }) + (fetchNuGet { + pname = "runtime.native.System"; + version = "4.0.0"; + sha256 = "1ppk69xk59ggacj9n7g6fyxvzmk1g5p4fkijm0d7xqfkig98qrkf"; + }) + (fetchNuGet { + pname = "runtime.native.System"; + version = "4.3.0"; + sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; + }) + (fetchNuGet { + pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; + }) + (fetchNuGet { + pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; + }) + (fetchNuGet { + pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple"; + version = "4.3.0"; + sha256 = "10yc8jdrwgcl44b4g93f1ds76b176bajd3zqi2faf5rvh1vy9smi"; + }) + (fetchNuGet { + pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; + }) + (fetchNuGet { + pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; + }) + (fetchNuGet { + pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; + }) + (fetchNuGet { + pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; + }) + (fetchNuGet { + pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; + }) + (fetchNuGet { + pname = "Selenium.Support"; + version = "3.141.0"; + sha256 = "1gqwzbfq7i9jz830b0jibsis0qfxs8sl10n1nja02c6s637cwzib"; + }) + (fetchNuGet { + pname = "Selenium.WebDriver.ChromeDriver"; + version = "98.0.4758.10200"; + sha256 = "10mc50gm78zbxrwvxlygzmj2a29liiacv8haax0534c26vj9dwkl"; + }) + (fetchNuGet { + pname = "Selenium.WebDriver"; + version = "3.141.0"; + sha256 = "09g0zhz6n7yhxmxlrpzjdykfavr3m4z1gb4cmq304dw0gr8s89mq"; + }) + (fetchNuGet { + pname = "Serilog.AspNetCore"; + version = "3.2.0"; + sha256 = "14d1lsw1djsshlkxbn5lkmdvj4372hnddb6788m6ix0mv4mhj3bj"; + }) + (fetchNuGet { + pname = "Serilog.Extensions.Hosting"; + version = "3.0.0"; + sha256 = "1r01lsy4rp0wj7ffbjcf9dcg3aipdhy7066yjicja45m0z2y42w6"; + }) + (fetchNuGet { + pname = "Serilog.Extensions.Logging"; + version = "3.0.1"; + sha256 = "069qy7dm5nxb372ij112ppa6m99b4iaimj3sji74m659fwrcrl9a"; + }) + (fetchNuGet { + pname = "Serilog.Formatting.Compact"; + version = "1.0.0"; + sha256 = "0mi1yzzj33v4nkyspyshhc6nn2mx3y07z5dvv26hl7hw6kb6yazw"; + }) + (fetchNuGet { + pname = "Serilog.Settings.Configuration"; + version = "3.1.0"; + sha256 = "1cj5am4n073331gbfm2ylqb9cadl4q3ppzgwmm5c8m1drxpiwkb5"; + }) + (fetchNuGet { + pname = "Serilog.Sinks.Console"; + version = "3.1.1"; + sha256 = "0j99as641y1k6havwwkhyr0n08vibiblmfjj6nz051mz8g3864fn"; + }) + (fetchNuGet { + pname = "Serilog.Sinks.Debug"; + version = "1.0.1"; + sha256 = "0969mb254kr59bgkq01ybyzca89z3f4n9ng5mdj8m53d5653zf22"; + }) + (fetchNuGet { + pname = "Serilog.Sinks.File"; + version = "4.1.0"; + sha256 = "1ry7p9hf1zlnai1j5zjhjp4dqm2agsbpq6cvxgpf5l8m26x6mgca"; + }) + (fetchNuGet { + pname = "Serilog"; + version = "2.9.0"; + sha256 = "0z0ib82w9b229a728bbyhzc2hnlbl0ki7nnvmgnv3l741f2vr4i6"; + }) + (fetchNuGet { + pname = "SQLitePCLRaw.bundle_e_sqlite3"; + version = "2.0.6"; + sha256 = "1ip0a653dx5cqybxg27zyz5ps31f2yz50g3jvz3vx39isx79gax3"; + }) + (fetchNuGet { + pname = "SQLitePCLRaw.core"; + version = "2.0.6"; + sha256 = "1w4iyg0v1v1z2m7akq7rv8lsgixp2m08732vr14vgpqs918bsy1i"; + }) + (fetchNuGet { + pname = "SQLitePCLRaw.lib.e_sqlite3"; + version = "2.0.6"; + sha256 = "16378rh1lcqxynf5qj0kh8mrsb0jp37qqwg4285kqc5pknvh1bx3"; + }) + (fetchNuGet { + pname = "SQLitePCLRaw.provider.e_sqlite3"; + version = "2.0.6"; + sha256 = "0chgrqyycb1kqnaxnhhfg0850b94blhzni8zn79c7ggb3pd2ykyz"; + }) + (fetchNuGet { + pname = "SSH.NET"; + version = "2016.1.0"; + sha256 = "0q08bf9sdf1rf9763z4bk2mr6z381iybm73823scmq9qcpr2jk4d"; + }) + (fetchNuGet { + pname = "SshNet.Security.Cryptography"; + version = "1.2.0"; + sha256 = "1xlj8bjavpjk6lrkypk66cxpf2xa31wv73ymrk34d72f05z0xrg0"; + }) + (fetchNuGet { + pname = "System.AppContext"; + version = "4.1.0"; + sha256 = "0fv3cma1jp4vgj7a8hqc9n7hr1f1kjp541s6z0q1r6nazb4iz9mz"; + }) + (fetchNuGet { + pname = "System.AppContext"; + version = "4.3.0"; + sha256 = "1649qvy3dar900z3g817h17nl8jp4ka5vcfmsr05kh0fshn7j3ya"; + }) + (fetchNuGet { + pname = "System.Buffers"; + version = "4.3.0"; + sha256 = "0fgns20ispwrfqll4q1zc1waqcmylb3zc50ys9x8zlwxh9pmd9jy"; + }) + (fetchNuGet { + pname = "System.Buffers"; + version = "4.5.1"; + sha256 = "04kb1mdrlcixj9zh1xdi5as0k0qi8byr5mi3p3jcxx72qz93s2y3"; + }) + (fetchNuGet { + pname = "System.Collections.Concurrent"; + version = "4.0.12"; + sha256 = "07y08kvrzpak873pmyxs129g1ch8l27zmg51pcyj2jvq03n0r0fc"; + }) + (fetchNuGet { + pname = "System.Collections.Concurrent"; + version = "4.3.0"; + sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8"; + }) + (fetchNuGet { + pname = "System.Collections.Immutable"; + version = "5.0.0"; + sha256 = "1kvcllagxz2q92g81zkz81djkn2lid25ayjfgjalncyc68i15p0r"; + }) + (fetchNuGet { + pname = "System.Collections.Immutable"; + version = "6.0.0"; + sha256 = "1js98kmjn47ivcvkjqdmyipzknb9xbndssczm8gq224pbaj1p88c"; + }) + (fetchNuGet { + pname = "System.Collections.NonGeneric"; + version = "4.3.0"; + sha256 = "07q3k0hf3mrcjzwj8fwk6gv3n51cb513w4mgkfxzm3i37sc9kz7k"; + }) + (fetchNuGet { + pname = "System.Collections.Specialized"; + version = "4.3.0"; + sha256 = "1sdwkma4f6j85m3dpb53v9vcgd0zyc9jb33f8g63byvijcj39n20"; + }) + (fetchNuGet { + pname = "System.Collections"; + version = "4.0.11"; + sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6"; + }) + (fetchNuGet { + pname = "System.Collections"; + version = "4.3.0"; + sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; + }) + (fetchNuGet { + pname = "System.ComponentModel.Primitives"; + version = "4.3.0"; + sha256 = "1svfmcmgs0w0z9xdw2f2ps05rdxmkxxhf0l17xk9l1l8xfahkqr0"; + }) + (fetchNuGet { + pname = "System.ComponentModel.TypeConverter"; + version = "4.3.0"; + sha256 = "17ng0p7v3nbrg3kycz10aqrrlw4lz9hzhws09pfh8gkwicyy481x"; + }) + (fetchNuGet { + pname = "System.ComponentModel"; + version = "4.3.0"; + sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb"; + }) + (fetchNuGet { + pname = "System.Configuration.ConfigurationManager"; + version = "4.5.0"; + sha256 = "1frpy24mn6q7hgwayj98kkx89z861f5dmia4j6zc0a2ydgx8x02c"; + }) + (fetchNuGet { + pname = "System.Console"; + version = "4.3.0"; + sha256 = "1flr7a9x920mr5cjsqmsy9wgnv3lvd0h1g521pdr1lkb2qycy7ay"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Debug"; + version = "4.0.11"; + sha256 = "0gmjghrqmlgzxivd2xl50ncbglb7ljzb66rlx8ws6dv8jm0d5siz"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Debug"; + version = "4.3.0"; + sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; + }) + (fetchNuGet { + pname = "System.Diagnostics.DiagnosticSource"; + version = "4.3.0"; + sha256 = "0z6m3pbiy0qw6rn3n209rrzf9x1k4002zh90vwcrsym09ipm2liq"; + }) + (fetchNuGet { + pname = "System.Diagnostics.DiagnosticSource"; + version = "6.0.0"; + sha256 = "0rrihs9lnb1h6x4h0hn6kgfnh58qq7hx8qq99gh6fayx4dcnx3s5"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Tools"; + version = "4.0.1"; + sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Tools"; + version = "4.3.0"; + sha256 = "0in3pic3s2ddyibi8cvgl102zmvp9r9mchh82ns9f0ms4basylw1"; + }) + (fetchNuGet { + pname = "System.Diagnostics.TraceSource"; + version = "4.0.0"; + sha256 = "1mc7r72xznczzf6mz62dm8xhdi14if1h8qgx353xvhz89qyxsa3h"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Tracing"; + version = "4.1.0"; + sha256 = "1d2r76v1x610x61ahfpigda89gd13qydz6vbwzhpqlyvq8jj6394"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Tracing"; + version = "4.3.0"; + sha256 = "1m3bx6c2s958qligl67q7grkwfz3w53hpy7nc97mh6f7j5k168c4"; + }) + (fetchNuGet { + pname = "System.Dynamic.Runtime"; + version = "4.0.11"; + sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9"; + }) + (fetchNuGet { + pname = "System.Dynamic.Runtime"; + version = "4.3.0"; + sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk"; + }) + (fetchNuGet { + pname = "System.Formats.Asn1"; + version = "5.0.0"; + sha256 = "1axc8z0839yvqi2cb63l73l6d9j6wd20lsbdymwddz9hvrsgfwpn"; + }) + (fetchNuGet { + pname = "System.Globalization.Calendars"; + version = "4.3.0"; + sha256 = "1xwl230bkakzzkrggy1l1lxmm3xlhk4bq2pkv790j5lm8g887lxq"; + }) + (fetchNuGet { + pname = "System.Globalization.Extensions"; + version = "4.3.0"; + sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls"; + }) + (fetchNuGet { + pname = "System.Globalization"; + version = "4.0.11"; + sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d"; + }) + (fetchNuGet { + pname = "System.Globalization"; + version = "4.3.0"; + sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; + }) + (fetchNuGet { + pname = "System.IdentityModel.Tokens.Jwt"; + version = "6.6.0"; + sha256 = "17i6a43g1fksq9xy77dgsz54klz71pz062pb58lqx8h06p1818h1"; + }) + (fetchNuGet { + pname = "System.Interactive.Async"; + version = "3.1.1"; + sha256 = "03iq20gq0n2b2sdzs5jhxf46nzkfgvzip6q5248vka2rcvn1yanh"; + }) + (fetchNuGet { + pname = "System.IO.Compression.ZipFile"; + version = "4.3.0"; + sha256 = "1yxy5pq4dnsm9hlkg9ysh5f6bf3fahqqb6p8668ndy5c0lk7w2ar"; + }) + (fetchNuGet { + pname = "System.IO.Compression"; + version = "4.3.0"; + sha256 = "084zc82yi6yllgda0zkgl2ys48sypiswbiwrv7irb3r0ai1fp4vz"; + }) + (fetchNuGet { + pname = "System.IO.FileSystem.Primitives"; + version = "4.0.1"; + sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612"; + }) + (fetchNuGet { + pname = "System.IO.FileSystem.Primitives"; + version = "4.3.0"; + sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c"; + }) + (fetchNuGet { + pname = "System.IO.FileSystem"; + version = "4.0.1"; + sha256 = "0kgfpw6w4djqra3w5crrg8xivbanh1w9dh3qapb28q060wb9flp1"; + }) + (fetchNuGet { + pname = "System.IO.FileSystem"; + version = "4.3.0"; + sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw"; + }) + (fetchNuGet { + pname = "System.IO.Pipelines"; + version = "6.0.1"; + sha256 = "0b6zvhhfdxx0wx3bzyvxbq0mk8l5lbjak5124sn0gkif5jb388w4"; + }) + (fetchNuGet { + pname = "System.IO"; + version = "4.1.0"; + sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp"; + }) + (fetchNuGet { + pname = "System.IO"; + version = "4.3.0"; + sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; + }) + (fetchNuGet { + pname = "System.Linq.Expressions"; + version = "4.1.0"; + sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg"; + }) + (fetchNuGet { + pname = "System.Linq.Expressions"; + version = "4.3.0"; + sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv"; + }) + (fetchNuGet { + pname = "System.Linq"; + version = "4.1.0"; + sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5"; + }) + (fetchNuGet { + pname = "System.Linq"; + version = "4.3.0"; + sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; + }) + (fetchNuGet { + pname = "System.Memory"; + version = "4.5.0"; + sha256 = "1layqpcx1q4l805fdnj2dfqp6ncx2z42ca06rgsr6ikq4jjgbv30"; + }) + (fetchNuGet { + pname = "System.Memory"; + version = "4.5.1"; + sha256 = "0f07d7hny38lq9w69wx4lxkn4wszrqf9m9js6fh9is645csm167c"; + }) + (fetchNuGet { + pname = "System.Memory"; + version = "4.5.3"; + sha256 = "0naqahm3wljxb5a911d37mwjqjdxv9l0b49p5dmfyijvni2ppy8a"; + }) + (fetchNuGet { + pname = "System.Memory"; + version = "4.5.4"; + sha256 = "14gbbs22mcxwggn0fcfs1b062521azb9fbb7c113x0mq6dzq9h6y"; + }) + (fetchNuGet { + pname = "System.Net.Http"; + version = "4.3.0"; + sha256 = "1i4gc757xqrzflbk7kc5ksn20kwwfjhw9w7pgdkn19y3cgnl302j"; + }) + (fetchNuGet { + pname = "System.Net.NameResolution"; + version = "4.0.0"; + sha256 = "0dj3pvpv069nyia28gkl4a0fb7q33hbxz2dg25qvpah3l7pbl0qh"; + }) + (fetchNuGet { + pname = "System.Net.NameResolution"; + version = "4.3.0"; + sha256 = "15r75pwc0rm3vvwsn8rvm2krf929mjfwliv0mpicjnii24470rkq"; + }) + (fetchNuGet { + pname = "System.Net.Primitives"; + version = "4.0.11"; + sha256 = "10xzzaynkzkakp7jai1ik3r805zrqjxiz7vcagchyxs2v26a516r"; + }) + (fetchNuGet { + pname = "System.Net.Primitives"; + version = "4.3.0"; + sha256 = "0c87k50rmdgmxx7df2khd9qj7q35j9rzdmm2572cc55dygmdk3ii"; + }) + (fetchNuGet { + pname = "System.Net.Security"; + version = "4.3.0"; + sha256 = "1aa5igz31ivk6kpgsrwck3jccab7wd88wr52lddmgypmbh9mmf87"; + }) + (fetchNuGet { + pname = "System.Net.Sockets"; + version = "4.1.0"; + sha256 = "1385fvh8h29da5hh58jm1v78fzi9fi5vj93vhlm2kvqpfahvpqls"; + }) + (fetchNuGet { + pname = "System.Net.Sockets"; + version = "4.3.0"; + sha256 = "1ssa65k6chcgi6mfmzrznvqaxk8jp0gvl77xhf1hbzakjnpxspla"; + }) + (fetchNuGet { + pname = "System.Net.WebHeaderCollection"; + version = "4.3.0"; + sha256 = "0ms3ddjv1wn8sqa5qchm245f3vzzif6l6fx5k92klqpn7zf4z562"; + }) + (fetchNuGet { + pname = "System.Net.WebSockets.Client"; + version = "4.3.2"; + sha256 = "103y8lfsfa5xd1sqmq9sml4qyp4rij2i3fnnw119h119hb04l0rk"; + }) + (fetchNuGet { + pname = "System.Net.WebSockets"; + version = "4.3.0"; + sha256 = "1gfj800078kggcgl0xyl00a6y5k4wwh2k2qm69rjy22wbmq7fy4p"; + }) + (fetchNuGet { + pname = "System.ObjectModel"; + version = "4.0.12"; + sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj"; + }) + (fetchNuGet { + pname = "System.ObjectModel"; + version = "4.3.0"; + sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2"; + }) + (fetchNuGet { + pname = "System.Reflection.Emit.ILGeneration"; + version = "4.0.1"; + sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0"; + }) + (fetchNuGet { + pname = "System.Reflection.Emit.ILGeneration"; + version = "4.3.0"; + sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"; + }) + (fetchNuGet { + pname = "System.Reflection.Emit.Lightweight"; + version = "4.0.1"; + sha256 = "1s4b043zdbx9k39lfhvsk68msv1nxbidhkq6nbm27q7sf8xcsnxr"; + }) + (fetchNuGet { + pname = "System.Reflection.Emit.Lightweight"; + version = "4.3.0"; + sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c"; + }) + (fetchNuGet { + pname = "System.Reflection.Emit"; + version = "4.0.1"; + sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp"; + }) + (fetchNuGet { + pname = "System.Reflection.Emit"; + version = "4.3.0"; + sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"; + }) + (fetchNuGet { + pname = "System.Reflection.Extensions"; + version = "4.0.1"; + sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn"; + }) + (fetchNuGet { + pname = "System.Reflection.Extensions"; + version = "4.3.0"; + sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq"; + }) + (fetchNuGet { + pname = "System.Reflection.Metadata"; + version = "1.6.0"; + sha256 = "1wdbavrrkajy7qbdblpbpbalbdl48q3h34cchz24gvdgyrlf15r4"; + }) + (fetchNuGet { + pname = "System.Reflection.Metadata"; + version = "5.0.0"; + sha256 = "17qsl5nanlqk9iz0l5wijdn6ka632fs1m1fvx18dfgswm258r3ss"; + }) + (fetchNuGet { + pname = "System.Reflection.Primitives"; + version = "4.0.1"; + sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28"; + }) + (fetchNuGet { + pname = "System.Reflection.Primitives"; + version = "4.3.0"; + sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; + }) + (fetchNuGet { + pname = "System.Reflection.TypeExtensions"; + version = "4.1.0"; + sha256 = "1bjli8a7sc7jlxqgcagl9nh8axzfl11f4ld3rjqsyxc516iijij7"; + }) + (fetchNuGet { + pname = "System.Reflection.TypeExtensions"; + version = "4.3.0"; + sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; + }) + (fetchNuGet { + pname = "System.Reflection"; + version = "4.1.0"; + sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9"; + }) + (fetchNuGet { + pname = "System.Reflection"; + version = "4.3.0"; + sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; + }) + (fetchNuGet { + pname = "System.Resources.ResourceManager"; + version = "4.0.1"; + sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi"; + }) + (fetchNuGet { + pname = "System.Resources.ResourceManager"; + version = "4.3.0"; + sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; + }) + (fetchNuGet { + pname = "System.Runtime.CompilerServices.Unsafe"; + version = "4.3.0"; + sha256 = "149xcsa1pphlrc2zfmca9n822g4mxk7s2a44phvf34r0fajm3hk8"; + }) + (fetchNuGet { + pname = "System.Runtime.CompilerServices.Unsafe"; + version = "4.4.0"; + sha256 = "0a6ahgi5b148sl5qyfpyw383p3cb4yrkm802k29fsi4mxkiwir29"; + }) + (fetchNuGet { + pname = "System.Runtime.CompilerServices.Unsafe"; + version = "4.5.0"; + sha256 = "17labczwqk3jng3kkky73m0jhi8wc21vbl7cz5c0hj2p1dswin43"; + }) + (fetchNuGet { + pname = "System.Runtime.CompilerServices.Unsafe"; + version = "4.5.1"; + sha256 = "1xcrjx5fwg284qdnxyi2d0lzdm5q4frlpkp0nf6vvkx1kdz2prrf"; + }) + (fetchNuGet { + pname = "System.Runtime.CompilerServices.Unsafe"; + version = "4.7.0"; + sha256 = "16r6sn4czfjk8qhnz7bnqlyiaaszr0ihinb7mq9zzr1wba257r54"; + }) + (fetchNuGet { + pname = "System.Runtime.CompilerServices.Unsafe"; + version = "5.0.0"; + sha256 = "02k25ivn50dmqx5jn8hawwmz24yf0454fjd823qk6lygj9513q4x"; + }) + (fetchNuGet { + pname = "System.Runtime.CompilerServices.Unsafe"; + version = "6.0.0"; + sha256 = "0qm741kh4rh57wky16sq4m0v05fxmkjjr87krycf5vp9f0zbahbc"; + }) + (fetchNuGet { + pname = "System.Runtime.Extensions"; + version = "4.1.0"; + sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z"; + }) + (fetchNuGet { + pname = "System.Runtime.Extensions"; + version = "4.3.0"; + sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; + }) + (fetchNuGet { + pname = "System.Runtime.Handles"; + version = "4.0.1"; + sha256 = "1g0zrdi5508v49pfm3iii2hn6nm00bgvfpjq1zxknfjrxxa20r4g"; + }) + (fetchNuGet { + pname = "System.Runtime.Handles"; + version = "4.3.0"; + sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; + }) + (fetchNuGet { + pname = "System.Runtime.InteropServices.RuntimeInformation"; + version = "4.0.0"; + sha256 = "0glmvarf3jz5xh22iy3w9v3wyragcm4hfdr17v90vs7vcrm7fgp6"; + }) + (fetchNuGet { + pname = "System.Runtime.InteropServices.RuntimeInformation"; + version = "4.3.0"; + sha256 = "0q18r1sh4vn7bvqgd6dmqlw5v28flbpj349mkdish2vjyvmnb2ii"; + }) + (fetchNuGet { + pname = "System.Runtime.InteropServices"; + version = "4.1.0"; + sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1"; + }) + (fetchNuGet { + pname = "System.Runtime.InteropServices"; + version = "4.3.0"; + sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; + }) + (fetchNuGet { + pname = "System.Runtime.Numerics"; + version = "4.0.1"; + sha256 = "1y308zfvy0l5nrn46mqqr4wb4z1xk758pkk8svbz8b5ij7jnv4nn"; + }) + (fetchNuGet { + pname = "System.Runtime.Numerics"; + version = "4.3.0"; + sha256 = "19rav39sr5dky7afygh309qamqqmi9kcwvz3i0c5700v0c5cg61z"; + }) + (fetchNuGet { + pname = "System.Runtime.Serialization.Formatters"; + version = "4.3.0"; + sha256 = "114j35n8gcvn3sqv9ar36r1jjq0y1yws9r0yk8i6wm4aq7n9rs0m"; + }) + (fetchNuGet { + pname = "System.Runtime.Serialization.Primitives"; + version = "4.1.1"; + sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k"; + }) + (fetchNuGet { + pname = "System.Runtime.Serialization.Primitives"; + version = "4.3.0"; + sha256 = "01vv2p8h4hsz217xxs0rixvb7f2xzbh6wv1gzbfykcbfrza6dvnf"; + }) + (fetchNuGet { + pname = "System.Runtime"; + version = "4.1.0"; + sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m"; + }) + (fetchNuGet { + pname = "System.Runtime"; + version = "4.3.0"; + sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; + }) + (fetchNuGet { + pname = "System.Security.AccessControl"; + version = "4.5.0"; + sha256 = "1wvwanz33fzzbnd2jalar0p0z3x0ba53vzx1kazlskp7pwyhlnq0"; + }) + (fetchNuGet { + pname = "System.Security.Claims"; + version = "4.0.1"; + sha256 = "03dw0ls49bvsrffgwycyifjgz0qzr9r85skqhdyhfd51fqf398n6"; + }) + (fetchNuGet { + pname = "System.Security.Claims"; + version = "4.3.0"; + sha256 = "0jvfn7j22l3mm28qjy3rcw287y9h65ha4m940waaxah07jnbzrhn"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Algorithms"; + version = "4.2.0"; + sha256 = "148s9g5dgm33ri7dnh19s4lgnlxbpwvrw2jnzllq2kijj4i4vs85"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Algorithms"; + version = "4.3.0"; + sha256 = "03sq183pfl5kp7gkvq77myv7kbpdnq3y0xj7vi4q1kaw54sny0ml"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Cng"; + version = "4.3.0"; + sha256 = "1k468aswafdgf56ab6yrn7649kfqx2wm9aslywjam1hdmk5yypmv"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Cng"; + version = "4.7.0"; + sha256 = "00797sqbba8lys486ifxblz9j52m29kidclvmqpk531820k55x9j"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Cng"; + version = "5.0.0"; + sha256 = "06hkx2za8jifpslkh491dfwzm5dxrsyxzj5lsc0achb6yzg4zqlw"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Csp"; + version = "4.3.0"; + sha256 = "1x5wcrddf2s3hb8j78cry7yalca4lb5vfnkrysagbn6r9x6xvrx1"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Encoding"; + version = "4.0.0"; + sha256 = "0a8y1a5wkmpawc787gfmnrnbzdgxmx1a14ax43jf3rj9gxmy3vk4"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Encoding"; + version = "4.3.0"; + sha256 = "1jr6w70igqn07k5zs1ph6xja97hxnb3mqbspdrff6cvssgrixs32"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0givpvvj8yc7gv4lhb6s1prq6p2c4147204a0wib89inqzd87gqc"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Pkcs"; + version = "5.0.0"; + sha256 = "0hb2mndac3xrw3786bsjxjfh19bwnr991qib54k6wsqjhjyyvbwj"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Primitives"; + version = "4.0.0"; + sha256 = "0i7cfnwph9a10bm26m538h5xcr8b36jscp9sy1zhgifksxz4yixh"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Primitives"; + version = "4.3.0"; + sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.ProtectedData"; + version = "4.5.0"; + sha256 = "11qlc8q6b7xlspayv07718ibzvlj6ddqqxkvcbxv5b24d5kzbrb7"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.X509Certificates"; + version = "4.3.0"; + sha256 = "0valjcz5wksbvijylxijjxb1mp38mdhv03r533vnx1q3ikzdav9h"; + }) + (fetchNuGet { + pname = "System.Security.Permissions"; + version = "4.5.0"; + sha256 = "192ww5rm3c9mirxgl1nzyrwd18am3izqls0hzm0fvcdjl5grvbhm"; + }) + (fetchNuGet { + pname = "System.Security.Principal.Windows"; + version = "4.0.0"; + sha256 = "1d3vc8i0zss9z8p4qprls4gbh7q4218l9845kclx7wvw41809k6z"; + }) + (fetchNuGet { + pname = "System.Security.Principal.Windows"; + version = "4.3.0"; + sha256 = "00a0a7c40i3v4cb20s2cmh9csb5jv2l0frvnlzyfxh848xalpdwr"; + }) + (fetchNuGet { + pname = "System.Security.Principal.Windows"; + version = "4.5.0"; + sha256 = "0rmj89wsl5yzwh0kqjgx45vzf694v9p92r4x4q6yxldk1cv1hi86"; + }) + (fetchNuGet { + pname = "System.Security.Principal"; + version = "4.0.1"; + sha256 = "1nbzdfqvzzbgsfdd5qsh94d7dbg2v4sw0yx6himyn52zf8z6007p"; + }) + (fetchNuGet { + pname = "System.Security.Principal"; + version = "4.3.0"; + sha256 = "12cm2zws06z4lfc4dn31iqv7072zyi4m910d4r6wm8yx85arsfxf"; + }) + (fetchNuGet { + pname = "System.Text.Encoding.CodePages"; + version = "4.5.0"; + sha256 = "19x38911pawq4mrxrm04l2bnxwxxlzq8v8rj4cbxnfjj8pnd3vj3"; + }) + (fetchNuGet { + pname = "System.Text.Encoding.CodePages"; + version = "4.5.1"; + sha256 = "1z21qyfs6sg76rp68qdx0c9iy57naan89pg7p6i3qpj8kyzn921w"; + }) + (fetchNuGet { + pname = "System.Text.Encoding.Extensions"; + version = "4.0.11"; + sha256 = "08nsfrpiwsg9x5ml4xyl3zyvjfdi4mvbqf93kjdh11j4fwkznizs"; + }) + (fetchNuGet { + pname = "System.Text.Encoding.Extensions"; + version = "4.3.0"; + sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy"; + }) + (fetchNuGet { + pname = "System.Text.Encoding"; + version = "4.0.11"; + sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw"; + }) + (fetchNuGet { + pname = "System.Text.Encoding"; + version = "4.3.0"; + sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; + }) + (fetchNuGet { + pname = "System.Text.Encodings.Web"; + version = "4.4.0"; + sha256 = "05qp3yivh6gz0vva0v3wjlj3g1b45d5jmz362f2y8ah6yb3rx088"; + }) + (fetchNuGet { + pname = "System.Text.Encodings.Web"; + version = "6.0.0"; + sha256 = "06n9ql3fmhpjl32g3492sj181zjml5dlcc5l76xq2h38c4f87sai"; + }) + (fetchNuGet { + pname = "System.Text.Json"; + version = "6.0.0"; + sha256 = "1si2my1g0q0qv1hiqnji4xh9wd05qavxnzj9dwgs23iqvgjky0gl"; + }) + (fetchNuGet { + pname = "System.Text.RegularExpressions"; + version = "4.1.0"; + sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7"; + }) + (fetchNuGet { + pname = "System.Text.RegularExpressions"; + version = "4.3.0"; + sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l"; + }) + (fetchNuGet { + pname = "System.Threading.Channels"; + version = "4.5.0"; + sha256 = "0n6z3wjia7h2a5vl727p97riydnb6jhhkb1pdcnizza02dwkz0nz"; + }) + (fetchNuGet { + pname = "System.Threading.Channels"; + version = "4.7.1"; + sha256 = "038fyrriypwzsj5fwgnkw79hm5ya0x63r724yizgahbxf512chr2"; + }) + (fetchNuGet { + pname = "System.Threading.Tasks.Extensions"; + version = "4.0.0"; + sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr"; + }) + (fetchNuGet { + pname = "System.Threading.Tasks.Extensions"; + version = "4.3.0"; + sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z"; + }) + (fetchNuGet { + pname = "System.Threading.Tasks.Extensions"; + version = "4.5.4"; + sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; + }) + (fetchNuGet { + pname = "System.Threading.Tasks"; + version = "4.0.11"; + sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5"; + }) + (fetchNuGet { + pname = "System.Threading.Tasks"; + version = "4.3.0"; + sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; + }) + (fetchNuGet { + pname = "System.Threading.Thread"; + version = "4.0.0"; + sha256 = "1gxxm5fl36pjjpnx1k688dcw8m9l7nmf802nxis6swdaw8k54jzc"; + }) + (fetchNuGet { + pname = "System.Threading.ThreadPool"; + version = "4.0.10"; + sha256 = "0fdr61yjcxh5imvyf93n2m3n5g9pp54bnw2l1d2rdl9z6dd31ypx"; + }) + (fetchNuGet { + pname = "System.Threading.ThreadPool"; + version = "4.3.0"; + sha256 = "027s1f4sbx0y1xqw2irqn6x161lzj8qwvnh2gn78ciiczdv10vf1"; + }) + (fetchNuGet { + pname = "System.Threading.Timer"; + version = "4.0.1"; + sha256 = "15n54f1f8nn3mjcjrlzdg6q3520571y012mx7v991x2fvp73lmg6"; + }) + (fetchNuGet { + pname = "System.Threading.Timer"; + version = "4.3.0"; + sha256 = "1nx773nsx6z5whv8kaa1wjh037id2f1cxhb69pvgv12hd2b6qs56"; + }) + (fetchNuGet { + pname = "System.Threading"; + version = "4.0.11"; + sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls"; + }) + (fetchNuGet { + pname = "System.Threading"; + version = "4.3.0"; + sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; + }) + (fetchNuGet { + pname = "System.Xml.ReaderWriter"; + version = "4.0.11"; + sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5"; + }) + (fetchNuGet { + pname = "System.Xml.ReaderWriter"; + version = "4.3.0"; + sha256 = "0c47yllxifzmh8gq6rq6l36zzvw4kjvlszkqa9wq3fr59n0hl3s1"; + }) + (fetchNuGet { + pname = "System.Xml.XDocument"; + version = "4.0.11"; + sha256 = "0n4lvpqzy9kc7qy1a4acwwd7b7pnvygv895az5640idl2y9zbz18"; + }) + (fetchNuGet { + pname = "System.Xml.XDocument"; + version = "4.3.0"; + sha256 = "08h8fm4l77n0nd4i4fk2386y809bfbwqb7ih9d7564ifcxr5ssxd"; + }) + (fetchNuGet { + pname = "System.Xml.XmlDocument"; + version = "4.0.1"; + sha256 = "0ihsnkvyc76r4dcky7v3ansnbyqjzkbyyia0ir5zvqirzan0bnl1"; + }) + (fetchNuGet { + pname = "System.Xml.XmlDocument"; + version = "4.3.0"; + sha256 = "0bmz1l06dihx52jxjr22dyv5mxv6pj4852lx68grjm7bivhrbfwi"; + }) + (fetchNuGet { + pname = "System.Xml.XPath.XmlDocument"; + version = "4.0.1"; + sha256 = "0l7yljgif41iv5g56l3nxy97hzzgck2a7rhnfnljhx9b0ry41bvc"; + }) + (fetchNuGet { + pname = "System.Xml.XPath"; + version = "4.0.1"; + sha256 = "0fjqgb6y66d72d5n8qq1h213d9nv2vi8mpv8p28j3m9rccmsh04m"; + }) + (fetchNuGet { + pname = "Text.Analyzers"; + version = "3.3.3"; + sha256 = "1fkx07xi049mlzskrw9422zpikdppsgf7vi2lq97qs5rvly3rfvp"; + }) + (fetchNuGet { + pname = "TwentyTwenty.Storage.Amazon"; + version = "2.12.1"; + sha256 = "03nrkvhki35w1rqx94s97rwxl0qwqlczyiimhrkc72vjppn5p6ph"; + }) + (fetchNuGet { + pname = "TwentyTwenty.Storage.Azure"; + version = "2.12.1"; + sha256 = "10q7gpr8kmgzmxrzj3paqlnw4d8li8scwpxkzs11ildscfp6hvlv"; + }) + (fetchNuGet { + pname = "TwentyTwenty.Storage.Google"; + version = "2.12.1"; + sha256 = "0d8s7p9brp03h9dpv3wxnqg0xsm7d9p4k6dpxpb9jak535khxzhp"; + }) + (fetchNuGet { + pname = "TwentyTwenty.Storage.Local"; + version = "2.12.1"; + sha256 = "1zmjqwd1v3z78ab4vdmaadh94465k1qgpv7ylv8x3sdx4z78yjm8"; + }) + (fetchNuGet { + pname = "TwentyTwenty.Storage"; + version = "2.12.1"; + sha256 = "0m41dxzc3hh0f4j1k4q915pvcq6zr0hv1pj6b3sayrn8vjhk64qb"; + }) + (fetchNuGet { + pname = "WindowsAzure.Storage"; + version = "9.3.3"; + sha256 = "14b0b0nj85yvyn0h8ghr3kj6di2nkbzjxc2q98f1wcr0151xvdfx"; + }) + (fetchNuGet { + pname = "xunit.abstractions"; + version = "2.0.3"; + sha256 = "00wl8qksgkxld76fgir3ycc5rjqv1sqds6x8yx40927q5py74gfh"; + }) + (fetchNuGet { + pname = "xunit.analyzers"; + version = "0.10.0"; + sha256 = "15n02q3akyqbvkp8nq75a8rd66d4ax0rx8fhdcn8j78pi235jm7j"; + }) + (fetchNuGet { + pname = "xunit.assert"; + version = "2.4.1"; + sha256 = "1imynzh80wxq2rp9sc4gxs4x1nriil88f72ilhj5q0m44qqmqpc6"; + }) + (fetchNuGet { + pname = "xunit.core"; + version = "2.4.1"; + sha256 = "1nnb3j4kzmycaw1g76ii4rfqkvg6l8gqh18falwp8g28h802019a"; + }) + (fetchNuGet { + pname = "xunit.extensibility.core"; + version = "2.4.1"; + sha256 = "103qsijmnip2pnbhciqyk2jyhdm6snindg5z2s57kqf5pcx9a050"; + }) + (fetchNuGet { + pname = "xunit.extensibility.execution"; + version = "2.4.1"; + sha256 = "1pbilxh1gp2ywm5idfl0klhl4gb16j86ib4x83p8raql1dv88qia"; + }) + (fetchNuGet { + pname = "xunit.runner.visualstudio"; + version = "2.4.3"; + sha256 = "0j1d0rbcm7pp6dypi61sjxp8l22sv261252z55b243l39jgv2rp3"; + }) + (fetchNuGet { + pname = "xunit"; + version = "2.4.1"; + sha256 = "0xf3kaywpg15flqaqfgywqyychzk15kz0kz34j21rcv78q9ywq20"; + }) + (fetchNuGet { + pname = "YamlDotNet"; + version = "8.0.0"; + sha256 = "09hr1jimmfhcpk97p963y94h2k5p7wzcj4mpwqpdnwzbyrp2flpm"; + }) +] diff --git a/pkgs/applications/blockchains/btcpayserver/update.sh b/pkgs/applications/blockchains/btcpayserver/update.sh new file mode 100755 index 00000000000..082911b42a3 --- /dev/null +++ b/pkgs/applications/blockchains/btcpayserver/update.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -euo pipefail + +scriptDir=$(cd "${BASH_SOURCE[0]%/*}" && pwd) +cd "$scriptDir" + +echo "Updating nbxplorer" +../nbxplorer/update.sh +echo +echo "Updating btcpayserver" +# Include Razor SDK packages in deps.nix +../nbxplorer/util/update-common.sh btcpayserver deps.nix '"/p:Configuration="Altcoins-Release" /p:RazorCompileOnBuild=false' diff --git a/pkgs/applications/blockchains/cgminer/default.nix b/pkgs/applications/blockchains/cgminer/default.nix new file mode 100644 index 00000000000..250379ee710 --- /dev/null +++ b/pkgs/applications/blockchains/cgminer/default.nix @@ -0,0 +1,49 @@ +{ lib, stdenv +, fetchFromGitHub +, pkg-config +, libtool +, autoconf +, automake +, curl +, ncurses +, ocl-icd +, opencl-headers +, libusb1 +, xorg +, jansson }: + +stdenv.mkDerivation rec { + pname = "cgminer"; + version = "4.11.1"; + + src = fetchFromGitHub { + owner = "ckolivas"; + repo = "cgminer"; + rev = "v${version}"; + sha256 = "0l1ms3nxnjzh4mpiadikvngcr9k3jnjqy3yna207za0va0c28dj5"; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ autoconf automake libtool curl ncurses ocl-icd opencl-headers + xorg.libX11 xorg.libXext xorg.libXinerama jansson libusb1 ]; + + configureScript = "./autogen.sh"; + configureFlags = [ "--enable-scrypt" + "--enable-opencl" + "--enable-bitforce" + "--enable-icarus" + "--enable-modminer" + "--enable-ztex" + "--enable-avalon" + "--enable-klondike" + "--enable-keccak" + "--enable-bflsc"]; + + meta = with lib; { + description = "CPU/GPU miner in c for bitcoin"; + homepage = "https://github.com/ckolivas/cgminer"; + license = licenses.gpl3; + maintainers = with maintainers; [ offline mmahut ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/charge-lnd/default.nix b/pkgs/applications/blockchains/charge-lnd/default.nix new file mode 100644 index 00000000000..1571e09e3e9 --- /dev/null +++ b/pkgs/applications/blockchains/charge-lnd/default.nix @@ -0,0 +1,39 @@ +{ lib, fetchFromGitHub, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "charge-lnd"; + version = "0.2.4"; + + src = fetchFromGitHub { + owner = "accumulator"; + repo = pname; + rev = "v${version}"; + sha256 = "1d1cbpmpppp7z1bmsarwfs314c7ypchlyr4calx0fzxfpxzfks5k"; + }; + + propagatedBuildInputs = with python3Packages; [ + aiorpcx + colorama + googleapis-common-protos + grpcio + protobuf + six + termcolor + ]; + + postInstall = '' + install README.md charge.config.example -Dt $out/share/doc/charge-lnd + ''; + + doInstallCheck = true; + installCheckPhase = '' + $out/bin/charge-lnd --help > /dev/null + ''; + + meta = with lib; { + description = "Simple policy-based fee manager for lightning network daemon"; + homepage = "https://github.com/accumulator/charge-lnd"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ mmilata ]; + }; +} diff --git a/pkgs/applications/blockchains/chia-plotter/default.nix b/pkgs/applications/blockchains/chia-plotter/default.nix new file mode 100644 index 00000000000..51ca4469bc4 --- /dev/null +++ b/pkgs/applications/blockchains/chia-plotter/default.nix @@ -0,0 +1,65 @@ +{ lib +, fetchFromGitHub +, stdenv +, libsodium +, cmake +, substituteAll +, python3Packages +}: + +stdenv.mkDerivation { + pname = "chia-plotter"; + version = "1.1.7"; + + src = fetchFromGitHub { + owner = "madMAx43v3r"; + repo = "chia-plotter"; + rev = "18cad340858f0dbcc8dafd0bda1ce1af0fe58c65"; + sha256 = "sha256-lXjeqcjn3+LtnVYngdM1T3on7V7wez4oOAZ0RpKJXMM="; + fetchSubmodules = true; + }; + + patches = [ + # prevent CMake from trying to get libraries on the Internet + (substituteAll { + src = ./dont_fetch_dependencies.patch; + pybind11_src = python3Packages.pybind11.src; + relic_src = fetchFromGitHub { + owner = "relic-toolkit"; + repo = "relic"; + rev = "1885ae3b681c423c72b65ce1fe70910142cf941c"; + hash = "sha256-tsSZTcssl8t7Nqdex4BesgQ+ACPgTdtHnJFvS9josN0="; + }; + }) + ]; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ libsodium ]; + + # These flags come from the upstream build script: + # https://github.com/madMAx43v3r/chia-plotter/blob/974d6e5f1440f68c48492122ca33828a98864dfc/make_devel.sh#L7 + CXXFLAGS = "-O3 -fmax-errors=1"; + cmakeFlags = [ + "-DARITH=easy" + "-DBUILD_BLS_PYTHON_BINDINGS=false" + "-DBUILD_BLS_TESTS=false" + "-DBUILD_BLS_BENCHMARKS=false" + ]; + + installPhase = '' + runHook preInstall + + install -D -m 755 chia_plot $out/bin/chia_plot + + runHook postInstall + ''; + + meta = with lib; { + homepage = "https://github.com/madMAx43v3r/chia-plotter"; + description = "New implementation of a chia plotter which is designed as a processing pipeline"; + license = licenses.gpl3Only; + platforms = platforms.linux; + maintainers = with maintainers; [ ilyakooo0 ]; + }; +} diff --git a/pkgs/applications/blockchains/chia-plotter/dont_fetch_dependencies.patch b/pkgs/applications/blockchains/chia-plotter/dont_fetch_dependencies.patch new file mode 100644 index 00000000000..05486473eef --- /dev/null +++ b/pkgs/applications/blockchains/chia-plotter/dont_fetch_dependencies.patch @@ -0,0 +1,50 @@ +diff --git a/lib/bls-signatures/python-bindings/CMakeLists.txt b/lib/bls-signatures/python-bindings/CMakeLists.txt +index 255e3bb..5f99c3a 100644 +--- a/lib/bls-signatures/python-bindings/CMakeLists.txt ++++ b/lib/bls-signatures/python-bindings/CMakeLists.txt +@@ -6,8 +6,7 @@ include(FetchContent) + + FetchContent_Declare( + pybind11 +- GIT_REPOSITORY https://github.com/pybind/pybind11.git +- GIT_TAG v2.6.2 ++ SOURCE_DIR @pybind11_src@ + ) + FetchContent_MakeAvailable(pybind11 relic) + +diff --git a/lib/bls-signatures/src/CMakeLists.txt b/lib/bls-signatures/src/CMakeLists.txt +index b762b5d..e06073b 100644 +--- a/lib/bls-signatures/src/CMakeLists.txt ++++ b/lib/bls-signatures/src/CMakeLists.txt +@@ -4,18 +4,11 @@ set (CMAKE_CXX_STANDARD 17) + # CMake 3.14+ + include(FetchContent) + +-if (DEFINED ENV{RELIC_MAIN}) +- set(RELIC_GIT_TAG "origin/main") +-else () +- set(RELIC_GIT_TAG "1885ae3b681c423c72b65ce1fe70910142cf941c") +-endif () +- + message(STATUS "Relic will be built from: ${RELIC_GIT_TAG}") + + FetchContent_Declare( + relic +- GIT_REPOSITORY https://github.com/relic-toolkit/relic.git +- GIT_TAG ${RELIC_GIT_TAG} ++ SOURCE_DIR @relic_src@ + ) + FetchContent_MakeAvailable(relic) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 970ec74..948441a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -38,6 +38,7 @@ include_directories( + ${BLAKE3_PATH} + ${CMAKE_BINARY_DIR}/_deps/relic-src/include + ${CMAKE_BINARY_DIR}/_deps/relic-build/include ++ @relic_src@/include + ) + + IF (WIN32) diff --git a/pkgs/applications/blockchains/chia/default.nix b/pkgs/applications/blockchains/chia/default.nix new file mode 100644 index 00000000000..e8527559c3a --- /dev/null +++ b/pkgs/applications/blockchains/chia/default.nix @@ -0,0 +1,95 @@ +{ lib +, cacert +, fetchFromGitHub +, python3Packages +}: + +let chia = python3Packages.buildPythonApplication rec { + pname = "chia"; + version = "1.3.1"; + + src = fetchFromGitHub { + owner = "Chia-Network"; + repo = "chia-blockchain"; + rev = version; + fetchSubmodules = true; + hash = "sha256-nH6rCzIQu5oWsdEHa+UkvbWeUGjrtpEKVEcLmSoor5k="; + }; + + postPatch = '' + substituteInPlace setup.py \ + --replace "==" ">=" + + cp ${cacert}/etc/ssl/certs/ca-bundle.crt mozilla-ca/cacert.pem + ''; + + nativeBuildInputs = [ + python3Packages.setuptools-scm + ]; + + # give a hint to setuptools-scm on package version + SETUPTOOLS_SCM_PRETEND_VERSION = "v${version}"; + + propagatedBuildInputs = with python3Packages; [ + aiofiles + aiohttp + aiosqlite + bitstring + blspy + chiapos + chiavdf + chiabip158 + click + clvm + clvm-rs + clvm-tools + colorama + colorlog + concurrent-log-handler + cryptography + dnslib + dnspythonchia + fasteners + filelock + keyrings-cryptfile + pyyaml + setproctitle + setuptools # needs pkg_resources at runtime + sortedcontainers + watchdog + websockets + zstd + ]; + + checkInputs = with python3Packages; [ + pytestCheckHook + ]; + + # Testsuite is expensive and non-deterministic, so it is available in + # passthru.tests instead. + doCheck = false; + + disabledTests = [ + "test_spend_through_n" + "test_spend_zero_coin" + "test_default_cached_master_passphrase" + "test_using_legacy_keyring" + ]; + + preCheck = '' + export HOME=`mktemp -d` + ''; + + passthru.tests = { + chiaWithTests = chia.overrideAttrs (_: { doCheck = true; }); + }; + + meta = with lib; { + homepage = "https://www.chia.net/"; + description = "Chia is a modern cryptocurrency built from scratch, designed to be efficient, decentralized, and secure."; + license = with licenses; [ asl20 ]; + maintainers = teams.chia.members; + platforms = platforms.all; + }; +}; +in chia diff --git a/pkgs/applications/blockchains/clightning/default.nix b/pkgs/applications/blockchains/clightning/default.nix new file mode 100644 index 00000000000..b58524d1eee --- /dev/null +++ b/pkgs/applications/blockchains/clightning/default.nix @@ -0,0 +1,71 @@ +{ lib +, stdenv +, darwin +, fetchurl +, autoconf +, automake +, autogen +, gettext +, libtool +, pkg-config +, unzip +, which +, gmp +, libsodium +, python3 +, sqlite +, zlib +}: +let + py3 = python3.withPackages (p: [ p.Mako p.mrkd ]); +in +stdenv.mkDerivation rec { + pname = "clightning"; + version = "0.10.2"; + + src = fetchurl { + url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip"; + sha256 = "3c9dcb686217b2efe0e988e90b95777c4591e3335e259e01a94af87e0bf01809"; + }; + + # when building on darwin we need dawin.cctools to provide the correct libtool + # as libwally-core detects the host as darwin and tries to add the -static + # option to libtool, also we have to add the modified gsed package. + nativeBuildInputs = [ autogen autoconf automake gettext pkg-config py3 unzip which ] + ++ lib.optionals stdenv.isDarwin [ darwin.cctools darwin.autoSignDarwinBinariesHook ] ++ [ libtool ]; + + buildInputs = [ gmp libsodium sqlite zlib ]; + + # this causes some python trouble on a darwin host so we skip this step. + # also we have to tell libwally-core to use sed instead of gsed. + postPatch = if !stdenv.isDarwin then '' + patchShebangs \ + tools/generate-wire.py \ + tools/update-mocks.sh \ + tools/mockup.sh \ + devtools/sql-rewrite.py + '' else '' + substituteInPlace external/libwally-core/tools/autogen.sh --replace gsed sed && \ + substituteInPlace external/libwally-core/configure.ac --replace gsed sed + ''; + + configureFlags = [ "--disable-developer" "--disable-valgrind" ]; + + makeFlags = [ "VERSION=v${version}" ]; + + enableParallelBuilding = true; + + meta = with lib; { + description = "A Bitcoin Lightning Network implementation in C"; + longDescription = '' + c-lightning is a standard compliant implementation of the Lightning + Network protocol. The Lightning Network is a scalability solution for + Bitcoin, enabling secure and instant transfer of funds between any two + parties for any amount. + ''; + homepage = "https://github.com/ElementsProject/lightning"; + maintainers = with maintainers; [ jb55 prusnak ]; + license = licenses.mit; + platforms = platforms.linux ++ platforms.darwin; + }; +} diff --git a/pkgs/applications/blockchains/crypto-org-wallet/default.nix b/pkgs/applications/blockchains/crypto-org-wallet/default.nix new file mode 100644 index 00000000000..e45e4349756 --- /dev/null +++ b/pkgs/applications/blockchains/crypto-org-wallet/default.nix @@ -0,0 +1,33 @@ +{ lib, fetchurl, appimageTools, imagemagick }: + +let + pname = "chain-desktop-wallet"; + version = "0.1.1"; + name = "${pname}-${version}"; + + src = fetchurl { + url = "https://github.com/crypto-com/${pname}/releases/download/v${version}/${name}-x86_64.AppImage"; + sha256 = "12076hf8dlz0hg1pb2ixwlslrh8gi6s1iawnvhnn6vz4jmjvq356"; + }; + + appimageContents = appimageTools.extractType2 { inherit name src; }; +in appimageTools.wrapType2 rec { + inherit name src; + + extraInstallCommands = '' + mv $out/bin/${name} $out/bin/${pname} + install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop + ${imagemagick}/bin/convert ${appimageContents}/${pname}.png -resize 512x512 ${pname}_512.png + install -m 444 -D ${pname}_512.png $out/share/icons/hicolor/512x512/apps/${pname}.png + substituteInPlace $out/share/applications/${pname}.desktop \ + --replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname} %U' + ''; + + meta = with lib; { + description = "Crypto.org Chain desktop wallet (Beta)"; + homepage = "https://github.com/crypto-com/chain-desktop-wallet"; + license = licenses.asl20; + maintainers = with maintainers; [ th0rgal ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/blockchains/cryptop/default.nix b/pkgs/applications/blockchains/cryptop/default.nix new file mode 100644 index 00000000000..d93a10436fc --- /dev/null +++ b/pkgs/applications/blockchains/cryptop/default.nix @@ -0,0 +1,23 @@ +{ lib, buildPythonApplication, fetchPypi, requests, requests-cache, setuptools }: + +buildPythonApplication rec { + pname = "cryptop"; + version = "0.2.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "0akrrz735vjfrm78plwyg84vabj0x3qficq9xxmy9kr40fhdkzpb"; + }; + + propagatedBuildInputs = [ setuptools requests requests-cache ]; + + # No tests in archive + doCheck = false; + + meta = { + homepage = "https://github.com/huwwp/cryptop"; + description = "Command line Cryptocurrency Portfolio"; + license = with lib.licenses; [ mit ]; + maintainers = with lib.maintainers; [ bhipple ]; + }; +} diff --git a/pkgs/applications/blockchains/dashpay/default.nix b/pkgs/applications/blockchains/dashpay/default.nix new file mode 100644 index 00000000000..0411f8cf32b --- /dev/null +++ b/pkgs/applications/blockchains/dashpay/default.nix @@ -0,0 +1,44 @@ +{ fetchFromGitHub, lib, stdenv, pkg-config, autoreconfHook +, openssl, db48, boost, zlib, miniupnpc +, qrencode, glib, protobuf, yasm, libevent +, util-linux +, enable_Upnp ? false +, disable_Wallet ? false +, disable_Daemon ? false }: + +with lib; +stdenv.mkDerivation rec { + pname = "dashpay"; + version = "0.12.2.3"; + + src = fetchFromGitHub { + owner = "dashpay"; + repo= "dash"; + rev = "v${version}"; + sha256 = "sha256-DMoiUX8Q0HcBHA6ZIN58uPsTnHjEJMi8eGG2DW8z17Q="; + }; + + nativeBuildInputs = [ pkg-config autoreconfHook ]; + buildInputs = [ glib openssl db48 yasm boost zlib libevent + miniupnpc protobuf qrencode util-linux ]; + + + configureFlags = [ "--with-boost-libdir=${boost.out}/lib --with-gui=no" ] + ++ optional enable_Upnp "--enable-upnp-default" + ++ optional disable_Wallet "--disable-wallet" + ++ optional disable_Daemon "--disable-daemon" + ; + + meta = { + description = "A decentralized key/value registration and transfer system"; + longDescription = '' + Dash (DASH) is an open sourced, privacy-centric digital currency + with instant transactions. It allows you to keep your finances + private as you make transactions without waits, similar to cash. + ''; + homepage = "https://www.dash.org"; + maintainers = with maintainers; [ ]; + platforms = platforms.unix; + license = licenses.mit; + }; +} diff --git a/pkgs/applications/blockchains/dcrd/default.nix b/pkgs/applications/blockchains/dcrd/default.nix new file mode 100644 index 00000000000..e959eca48ae --- /dev/null +++ b/pkgs/applications/blockchains/dcrd/default.nix @@ -0,0 +1,26 @@ +{ lib, buildGoModule, fetchFromGitHub }: + +buildGoModule rec { + pname = "dcrd"; + version = "1.5.2"; + + src = fetchFromGitHub { + owner = "decred"; + repo = "dcrd"; + rev = "refs/tags/release-v${version}"; + sha256 = "14pxajc8si90hnddilfm09kmljwxq6i6p53fk0g09jp000cbklkl"; + }; + + vendorSha256 = "03aw6mcvp1vr01ppxy673jf5hdryd5032cxndlkaiwg005mxp1dy"; + + doCheck = false; + + subPackages = [ "." "cmd/dcrctl" "cmd/promptsecret" ]; + + meta = { + homepage = "https://decred.org"; + description = "Decred daemon in Go (golang)"; + license = with lib.licenses; [ isc ]; + maintainers = with lib.maintainers; [ juaningan ]; + }; +} diff --git a/pkgs/applications/blockchains/dcrwallet/default.nix b/pkgs/applications/blockchains/dcrwallet/default.nix new file mode 100644 index 00000000000..2266a1e4c26 --- /dev/null +++ b/pkgs/applications/blockchains/dcrwallet/default.nix @@ -0,0 +1,26 @@ +{ lib, buildGoModule, fetchFromGitHub }: + +buildGoModule rec { + pname = "dcrwallet"; + version = "1.6.0"; + + src = fetchFromGitHub { + owner = "decred"; + repo = "dcrwallet"; + rev = "refs/tags/v${version}"; + sha256 = "sha256-WUfmv+laOwR/fc4osAFzPKqHQR+wOtSdLEsysICnuvg="; + }; + + vendorSha256 = "sha256-9IRNlULvARIZu6dWaKrvx6fiDJ80SBLINhK/9tW9k/0="; + + doCheck = false; + + subPackages = [ "." ]; + + meta = { + homepage = "https://decred.org"; + description = "A secure Decred wallet daemon written in Go (golang)"; + license = with lib.licenses; [ isc ]; + maintainers = with lib.maintainers; [ juaningan ]; + }; +} diff --git a/pkgs/applications/blockchains/digibyte/default.nix b/pkgs/applications/blockchains/digibyte/default.nix new file mode 100644 index 00000000000..acf0b355e64 --- /dev/null +++ b/pkgs/applications/blockchains/digibyte/default.nix @@ -0,0 +1,69 @@ +{ lib, stdenv +, fetchFromGitHub +, openssl +, boost +, libevent +, autoreconfHook +, db4 +, pkg-config +, protobuf +, hexdump +, zeromq +, withGui +, qtbase ? null +, qttools ? null +, wrapQtAppsHook ? null +}: + +with lib; + +stdenv.mkDerivation rec { + pname = "digibyte"; + version = "7.17.2"; + + name = pname + toString (optional (!withGui) "d") + "-" + version; + + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = "v${version}"; + sha256 = "04czj7mx3wpbx4832npk686p9pg5zb6qwlcvnmvqf31hm5qylbxj"; + }; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + hexdump + ] ++ optionals withGui [ + wrapQtAppsHook + ]; + + buildInputs = [ + openssl + boost + libevent + db4 + zeromq + ] ++ optionals withGui [ + qtbase + qttools + protobuf + ]; + + enableParallelBuilding = true; + + configureFlags = [ + "--with-boost-libdir=${boost.out}/lib" + ] ++ optionals withGui [ + "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" + ]; + + meta = { + description = "DigiByte (DGB) is a rapidly growing decentralized, global blockchain"; + homepage = "https://digibyte.io/"; + license = licenses.mit; + maintainers = [ maintainers.mmahut ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/dogecoin/default.nix b/pkgs/applications/blockchains/dogecoin/default.nix new file mode 100644 index 00000000000..35b9fb026e3 --- /dev/null +++ b/pkgs/applications/blockchains/dogecoin/default.nix @@ -0,0 +1,41 @@ +{ lib, stdenv , fetchFromGitHub +, pkg-config, autoreconfHook +, db5, openssl, boost, zlib, miniupnpc, libevent +, protobuf, util-linux, qt4, qrencode +, withGui }: + +with lib; +stdenv.mkDerivation rec { + name = "dogecoin" + (toString (optional (!withGui) "d")) + "-" + version; + version = "1.14.5"; + + src = fetchFromGitHub { + owner = "dogecoin"; + repo = "dogecoin"; + rev = "v${version}"; + sha256 = "sha256-Ewefy6sptSQDJVbvQqFoawhA/ujKEn9W2JWyoPYD7d0="; + }; + + nativeBuildInputs = [ pkg-config autoreconfHook ]; + buildInputs = [ openssl db5 openssl util-linux + protobuf boost zlib miniupnpc libevent ] + ++ optionals withGui [ qt4 qrencode ]; + + configureFlags = [ "--with-incompatible-bdb" + "--with-boost-libdir=${boost.out}/lib" ] + ++ optionals withGui [ "--with-gui" ]; + + meta = { + description = "Wow, such coin, much shiba, very rich"; + longDescription = '' + Dogecoin is a decentralized, peer-to-peer digital currency that + enables you to easily send money online. Think of it as "the + internet currency." + It is named after a famous Internet meme, the "Doge" - a Shiba Inu dog. + ''; + homepage = "http://www.dogecoin.com/"; + license = licenses.mit; + maintainers = with maintainers; [ edwtjo offline ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/eclair/default.nix b/pkgs/applications/blockchains/eclair/default.nix new file mode 100644 index 00000000000..dcddef61931 --- /dev/null +++ b/pkgs/applications/blockchains/eclair/default.nix @@ -0,0 +1,38 @@ +{ lib +, stdenv +, fetchzip +, jq +, openjdk11 +}: + +stdenv.mkDerivation rec { + pname = "eclair"; + version = "0.6.2"; + revision = "6817d6f"; + + src = fetchzip { + url = "https://github.com/ACINQ/eclair/releases/download/v${version}/eclair-node-${version}-${revision}-bin.zip"; + sha256 = "038r9mblm2r8mkxnv65k29r7xj22dff5gmvzv9xiy5zf9i45mmk8"; + }; + + propagatedBuildInputs = [ jq openjdk11 ]; + + installPhase = '' + runHook preInstall + + mkdir $out + cp -a * $out + mv $out/bin/eclair-node.sh $out/bin/eclair-node + rm $out/bin/eclair-node.bat + + runHook postInstall + ''; + + meta = with lib; { + description = "A scala implementation of the Lightning Network"; + homepage = "https://github.com/ACINQ/eclair"; + license = licenses.asl20; + maintainers = with maintainers; [ prusnak ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/electrs/default.nix b/pkgs/applications/blockchains/electrs/default.nix new file mode 100644 index 00000000000..f78c0fa3e35 --- /dev/null +++ b/pkgs/applications/blockchains/electrs/default.nix @@ -0,0 +1,42 @@ +{ lib +, stdenv +, rustPlatform +, fetchFromGitHub +, llvmPackages +, rocksdb_6_23 +, Security +}: + +let + rocksdb = rocksdb_6_23; +in +rustPlatform.buildRustPackage rec { + pname = "electrs"; + version = "0.9.6"; + + src = fetchFromGitHub { + owner = "romanz"; + repo = pname; + rev = "v${version}"; + hash = "sha256-BI7hxlpg2sggD1ag73n+tRre+Ja2ZFhDPzy1DV8aEHw="; + }; + + cargoHash = "sha256-Oy2mOulSB2a9LaT47G+BzjidcjPjHeaoesQ7g6M8M1Q="; + + # needed for librocksdb-sys + nativeBuildInputs = [ llvmPackages.clang ]; + LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib"; + + # link rocksdb dynamically + ROCKSDB_INCLUDE_DIR = "${rocksdb}/include"; + ROCKSDB_LIB_DIR = "${rocksdb}/lib"; + + buildInputs = lib.optionals stdenv.isDarwin [ Security ]; + + meta = with lib; { + description = "An efficient re-implementation of Electrum Server in Rust"; + homepage = "https://github.com/romanz/electrs"; + license = licenses.mit; + maintainers = with maintainers; [ prusnak ]; + }; +} diff --git a/pkgs/applications/blockchains/electrs/update.sh b/pkgs/applications/blockchains/electrs/update.sh new file mode 100755 index 00000000000..14105d71a44 --- /dev/null +++ b/pkgs/applications/blockchains/electrs/update.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p coreutils curl jq git gnupg common-updater-scripts +set -euo pipefail + +# Fetch latest release, GPG-verify the tag, update derivation + +scriptDir=$(cd "${BASH_SOURCE[0]%/*}" && pwd) +nixpkgs=$(realpath "$scriptDir"/../../../..) + +oldVersion=$(nix-instantiate --eval -E "(import \"$nixpkgs\" { config = {}; overlays = []; }).electrs.version" | tr -d '"') +version=$(curl -s --show-error "https://api.github.com/repos/romanz/electrs/releases/latest" | jq -r '.tag_name' | tail -c +2) + +if [[ $version == $oldVersion ]]; then + echo "Already at latest version $version" + exit 0 +fi +echo "New version: $version" + +tmpdir=$(mktemp -d /tmp/electrs-verify-gpg.XXX) +repo=$tmpdir/repo +trap "rm -rf $tmpdir" EXIT + +git clone --depth 1 --branch v${version} -c advice.detachedHead=false https://github.com/romanz/electrs $repo +git -C $repo checkout tags/v${version} + +export GNUPGHOME=$tmpdir +echo +echo "Fetching romanz's key" +gpg --keyserver hkps://keys.openpgp.org --recv-keys 15c8c3574ae4f1e25f3f35c587cae5fa46917cbb 2> /dev/null +echo +echo "Verifying commit" +git -C $repo verify-tag v${version} + +rm -rf $repo/.git +hash=$(nix hash path $repo) + +(cd "$nixpkgs" && update-source-version electrs "$version" "$hash") +sed -i 's|cargoHash = .*|cargoHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";|' "$scriptDir/default.nix" +echo +echo "electrs: $oldVersion -> $version" diff --git a/pkgs/applications/blockchains/elements/default.nix b/pkgs/applications/blockchains/elements/default.nix new file mode 100644 index 00000000000..be124d6f34d --- /dev/null +++ b/pkgs/applications/blockchains/elements/default.nix @@ -0,0 +1,84 @@ +{ lib +, stdenv +, fetchFromGitHub +, autoreconfHook +, pkg-config +, util-linux +, hexdump +, wrapQtAppsHook ? null +, boost +, libevent +, miniupnpc +, zeromq +, zlib +, db48 +, sqlite +, qrencode +, qtbase ? null +, qttools ? null +, python3 +, withGui +, withWallet ? true +}: + +with lib; +stdenv.mkDerivation rec { + pname = if withGui then "elements" else "elementsd"; + version = "0.21.0.2"; + + src = fetchFromGitHub { + owner = "ElementsProject"; + repo = "elements"; + rev = "elements-${version}"; + sha256 = "sha256-5b3wylp9Z2U0ueu2gI9jGeWiiJoddjcjQ/6zkFATyvA="; + }; + + nativeBuildInputs = + [ autoreconfHook pkg-config ] + ++ optionals stdenv.isLinux [ util-linux ] + ++ optionals stdenv.isDarwin [ hexdump ] + ++ 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 ]; + + doCheck = true; + + checkFlags = + [ "LC_ALL=C.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; + + meta = { + description = "Open Source implementation of advanced blockchain features extending the Bitcoin protocol"; + longDescription= '' + The Elements blockchain platform is a collection of feature experiments and extensions to the + Bitcoin protocol. This platform enables anyone to build their own businesses or networks + pegged to Bitcoin as a sidechain or run as a standalone blockchain with arbitrary asset + tokens. + ''; + homepage = "https://www.github.com/ElementsProject/elements"; + maintainers = with maintainers; [ prusnak ]; + license = licenses.mit; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/ergo/default.nix b/pkgs/applications/blockchains/ergo/default.nix new file mode 100644 index 00000000000..cb39e26789b --- /dev/null +++ b/pkgs/applications/blockchains/ergo/default.nix @@ -0,0 +1,27 @@ +{ lib, stdenv, fetchurl, makeWrapper, jre }: + +stdenv.mkDerivation rec { + pname = "ergo"; + version = "4.0.23"; + + src = fetchurl { + url = "https://github.com/ergoplatform/ergo/releases/download/v${version}/ergo-${version}.jar"; + sha256 = "sha256-ZpBTfL8ghLOo8C9yDUfKelblpIlwdVAOgYVvqmxJQXo="; + }; + + nativeBuildInputs = [ makeWrapper ]; + + dontUnpack = true; + + installPhase = '' + makeWrapper ${jre}/bin/java $out/bin/ergo --add-flags "-jar $src" + ''; + + meta = with lib; { + description = "Open protocol that implements modern scientific ideas in the blockchain area"; + homepage = "https://ergoplatform.org/en/"; + license = licenses.cc0; + platforms = platforms.all; + maintainers = with maintainers; [ mmahut ]; + }; +} diff --git a/pkgs/applications/blockchains/erigon.nix b/pkgs/applications/blockchains/erigon.nix new file mode 100644 index 00000000000..22f2c970935 --- /dev/null +++ b/pkgs/applications/blockchains/erigon.nix @@ -0,0 +1,34 @@ +{ lib, buildGoModule, fetchFromGitHub }: + +buildGoModule rec { + pname = "erigon"; + version = "2022.02.04"; + + src = fetchFromGitHub { + owner = "ledgerwatch"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-86a1VtVyTRKpY41fAHskUfPZpXUutpyvxlRLhkiHTZ0="; + }; + + vendorSha256 = "sha256-P3jdK+ubBHusTL4eWlA/TDJIrbuV17tL8Cv6c3ubjlc="; + proxyVendor = true; + + # Build errors in mdbx when format hardening is enabled: + # cc1: error: '-Wformat-security' ignored without '-Wformat' [-Werror=format-security] + hardeningDisable = [ "format" ]; + + subPackages = [ + "cmd/erigon" + "cmd/evm" + "cmd/rpcdaemon" + "cmd/rlpdump" + ]; + + meta = with lib; { + homepage = "https://github.com/ledgerwatch/erigon/"; + description = "Ethereum node implementation focused on scalability and modularity"; + license = with licenses; [ lgpl3Plus gpl3Plus ]; + maintainers = with maintainers; [ d-xo ]; + }; +} diff --git a/pkgs/applications/blockchains/ethabi/add-Cargo-lock.patch b/pkgs/applications/blockchains/ethabi/add-Cargo-lock.patch new file mode 100644 index 00000000000..57725d28288 --- /dev/null +++ b/pkgs/applications/blockchains/ethabi/add-Cargo-lock.patch @@ -0,0 +1,683 @@ +diff --git a/Cargo.lock b/Cargo.lock +new file mode 100644 +index 0000000..05e3f0f +--- /dev/null ++++ b/Cargo.lock +@@ -0,0 +1,677 @@ ++# This file is automatically @generated by Cargo. ++# It is not intended for manual editing. ++[[package]] ++name = "ansi_term" ++version = "0.11.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" ++dependencies = [ ++ "winapi", ++] ++ ++[[package]] ++name = "anyhow" ++version = "1.0.40" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b" ++ ++[[package]] ++name = "arrayvec" ++version = "0.5.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" ++ ++[[package]] ++name = "atty" ++version = "0.2.14" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" ++dependencies = [ ++ "hermit-abi", ++ "libc", ++ "winapi", ++] ++ ++[[package]] ++name = "bitflags" ++version = "1.2.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" ++ ++[[package]] ++name = "bitvec" ++version = "0.17.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" ++dependencies = [ ++ "either", ++ "radium", ++] ++ ++[[package]] ++name = "block-buffer" ++version = "0.9.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" ++dependencies = [ ++ "block-padding", ++ "generic-array", ++] ++ ++[[package]] ++name = "block-padding" ++version = "0.2.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" ++ ++[[package]] ++name = "byte-slice-cast" ++version = "0.3.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" ++ ++[[package]] ++name = "byteorder" ++version = "1.4.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" ++ ++[[package]] ++name = "bytes" ++version = "1.0.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" ++ ++[[package]] ++name = "cfg-if" ++version = "1.0.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" ++ ++[[package]] ++name = "clap" ++version = "2.33.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" ++dependencies = [ ++ "ansi_term", ++ "atty", ++ "bitflags", ++ "strsim", ++ "textwrap", ++ "unicode-width", ++ "vec_map", ++] ++ ++[[package]] ++name = "crunchy" ++version = "0.2.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" ++ ++[[package]] ++name = "digest" ++version = "0.9.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" ++dependencies = [ ++ "generic-array", ++] ++ ++[[package]] ++name = "either" ++version = "1.6.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" ++ ++[[package]] ++name = "ethabi" ++version = "13.0.0" ++dependencies = [ ++ "anyhow", ++ "ethereum-types", ++ "hex", ++ "hex-literal", ++ "paste", ++ "serde", ++ "serde_json", ++ "sha3", ++ "thiserror", ++ "uint", ++] ++ ++[[package]] ++name = "ethabi-cli" ++version = "13.0.0" ++dependencies = [ ++ "anyhow", ++ "ethabi", ++ "hex", ++ "itertools", ++ "sha3", ++ "structopt", ++] ++ ++[[package]] ++name = "ethabi-contract" ++version = "11.0.0" ++ ++[[package]] ++name = "ethabi-derive" ++version = "13.0.0" ++dependencies = [ ++ "anyhow", ++ "ethabi", ++ "heck", ++ "proc-macro2", ++ "quote", ++ "syn", ++] ++ ++[[package]] ++name = "ethabi-tests" ++version = "0.1.1" ++dependencies = [ ++ "ethabi", ++ "ethabi-contract", ++ "ethabi-derive", ++ "hex", ++ "hex-literal", ++] ++ ++[[package]] ++name = "ethbloom" ++version = "0.10.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "22a621dcebea74f2a6f2002d0a885c81ccf6cbdf86760183316a7722b5707ca4" ++dependencies = [ ++ "crunchy", ++ "fixed-hash", ++ "impl-rlp", ++ "impl-serde", ++ "tiny-keccak", ++] ++ ++[[package]] ++name = "ethereum-types" ++version = "0.10.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "05dc5f0df4915fa6dff7f975a8366ecfaaa8959c74235469495153e7bb1b280e" ++dependencies = [ ++ "ethbloom", ++ "fixed-hash", ++ "impl-rlp", ++ "impl-serde", ++ "primitive-types", ++ "uint", ++] ++ ++[[package]] ++name = "fixed-hash" ++version = "0.7.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" ++dependencies = [ ++ "byteorder", ++ "rand", ++ "rustc-hex", ++ "static_assertions", ++] ++ ++[[package]] ++name = "generic-array" ++version = "0.14.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" ++dependencies = [ ++ "typenum", ++ "version_check", ++] ++ ++[[package]] ++name = "getrandom" ++version = "0.2.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" ++dependencies = [ ++ "cfg-if", ++ "libc", ++ "wasi", ++] ++ ++[[package]] ++name = "heck" ++version = "0.3.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" ++dependencies = [ ++ "unicode-segmentation", ++] ++ ++[[package]] ++name = "hermit-abi" ++version = "0.1.18" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" ++dependencies = [ ++ "libc", ++] ++ ++[[package]] ++name = "hex" ++version = "0.4.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" ++ ++[[package]] ++name = "hex-literal" ++version = "0.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5af1f635ef1bc545d78392b136bfe1c9809e029023c84a3638a864a10b8819c8" ++ ++[[package]] ++name = "impl-codec" ++version = "0.4.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" ++dependencies = [ ++ "parity-scale-codec", ++] ++ ++[[package]] ++name = "impl-rlp" ++version = "0.3.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" ++dependencies = [ ++ "rlp", ++] ++ ++[[package]] ++name = "impl-serde" ++version = "0.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b47ca4d2b6931707a55fce5cf66aff80e2178c8b63bbb4ecb5695cbc870ddf6f" ++dependencies = [ ++ "serde", ++] ++ ++[[package]] ++name = "itertools" ++version = "0.9.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" ++dependencies = [ ++ "either", ++] ++ ++[[package]] ++name = "itoa" ++version = "0.4.7" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" ++ ++[[package]] ++name = "keccak" ++version = "0.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" ++ ++[[package]] ++name = "lazy_static" ++version = "1.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" ++ ++[[package]] ++name = "libc" ++version = "0.2.94" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" ++ ++[[package]] ++name = "opaque-debug" ++version = "0.3.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" ++ ++[[package]] ++name = "parity-scale-codec" ++version = "1.3.7" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a4b26b16c7687c3075982af47719e481815df30bc544f7a6690763a25ca16e9d" ++dependencies = [ ++ "arrayvec", ++ "bitvec", ++ "byte-slice-cast", ++ "serde", ++] ++ ++[[package]] ++name = "paste" ++version = "1.0.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58" ++ ++[[package]] ++name = "ppv-lite86" ++version = "0.2.10" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" ++ ++[[package]] ++name = "primitive-types" ++version = "0.8.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b3824ae2c5e27160113b9e029a10ec9e3f0237bad8029f69c7724393c9fdefd8" ++dependencies = [ ++ "fixed-hash", ++ "impl-codec", ++ "impl-rlp", ++ "impl-serde", ++ "uint", ++] ++ ++[[package]] ++name = "proc-macro-error" ++version = "1.0.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" ++dependencies = [ ++ "proc-macro-error-attr", ++ "proc-macro2", ++ "quote", ++ "syn", ++ "version_check", ++] ++ ++[[package]] ++name = "proc-macro-error-attr" ++version = "1.0.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "version_check", ++] ++ ++[[package]] ++name = "proc-macro2" ++version = "1.0.26" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" ++dependencies = [ ++ "unicode-xid", ++] ++ ++[[package]] ++name = "quote" ++version = "1.0.9" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" ++dependencies = [ ++ "proc-macro2", ++] ++ ++[[package]] ++name = "radium" ++version = "0.3.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" ++ ++[[package]] ++name = "rand" ++version = "0.8.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" ++dependencies = [ ++ "libc", ++ "rand_chacha", ++ "rand_core", ++] ++ ++[[package]] ++name = "rand_chacha" ++version = "0.3.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" ++dependencies = [ ++ "ppv-lite86", ++ "rand_core", ++] ++ ++[[package]] ++name = "rand_core" ++version = "0.6.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" ++dependencies = [ ++ "getrandom", ++] ++ ++[[package]] ++name = "rlp" ++version = "0.5.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e54369147e3e7796c9b885c7304db87ca3d09a0a98f72843d532868675bbfba8" ++dependencies = [ ++ "bytes", ++ "rustc-hex", ++] ++ ++[[package]] ++name = "rustc-hex" ++version = "2.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" ++ ++[[package]] ++name = "ryu" ++version = "1.0.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" ++ ++[[package]] ++name = "serde" ++version = "1.0.125" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" ++dependencies = [ ++ "serde_derive", ++] ++ ++[[package]] ++name = "serde_derive" ++version = "1.0.125" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn", ++] ++ ++[[package]] ++name = "serde_json" ++version = "1.0.64" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" ++dependencies = [ ++ "itoa", ++ "ryu", ++ "serde", ++] ++ ++[[package]] ++name = "sha3" ++version = "0.9.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" ++dependencies = [ ++ "block-buffer", ++ "digest", ++ "keccak", ++ "opaque-debug", ++] ++ ++[[package]] ++name = "static_assertions" ++version = "1.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" ++ ++[[package]] ++name = "strsim" ++version = "0.8.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" ++ ++[[package]] ++name = "structopt" ++version = "0.3.21" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5277acd7ee46e63e5168a80734c9f6ee81b1367a7d8772a2d765df2a3705d28c" ++dependencies = [ ++ "clap", ++ "lazy_static", ++ "structopt-derive", ++] ++ ++[[package]] ++name = "structopt-derive" ++version = "0.4.14" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5ba9cdfda491b814720b6b06e0cac513d922fc407582032e8706e9f137976f90" ++dependencies = [ ++ "heck", ++ "proc-macro-error", ++ "proc-macro2", ++ "quote", ++ "syn", ++] ++ ++[[package]] ++name = "syn" ++version = "1.0.72" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "unicode-xid", ++] ++ ++[[package]] ++name = "textwrap" ++version = "0.11.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" ++dependencies = [ ++ "unicode-width", ++] ++ ++[[package]] ++name = "thiserror" ++version = "1.0.24" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" ++dependencies = [ ++ "thiserror-impl", ++] ++ ++[[package]] ++name = "thiserror-impl" ++version = "1.0.24" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn", ++] ++ ++[[package]] ++name = "tiny-keccak" ++version = "2.0.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" ++dependencies = [ ++ "crunchy", ++] ++ ++[[package]] ++name = "typenum" ++version = "1.13.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" ++ ++[[package]] ++name = "uint" ++version = "0.9.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e11fe9a9348741cf134085ad57c249508345fe16411b3d7fb4ff2da2f1d6382e" ++dependencies = [ ++ "byteorder", ++ "crunchy", ++ "hex", ++ "static_assertions", ++] ++ ++[[package]] ++name = "unicode-segmentation" ++version = "1.7.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" ++ ++[[package]] ++name = "unicode-width" ++version = "0.1.8" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" ++ ++[[package]] ++name = "unicode-xid" ++version = "0.2.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" ++ ++[[package]] ++name = "vec_map" ++version = "0.8.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" ++ ++[[package]] ++name = "version_check" ++version = "0.9.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" ++ ++[[package]] ++name = "wasi" ++version = "0.10.2+wasi-snapshot-preview1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" ++ ++[[package]] ++name = "winapi" ++version = "0.3.9" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" ++dependencies = [ ++ "winapi-i686-pc-windows-gnu", ++ "winapi-x86_64-pc-windows-gnu", ++] ++ ++[[package]] ++name = "winapi-i686-pc-windows-gnu" ++version = "0.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" ++ ++[[package]] ++name = "winapi-x86_64-pc-windows-gnu" ++version = "0.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/pkgs/applications/blockchains/ethabi/default.nix b/pkgs/applications/blockchains/ethabi/default.nix new file mode 100644 index 00000000000..49f34a68bba --- /dev/null +++ b/pkgs/applications/blockchains/ethabi/default.nix @@ -0,0 +1,26 @@ +{ lib, stdenv, fetchFromGitHub, rustPlatform, libiconv }: + +rustPlatform.buildRustPackage rec { + pname = "ethabi"; + version = "13.0.0"; + + src = fetchFromGitHub { + owner = "rust-ethereum"; + repo = "ethabi"; + rev = "v${version}"; + sha256 = "sha256-bl46CSVP1MMYI3tkVAHFrjMFwTt8QoleZCV9pMIMZyc="; + }; + + cargoSha256 = "sha256-Jz0uEP2/ZjLS+GbCp7lNyJQdFDjTSFthjBdC/Z4tkTs="; + + cargoPatches = [ ./add-Cargo-lock.patch ]; + + buildInputs = lib.optional stdenv.isDarwin libiconv; + + meta = with lib; { + description = "Ethereum function call encoding (ABI) utility"; + homepage = "https://github.com/rust-ethereum/ethabi"; + maintainers = [ maintainers.dbrock ]; + license = licenses.asl20; + }; +} diff --git a/pkgs/applications/blockchains/exodus/default.nix b/pkgs/applications/blockchains/exodus/default.nix new file mode 100644 index 00000000000..d13278b7dee --- /dev/null +++ b/pkgs/applications/blockchains/exodus/default.nix @@ -0,0 +1,83 @@ +{ stdenv, lib, fetchurl, unzip, glib, systemd, nss, nspr, gtk3-x11, pango, +atk, cairo, gdk-pixbuf, xorg, xorg_sys_opengl, util-linux, alsa-lib, dbus, at-spi2-atk, +cups, vivaldi-ffmpeg-codecs, libpulseaudio, at-spi2-core, libxkbcommon, mesa }: + +stdenv.mkDerivation rec { + pname = "exodus"; + version = "22.2.25"; + + src = fetchurl { + url = "https://downloads.exodus.io/releases/${pname}-linux-x64-${version}.zip"; + sha256 = "sha256-YbApI9rIk1653Hp3hsXJrxBMpaGn6Wv3WhZiQWAfPQM="; + }; + + sourceRoot = "."; + unpackCmd = '' + ${unzip}/bin/unzip "$src" -x "Exodus*/lib*so" + ''; + + installPhase = '' + mkdir -p $out/bin $out/share/applications + cd Exodus-linux-x64 + cp -r . $out + ln -s $out/Exodus $out/bin/Exodus + ln -s $out/bin/Exodus $out/bin/exodus + ln -s $out/exodus.desktop $out/share/applications + substituteInPlace $out/share/applications/exodus.desktop \ + --replace 'Exec=bash -c "cd \`dirname %k\` && ./Exodus %u"' "Exec=Exodus %u" + ''; + + dontPatchELF = true; + dontBuild = true; + + preFixup = let + libPath = lib.makeLibraryPath [ + glib + nss + nspr + gtk3-x11 + pango + atk + cairo + gdk-pixbuf + xorg.libX11 + xorg.libxcb + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXrender + xorg.libxshmfence + xorg.libXtst + xorg_sys_opengl + util-linux + xorg.libXrandr + xorg.libXScrnSaver + alsa-lib + dbus.lib + at-spi2-atk + at-spi2-core + cups.lib + libpulseaudio + systemd + vivaldi-ffmpeg-codecs + libxkbcommon + mesa + ]; + in '' + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${libPath}" \ + $out/Exodus + ''; + + meta = with lib; { + homepage = "https://www.exodus.io/"; + description = "Top-rated cryptocurrency wallet with Trezor integration and built-in Exchange"; + license = licenses.unfree; + platforms = platforms.linux; + maintainers = with maintainers; [ mmahut rople380 ]; + }; +} diff --git a/pkgs/applications/blockchains/faraday/default.nix b/pkgs/applications/blockchains/faraday/default.nix new file mode 100644 index 00000000000..76e91f2bbe5 --- /dev/null +++ b/pkgs/applications/blockchains/faraday/default.nix @@ -0,0 +1,27 @@ +{ buildGoModule +, fetchFromGitHub +, lib +}: + +buildGoModule rec { + pname = "faraday"; + version = "0.2.5-alpha"; + + src = fetchFromGitHub { + owner = "lightninglabs"; + repo = "faraday"; + rev = "v${version}"; + sha256 = "16mz333a6awii6g46gr597j31jmgws4285s693q0b87fl1ggj2zz"; + }; + + vendorSha256 = "1nclmvypxp5436q6qaagp1k5bfmaia7hsykw47va0pijlsvsbmck"; + + subPackages = [ "cmd/frcli" "cmd/faraday" ]; + + meta = with lib; { + description = "LND Channel Management Tools"; + homepage = "https://github.com/lightninglabs/faraday"; + license = licenses.mit; + maintainers = with maintainers; [ proofofkeags prusnak ]; + }; +} diff --git a/pkgs/applications/blockchains/fulcrum/default.nix b/pkgs/applications/blockchains/fulcrum/default.nix new file mode 100644 index 00000000000..35b5f05b383 --- /dev/null +++ b/pkgs/applications/blockchains/fulcrum/default.nix @@ -0,0 +1,36 @@ +{ lib +, stdenv +, fetchFromGitHub +, pkg-config +, qmake +, python3 +, qtbase +, rocksdb +, zeromq +}: + +stdenv.mkDerivation rec { + pname = "fulcrum"; + version = "1.6.0"; + + src = fetchFromGitHub { + owner = "cculianu"; + repo = "Fulcrum"; + rev = "v${version}"; + sha256 = "sha256-oywxGg+Ss7qBITI2PBXQs5ph7PZbJ3c1smtT/TcVoLI="; + }; + + nativeBuildInputs = [ pkg-config qmake ]; + + dontWrapQtApps = true; # no GUI + + buildInputs = [ python3 qtbase rocksdb zeromq ]; + + meta = with lib; { + description = "Fast & nimble SPV server for Bitcoin Cash & Bitcoin BTC"; + homepage = "https://github.com/cculianu/Fulcrum"; + maintainers = with maintainers; [ prusnak ]; + license = licenses.gpl3Plus; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/go-ethereum/default.nix b/pkgs/applications/blockchains/go-ethereum/default.nix new file mode 100644 index 00000000000..842ebcc69ec --- /dev/null +++ b/pkgs/applications/blockchains/go-ethereum/default.nix @@ -0,0 +1,61 @@ +{ lib, stdenv, buildGoModule, fetchFromGitHub, libobjc, IOKit, nixosTests }: + +let + # A list of binaries to put into separate outputs + bins = [ + "geth" + "clef" + ]; + +in buildGoModule rec { + pname = "go-ethereum"; + version = "1.10.16"; + + src = fetchFromGitHub { + owner = "ethereum"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-l+hxAUw55d9MYLIUdF6qSEIelJQYRCvHyw1yuossmyA="; + }; + + vendorSha256 = "sha256-keeox2d2WEzY9ynEcovPaU95YzVQlbTu1i7PLpjkjZU="; + + doCheck = false; + + outputs = [ "out" ] ++ bins; + + # Move binaries to separate outputs and symlink them back to $out + postInstall = lib.concatStringsSep "\n" ( + builtins.map (bin: "mkdir -p \$${bin}/bin && mv $out/bin/${bin} \$${bin}/bin/ && ln -s \$${bin}/bin/${bin} $out/bin/") bins + ); + + subPackages = [ + "cmd/abidump" + "cmd/abigen" + "cmd/bootnode" + "cmd/checkpoint-admin" + "cmd/clef" + "cmd/devp2p" + "cmd/ethkey" + "cmd/evm" + "cmd/faucet" + "cmd/geth" + "cmd/p2psim" + "cmd/puppeth" + "cmd/rlpdump" + "cmd/utils" + ]; + + # Fix for usb-related segmentation faults on darwin + propagatedBuildInputs = + lib.optionals stdenv.isDarwin [ libobjc IOKit ]; + + passthru.tests = { inherit (nixosTests) geth; }; + + meta = with lib; { + homepage = "https://geth.ethereum.org/"; + description = "Official golang implementation of the Ethereum protocol"; + license = with licenses; [ lgpl3Plus gpl3Plus ]; + maintainers = with maintainers; [ adisbladis lionello RaghavSood ]; + }; +} diff --git a/pkgs/applications/blockchains/groestlcoin/default.nix b/pkgs/applications/blockchains/groestlcoin/default.nix new file mode 100644 index 00000000000..b14076f808d --- /dev/null +++ b/pkgs/applications/blockchains/groestlcoin/default.nix @@ -0,0 +1,93 @@ +{ lib +, stdenv +, fetchurl +, fetchFromGitHub +, autoreconfHook +, pkg-config +, util-linux +, hexdump +, autoSignDarwinBinariesHook +, wrapQtAppsHook ? null +, boost +, libevent +, miniupnpc_2 +, zeromq +, zlib +, db53 +, sqlite +, qrencode +, qtbase ? null +, qttools ? null +, python3 +, withGui ? false +, withWallet ? true +}: + +let + version = "22.0"; + desktop = fetchurl { + url = "https://raw.githubusercontent.com/Groestlcoin/packaging/${version}/debian/groestlcoin-qt.desktop"; + sha256 = "0mxwq4jvcip44a796iwz7n1ljkhl3a4p47z7qlsxcfxw3zmm0k0k"; + }; +in +stdenv.mkDerivation rec { + pname = if withGui then "groestlcoin" else "groestlcoind"; + inherit version; + + src = fetchFromGitHub { + owner = "Groestlcoin"; + repo = "groestlcoin"; + rev = "v${version}"; + sha256 = "104zzcigpk976iqyinjn6mw3l36zb1if7249iz44ds1zaxv3g1v1"; + }; + + nativeBuildInputs = [ autoreconfHook pkg-config ] + ++ 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_2 zeromq zlib ] + ++ lib.optionals withWallet [ db53 sqlite ] + ++ lib.optionals withGui [ qrencode qtbase qttools ]; + + postInstall = lib.optionalString withGui '' + install -Dm644 ${desktop} $out/share/applications/groestlcoin-qt.desktop + substituteInPlace $out/share/applications/groestlcoin-qt.desktop --replace "Icon=groestlcoin128" "Icon=groestlcoin" + install -Dm644 share/pixmaps/groestlcoin256.png $out/share/pixmaps/groestlcoin.png + ''; + + configureFlags = [ + "--with-boost-libdir=${boost.out}/lib" + "--disable-bench" + ] ++ lib.optionals (!withWallet) [ + "--disable-wallet" + ] ++ lib.optionals withGui [ + "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" + ]; + + checkInputs = [ python3 ]; + + checkFlags = [ "LC_ALL=en_US.UTF-8" ] + # QT_PLUGIN_PATH needs to be set when executing QT, which is needed when testing Groestlcoin's GUI. + # See also https://github.com/NixOS/nixpkgs/issues/24256 + ++ lib.optional withGui "QT_PLUGIN_PATH=${qtbase}/${qtbase.qtPluginPrefix}"; + + enableParallelBuilding = true; + + meta = with lib; { + description = "Peer-to-peer electronic cash system"; + longDescription = '' + Groestlcoin 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://groestlcoin.org/"; + downloadPage = "https://github.com/Groestlcoin/groestlcoin/releases/tag/v{version}/"; + maintainers = with maintainers; [ gruve-p ]; + license = licenses.mit; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/ledger-live-desktop/default.nix b/pkgs/applications/blockchains/ledger-live-desktop/default.nix new file mode 100644 index 00000000000..6dc644fbb96 --- /dev/null +++ b/pkgs/applications/blockchains/ledger-live-desktop/default.nix @@ -0,0 +1,49 @@ +{ lib, fetchurl, appimageTools, imagemagick, systemd }: + +let + pname = "ledger-live-desktop"; + version = "2.39.2"; + name = "${pname}-${version}"; + + src = fetchurl { + url = "https://github.com/LedgerHQ/${pname}/releases/download/v${version}/${pname}-${version}-linux-x86_64.AppImage"; + hash = "sha256-zVefF5CsyVVMNffec/xwA3KmMtZepM51C3Xh0ZCGl0c="; + }; + + appimageContents = appimageTools.extractType2 { + inherit name src; + }; + + # Hotplug events from udevd are fired into the kernel, which then re-broadcasts them over a + # special socket, to every libudev client listening for hotplug when the kernel does that. It will + # try to preserve the uid of the sender but a non-root namespace (like the fhs-env) cant map root + # to a uid, for security reasons, so the uid of the sender becomes nobody and libudev actively + # rejects such messages. This patch disables that bit of security in libudev. + # See: https://github.com/NixOS/nixpkgs/issues/116361 + systemdPatched = systemd.overrideAttrs ({ patches ? [ ], ... }: { + patches = patches ++ [ ./systemd.patch ]; + }); +in +appimageTools.wrapType2 rec { + inherit name src; + + extraPkgs = pkgs: [ systemdPatched ]; + + extraInstallCommands = '' + mv $out/bin/${name} $out/bin/${pname} + install -m 444 -D ${appimageContents}/ledger-live-desktop.desktop $out/share/applications/ledger-live-desktop.desktop + install -m 444 -D ${appimageContents}/ledger-live-desktop.png $out/share/icons/hicolor/1024x1024/apps/ledger-live-desktop.png + ${imagemagick}/bin/convert ${appimageContents}/ledger-live-desktop.png -resize 512x512 ledger-live-desktop_512.png + install -m 444 -D ledger-live-desktop_512.png $out/share/icons/hicolor/512x512/apps/ledger-live-desktop.png + substituteInPlace $out/share/applications/ledger-live-desktop.desktop \ + --replace 'Exec=AppRun' 'Exec=${pname}' + ''; + + meta = with lib; { + description = "Wallet app for Ledger Nano S and Ledger Blue"; + homepage = "https://www.ledger.com/live"; + license = licenses.mit; + maintainers = with maintainers; [ andresilva thedavidmeister nyanloutre RaghavSood th0rgal ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/blockchains/ledger-live-desktop/systemd.patch b/pkgs/applications/blockchains/ledger-live-desktop/systemd.patch new file mode 100644 index 00000000000..a70053d7118 --- /dev/null +++ b/pkgs/applications/blockchains/ledger-live-desktop/systemd.patch @@ -0,0 +1,14 @@ +diff --git a/src/libsystemd/sd-device/device-monitor.c b/src/libsystemd/sd-device/device-monitor.c +index fd5900704d..f9106fdbe5 100644 +--- a/src/libsystemd/sd-device/device-monitor.c ++++ b/src/libsystemd/sd-device/device-monitor.c +@@ -445,9 +445,6 @@ int device_monitor_receive_device(sd_device_monitor *m, sd_device **ret) { + "sd-device-monitor: No sender credentials received, message ignored."); + + cred = (struct ucred*) CMSG_DATA(cmsg); +- if (cred->uid != 0) +- return log_debug_errno(SYNTHETIC_ERRNO(EAGAIN), +- "sd-device-monitor: Sender uid="UID_FMT", message ignored.", cred->uid); + + if (streq(buf.raw, "libudev")) { + /* udev message needs proper version magic */ diff --git a/pkgs/applications/blockchains/lightning-loop/default.nix b/pkgs/applications/blockchains/lightning-loop/default.nix new file mode 100644 index 00000000000..2f4caad3255 --- /dev/null +++ b/pkgs/applications/blockchains/lightning-loop/default.nix @@ -0,0 +1,27 @@ +{ buildGoModule +, fetchFromGitHub +, lib +}: + +buildGoModule rec { + pname = "lightning-loop"; + version = "0.17.0-beta"; + + src = fetchFromGitHub { + owner = "lightninglabs"; + repo = "loop"; + rev = "v${version}"; + sha256 = "0hjawagn1dfgj67i52bvf3phvm9f9708z3jqs6cvyz0w7vp107py"; + }; + + vendorSha256 = "1fpc73hwdn3baz5ykrykvqdr5861gj9p6liy8qll5525kdv560f6"; + + subPackages = [ "cmd/loop" "cmd/loopd" ]; + + meta = with lib; { + description = "Lightning Loop Client"; + homepage = "https://github.com/lightninglabs/loop"; + license = licenses.mit; + maintainers = with maintainers; [ proofofkeags prusnak ]; + }; +} diff --git a/pkgs/applications/blockchains/lightning-pool/default.nix b/pkgs/applications/blockchains/lightning-pool/default.nix new file mode 100644 index 00000000000..ccb65fb0fd8 --- /dev/null +++ b/pkgs/applications/blockchains/lightning-pool/default.nix @@ -0,0 +1,27 @@ +{ buildGoModule +, fetchFromGitHub +, lib +}: + +buildGoModule rec { + pname = "lightning-pool"; + version = "0.5.3-alpha"; + + src = fetchFromGitHub { + owner = "lightninglabs"; + repo = "pool"; + rev = "v${version}"; + sha256 = "1nc3hksk9qcxrsyqpz9vcfc8x093rc8yx8ppfk177j9fhdnn8bk7"; + }; + + vendorSha256 = "09yxaa74814l1rp0arqhqpplr2j0p8dj81zqcbxlwp5ckjv9r2za"; + + subPackages = [ "cmd/pool" "cmd/poold" ]; + + meta = with lib; { + description = "Lightning Pool Client"; + homepage = "https://github.com/lightninglabs/pool"; + license = licenses.mit; + maintainers = with maintainers; [ proofofkeags prusnak ]; + }; +} diff --git a/pkgs/applications/blockchains/lightwalletd/default.nix b/pkgs/applications/blockchains/lightwalletd/default.nix new file mode 100644 index 00000000000..43af8491210 --- /dev/null +++ b/pkgs/applications/blockchains/lightwalletd/default.nix @@ -0,0 +1,37 @@ +{ buildGoModule, fetchFromGitHub, lib }: + +buildGoModule rec { + pname = "lightwalletd"; + version = "0.4.9"; + + src = fetchFromGitHub { + owner = "zcash"; + repo = "lightwalletd"; + rev = "v${version}"; + sha256 = "sha256-IksA06V+mP7ZAXXFYLKLacxrDXeMXHAk5w4t7pmobq4="; + }; + + vendorSha256 = null; + + ldflags = [ + "-s" "-w" + "-X github.com/zcash/lightwalletd/common.Version=v${version}" + "-X github.com/zcash/lightwalletd/common.GitCommit=v${version}" + "-X github.com/zcash/lightwalletd/common.BuildDate=1970-01-01" + "-X github.com/zcash/lightwalletd/common.BuildUser=nixbld" + ]; + + postFixup = '' + shopt -s extglob + cd $out/bin + rm !(lightwalletd) + ''; + + meta = with lib; { + description = "A backend service that provides a bandwidth-efficient interface to the Zcash blockchain"; + homepage = "https://github.com/zcash/lightwalletd"; + maintainers = with maintainers; [ centromere ]; + license = licenses.mit; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/litecoin/default.nix b/pkgs/applications/blockchains/litecoin/default.nix new file mode 100644 index 00000000000..c80ef342c75 --- /dev/null +++ b/pkgs/applications/blockchains/litecoin/default.nix @@ -0,0 +1,55 @@ +{ lib, stdenv, mkDerivation, fetchFromGitHub +, pkg-config, autoreconfHook +, openssl, db48, boost, zlib, miniupnpc +, glib, protobuf, util-linux, qrencode +, AppKit +, withGui ? true, libevent +, qtbase, qttools +, zeromq +}: + +with lib; + +mkDerivation rec { + + name = "litecoin" + (toString (optional (!withGui) "d")) + "-" + version; + version = "0.18.1"; + + src = fetchFromGitHub { + owner = "litecoin-project"; + repo = "litecoin"; + rev = "v${version}"; + sha256 = "11753zhyx1kmrlljc6kbjwrcb06dfcrsqvmw3iaki9a132qk6l5c"; + }; + + nativeBuildInputs = [ pkg-config autoreconfHook ]; + buildInputs = [ openssl db48 boost zlib zeromq + miniupnpc glib protobuf util-linux libevent ] + ++ optionals stdenv.isDarwin [ AppKit ] + ++ optionals withGui [ qtbase qttools qrencode ]; + + configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ] + ++ optionals withGui [ + "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" ]; + + enableParallelBuilding = true; + + meta = { + description = "A lite version of Bitcoin using scrypt as a proof-of-work algorithm"; + longDescription= '' + Litecoin is a peer-to-peer Internet currency that enables instant payments + to anyone in the world. It is based on the Bitcoin protocol but differs + from Bitcoin in that it can be efficiently mined with consumer-grade hardware. + Litecoin provides faster transaction confirmations (2.5 minutes on average) + and uses a memory-hard, scrypt-based mining proof-of-work algorithm to target + the regular computers and GPUs most people already have. + The Litecoin network is scheduled to produce 84 million currency units. + ''; + homepage = "https://litecoin.org/"; + platforms = platforms.unix; + license = licenses.mit; + broken = stdenv.isDarwin; + maintainers = with maintainers; [ offline ]; + }; +} diff --git a/pkgs/applications/blockchains/lnd/default.nix b/pkgs/applications/blockchains/lnd/default.nix new file mode 100644 index 00000000000..198fdb0cf43 --- /dev/null +++ b/pkgs/applications/blockchains/lnd/default.nix @@ -0,0 +1,40 @@ +{ buildGoModule +, fetchFromGitHub +, lib +, tags ? [ "autopilotrpc" "signrpc" "walletrpc" "chainrpc" "invoicesrpc" "watchtowerrpc" "routerrpc" "monitoring" "kvdb_postgres" "kvdb_etcd" ] +}: + +buildGoModule rec { + pname = "lnd"; + version = "0.14.2-beta"; + + src = fetchFromGitHub { + owner = "lightningnetwork"; + repo = "lnd"; + rev = "v${version}"; + sha256 = "sha256-JOKitxxWcTlGlxYR1XpySZlI2fT9jgBrOxNUwT/sqdQ="; + }; + + vendorSha256 = "sha256-shDmJcEyobY7Ih1MHMEY2GQnzAffsH/y4J1bme/bT7I="; + + subPackages = [ "cmd/lncli" "cmd/lnd" ]; + + preBuild = let + buildVars = { + RawTags = lib.concatStringsSep "," tags; + GoVersion = "$(go version | egrep -o 'go[0-9]+[.][^ ]*')"; + }; + buildVarsFlags = lib.concatStringsSep " " (lib.mapAttrsToList (k: v: "-X github.com/lightningnetwork/lnd/build.${k}=${v}") buildVars); + in + lib.optionalString (tags != []) '' + buildFlagsArray+=("-tags=${lib.concatStringsSep " " tags}") + buildFlagsArray+=("-ldflags=${buildVarsFlags}") + ''; + + meta = with lib; { + description = "Lightning Network Daemon"; + homepage = "https://github.com/lightningnetwork/lnd"; + license = licenses.mit; + maintainers = with maintainers; [ cypherpunk2140 prusnak ]; + }; +} diff --git a/pkgs/applications/blockchains/lndconnect/default.nix b/pkgs/applications/blockchains/lndconnect/default.nix new file mode 100644 index 00000000000..64a8da8b971 --- /dev/null +++ b/pkgs/applications/blockchains/lndconnect/default.nix @@ -0,0 +1,25 @@ +{ lib, buildGoPackage, fetchFromGitHub }: +buildGoPackage rec { + pname = "lndconnect"; + version = "0.2.0"; + + goPackagePath = "github.com/LN-Zap/lndconnect"; + + src = fetchFromGitHub { + owner = "LN-Zap"; + repo = pname; + rev = "v${version}"; + sha256 = "0zp23vp4i4csc6x1b6z39rqcmknxd508x6clr8ckdj2fwjwkyf5a"; + }; + + goDeps = ./deps.nix; + + meta = with lib; { + description = "Generate QRCode to connect apps to lnd Resources"; + license = licenses.mit; + homepage = "https://github.com/LN-Zap/lndconnect"; + maintainers = [ maintainers.d-xo ]; + platforms = platforms.linux; + }; +} + diff --git a/pkgs/applications/blockchains/lndconnect/deps.nix b/pkgs/applications/blockchains/lndconnect/deps.nix new file mode 100644 index 00000000000..5a31f0d5705 --- /dev/null +++ b/pkgs/applications/blockchains/lndconnect/deps.nix @@ -0,0 +1,129 @@ +[ + { + goPackagePath = "github.com/Baozisoftware/qrcode-terminal-go"; + fetch = { + type = "git"; + url = "https://github.com/Baozisoftware/qrcode-terminal-go"; + rev = "c0650d8dff0f053901ff16185217b950d5e7743c"; + sha256 = "166h9zy9y7ygayhybg7d080hpdcf1mvkf3rwnq5lqg8i3cg71s7b"; + }; + } + { + goPackagePath = "github.com/btcsuite/btcd"; + fetch = { + type = "git"; + url = "https://github.com/btcsuite/btcd"; + rev = "e9a51e8dcd673c563a549676ebd4384b0318a9b7"; + sha256 = "053pdhhycls7cpygg4rhc0y2p937ni4cgxylgxd1zpwffqdjsxrs"; + }; + } + { + goPackagePath = "github.com/btcsuite/btclog"; + fetch = { + type = "git"; + url = "https://github.com/btcsuite/btclog"; + rev = "84c8d2346e9fc8c7b947e243b9c24e6df9fd206a"; + sha256 = "02dl46wcnfpg9sqvg0ipipkpnd7lrf4fnvb9zy56jqa7mfcwc7wk"; + }; + } + { + goPackagePath = "github.com/btcsuite/btcutil"; + fetch = { + type = "git"; + url = "https://github.com/btcsuite/btcutil"; + rev = "063c4115b3a9a7201e82447875383890698abcb6"; + sha256 = "12dpy5ipmd751xb71hcmrl9xyl89r5rflnrvypnz1irairfqwjwm"; + }; + } + { + goPackagePath = "github.com/glendc/go-external-ip"; + fetch = { + type = "git"; + url = "https://github.com/glendc/go-external-ip"; + rev = "c872357d968e33d5d9c47ea2c603f3b411150ecc"; + sha256 = "1h9cdhab4fapa2p1r8sgl1pxv4qi1zskw8x0pj93a81y03zzr2l1"; + }; + } + { + goPackagePath = "github.com/jessevdk/go-flags"; + fetch = { + type = "git"; + url = "https://github.com/jessevdk/go-flags"; + rev = "c17162fe8fd74f119ff938c5c67af63e3bac5ded"; + sha256 = "0byp3f79b0399n7g6nm59afb6gj9cknfqgfqadvpppv7lvnd34jf"; + }; + } + { + goPackagePath = "github.com/lightningnetwork/lnd"; + fetch = { + type = "git"; + url = "https://github.com/lightningnetwork/lnd"; + rev = "fd962d322ae2a913cc357dbb63382f22a9a0a6ce"; + sha256 = "0yj2vqb9qg5v0rbchkpwhhw51rp31z76zchhhbc837sz8l8lryra"; + }; + } + { + goPackagePath = "github.com/mattn/go-colorable"; + fetch = { + type = "git"; + url = "https://github.com/mattn/go-colorable"; + rev = "f6c00982823144337e56cdb71c712eaac151d29c"; + sha256 = "08y5c01bvyqxraj3wc0di80gbp87178rsshb74x0p3m7wwfv82l3"; + }; + } + { + goPackagePath = "github.com/mattn/go-isatty"; + fetch = { + type = "git"; + url = "https://github.com/mattn/go-isatty"; + rev = "cb30d6282491c185f77d9bec5d25de1bb61a06bc"; + sha256 = "0v59mv94acd2m72q8adhigxkx1vn38l5h0d8hp0nxga2v9f3v8kd"; + }; + } + { + goPackagePath = "github.com/miekg/dns"; + fetch = { + type = "git"; + url = "https://github.com/miekg/dns"; + rev = "7a5f1127f7f4e461b7400d6a9df1bc523e7448fd"; + sha256 = "1xwg6zwlxwkm1x121b3idir76h7wr9wmcdmg4vgj9hma903s63md"; + }; + } + { + goPackagePath = "github.com/skip2/go-qrcode"; + fetch = { + type = "git"; + url = "https://github.com/skip2/go-qrcode"; + rev = "da1b6568686e89143e94f980a98bc2dbd5537f13"; + sha256 = "0pghd6y2x8a5fqy4rjn4d8j5jcslb236naycdza5an7vyvinsgs9"; + }; + } + { + goPackagePath = "golang.org/x/crypto"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/crypto"; + rev = "5c72a883971a4325f8c62bf07b6d38c20ea47a6a"; + sha256 = "1cimmqpajys001x6yq8ycklc4w34y7iwrksv7ayv7m7fgzhcjn3d"; + }; + } + { + goPackagePath = "golang.org/x/net"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/net"; + rev = "05aa5d4ee32165add31ddef9d5d3946713e5dc5e"; + sha256 = "1v532mdb32h2gan6lc9ssya2v1lk6nzyzqvxn5nkbxij9x4v1jkl"; + }; + } + { + goPackagePath = "golang.org/x/sys"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/sys"; + rev = "9d91bd62050c7b3011b7df0d2a4daa0042684420"; + sha256 = "0d2jjd7r0zwakd1d2g2qm59w6jc6sgg0sal5gc626i8nn9adj2jg"; + }; + } +] + diff --git a/pkgs/applications/blockchains/lndmanage/default.nix b/pkgs/applications/blockchains/lndmanage/default.nix new file mode 100644 index 00000000000..ebbe653c96b --- /dev/null +++ b/pkgs/applications/blockchains/lndmanage/default.nix @@ -0,0 +1,44 @@ +{ lib, fetchFromGitHub, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "lndmanage"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "bitromortac"; + repo = pname; + rev = "v${version}"; + hash = "sha256-wPr/R+WGACyhv2Qh9JeLJwvr2vQfxpqj2XjEkrRoSX4="; + }; + + propagatedBuildInputs = with python3Packages; [ + cycler + decorator + googleapis-common-protos + grpcio + grpcio-tools + kiwisolver + networkx + numpy + protobuf + pyparsing + python-dateutil + six + pygments + ]; + + preBuild = '' + substituteInPlace setup.py --replace '==' '>=' + ''; + + preCheck = '' + export HOME=$(mktemp -d) + ''; + + meta = with lib; { + description = "Channel management tool for lightning network daemon (LND) operators"; + homepage = "https://github.com/bitromortac/lndmanage"; + license = licenses.mit; + maintainers = with maintainers; [ mmilata ]; + }; +} diff --git a/pkgs/applications/blockchains/masari/default.nix b/pkgs/applications/blockchains/masari/default.nix new file mode 100644 index 00000000000..bf995da36af --- /dev/null +++ b/pkgs/applications/blockchains/masari/default.nix @@ -0,0 +1,25 @@ +{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, unbound, openssl, boost +, lmdb, miniupnpc, readline }: + +stdenv.mkDerivation rec { + pname = "masari"; + version = "0.1.4.0"; + + src = fetchFromGitHub { + owner = "masari-project"; + repo = "masari"; + rev = "v${version}"; + sha256 = "0l6i21wkq5f6z8xr756i7vqgkzk7lixaa31ydy34fkfcqxppgxz3"; + }; + + nativeBuildInputs = [ cmake pkg-config ]; + buildInputs = [ boost miniupnpc openssl lmdb unbound readline ]; + + meta = with lib; { + description = "scalability-focused, untraceable, secure, and fungible cryptocurrency using the RingCT protocol"; + homepage = "https://www.getmasari.org/"; + license = licenses.bsd3; + maintainers = with maintainers; [ fpletz ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/miniscript/default.nix b/pkgs/applications/blockchains/miniscript/default.nix new file mode 100644 index 00000000000..0520101c4cc --- /dev/null +++ b/pkgs/applications/blockchains/miniscript/default.nix @@ -0,0 +1,29 @@ +{ stdenv, lib, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "miniscript"; + version = "unstable-2020-12-01"; + + src = fetchFromGitHub { + owner = "sipa"; + repo = pname; + rev = "02682a398a35b410571b10cde7f39837141ddad6"; + sha256 = "079jz4g88cfzfm9a6ykby9haxwcs033c1288mgr8cl2hw4qd2sjl"; + }; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin + cp miniscript $out/bin/miniscript + runHook postInstall + ''; + + meta = with lib; { + description = "Compiler and inspector for the miniscript Bitcoin policy language"; + longDescription = "Miniscript is a language for writing (a subset of) Bitcoin Scripts in a structured way, enabling analysis, composition, generic signing and more."; + homepage = "http://bitcoin.sipa.be/miniscript/"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ RaghavSood jb55 ]; + }; +} diff --git a/pkgs/applications/blockchains/monero-cli/default.nix b/pkgs/applications/blockchains/monero-cli/default.nix new file mode 100644 index 00000000000..40ce59f92d6 --- /dev/null +++ b/pkgs/applications/blockchains/monero-cli/default.nix @@ -0,0 +1,60 @@ +{ lib, stdenv, fetchFromGitHub, fetchpatch +, cmake, pkg-config +, boost, miniupnpc, openssl, unbound +, zeromq, pcsclite, readline, libsodium, hidapi +, randomx, rapidjson +, CoreData, IOKit, PCSC +, trezorSupport ? true, libusb1, protobuf, python3 +}: + +stdenv.mkDerivation rec { + pname = "monero-cli"; + version = "0.17.3.0"; + + src = fetchFromGitHub { + owner = "monero-project"; + repo = "monero"; + rev = "v${version}"; + sha256 = "1spsf7m3x4psp9s7mivr6x4886jnbq4i8ll2dl8bv5bsdhcd3pjm"; + fetchSubmodules = true; + }; + + patches = [ + ./use-system-libraries.patch + ]; + + postPatch = '' + # remove vendored libraries + rm -r external/{miniupnp,randomx,rapidjson,unbound} + # export patched source for monero-gui + cp -r . $source + ''; + + nativeBuildInputs = [ cmake pkg-config ]; + + buildInputs = [ + boost miniupnpc openssl unbound + zeromq pcsclite readline + libsodium hidapi randomx rapidjson + protobuf + ] ++ lib.optionals stdenv.isDarwin [ IOKit CoreData PCSC ] + ++ lib.optionals trezorSupport [ libusb1 protobuf python3 ]; + + cmakeFlags = [ + "-DCMAKE_BUILD_TYPE=Release" + "-DUSE_DEVICE_TREZOR=ON" + "-DBUILD_GUI_DEPS=ON" + "-DReadline_ROOT_DIR=${readline.dev}" + "-DRandomX_ROOT_DIR=${randomx}" + ] ++ lib.optional stdenv.isDarwin "-DBoost_USE_MULTITHREADED=OFF"; + + outputs = [ "out" "source" ]; + + meta = with lib; { + description = "Private, secure, untraceable currency"; + homepage = "https://getmonero.org/"; + license = licenses.bsd3; + platforms = platforms.all; + maintainers = with maintainers; [ rnhmjoj ]; + }; +} diff --git a/pkgs/applications/blockchains/monero-cli/use-system-libraries.patch b/pkgs/applications/blockchains/monero-cli/use-system-libraries.patch new file mode 100644 index 00000000000..5d3e3561d55 --- /dev/null +++ b/pkgs/applications/blockchains/monero-cli/use-system-libraries.patch @@ -0,0 +1,52 @@ +diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt +index 5b7f69a56..5536debe8 100644 +--- a/external/CMakeLists.txt ++++ b/external/CMakeLists.txt +@@ -36,22 +36,9 @@ + # others. + + find_package(Miniupnpc REQUIRED) +- +-message(STATUS "Using in-tree miniupnpc") +-set(UPNPC_NO_INSTALL TRUE CACHE BOOL "Disable miniupnp installation" FORCE) +-add_subdirectory(miniupnp/miniupnpc) +-set_property(TARGET libminiupnpc-static PROPERTY FOLDER "external") +-set_property(TARGET libminiupnpc-static PROPERTY POSITION_INDEPENDENT_CODE ON) +-if(MSVC) +- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -wd4244 -wd4267") +-elseif(NOT MSVC) +- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-undef -Wno-unused-result -Wno-unused-value") +-endif() +-if(CMAKE_SYSTEM_NAME MATCHES "NetBSD") +- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -D_NETBSD_SOURCE") +-endif() +- +-set(UPNP_LIBRARIES "libminiupnpc-static" PARENT_SCOPE) ++set(UPNP_STATIC false PARENT_SCOPE) ++set(UPNP_INCLUDE ${MINIUPNP_INCLUDE_DIR} PARENT_SCOPE) ++set(UPNP_LIBRARIES ${MINIUPNP_LIBRARY} PARENT_SCOPE) + + find_package(Unbound) + +@@ -69,4 +56,3 @@ endif() + add_subdirectory(db_drivers) + add_subdirectory(easylogging++) + add_subdirectory(qrcodegen) +-add_subdirectory(randomx EXCLUDE_FROM_ALL) +diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl +index d4b39869c..13071d898 100644 +--- a/src/p2p/net_node.inl ++++ b/src/p2p/net_node.inl +@@ -61,9 +61,9 @@ + #include "cryptonote_core/cryptonote_core.h" + #include "net/parse.h" + +-#include <miniupnp/miniupnpc/miniupnpc.h> +-#include <miniupnp/miniupnpc/upnpcommands.h> +-#include <miniupnp/miniupnpc/upnperrors.h> ++#include <miniupnpc/miniupnpc.h> ++#include <miniupnpc/upnpcommands.h> ++#include <miniupnpc/upnperrors.h> + + #undef MONERO_DEFAULT_LOG_CATEGORY + #define MONERO_DEFAULT_LOG_CATEGORY "net.p2p" diff --git a/pkgs/applications/blockchains/monero-gui/default.nix b/pkgs/applications/blockchains/monero-gui/default.nix new file mode 100644 index 00000000000..dfc5f8b326c --- /dev/null +++ b/pkgs/applications/blockchains/monero-gui/default.nix @@ -0,0 +1,103 @@ +{ lib, stdenv, wrapQtAppsHook, makeDesktopItem +, fetchFromGitHub +, cmake, qttools, pkg-config +, qtbase, qtdeclarative, qtgraphicaleffects +, qtmultimedia, qtxmlpatterns +, qtquickcontrols, qtquickcontrols2 +, qtmacextras +, monero-cli, miniupnpc, unbound, readline +, boost, libunwind, libsodium, pcsclite +, randomx, zeromq, libgcrypt, libgpg-error +, hidapi, rapidjson, quirc +, trezorSupport ? true, libusb1, protobuf, python3 +}: + +stdenv.mkDerivation rec { + pname = "monero-gui"; + version = "0.17.3.1"; + + src = fetchFromGitHub { + owner = "monero-project"; + repo = "monero-gui"; + rev = "v${version}"; + sha256 = "sha256-RrchaqFmL4W9F8DhZfvxm7mHMkx/OX8K9e8uNFXWubo="; + }; + + nativeBuildInputs = [ + cmake pkg-config wrapQtAppsHook + (lib.getDev qttools) + ]; + + buildInputs = [ + qtbase qtdeclarative qtgraphicaleffects + qtmultimedia qtquickcontrols qtquickcontrols2 + qtxmlpatterns + monero-cli miniupnpc unbound readline + randomx libgcrypt libgpg-error + boost libunwind libsodium pcsclite + zeromq hidapi rapidjson quirc + ] ++ lib.optionals trezorSupport [ libusb1 protobuf python3 ] + ++ lib.optionals stdenv.isDarwin [ qtmacextras ]; + + postUnpack = '' + # copy monero sources here + # (needs to be writable) + cp -r ${monero-cli.source}/* source/monero + chmod -R +w source/monero + ''; + + patches = [ + ./move-log-file.patch + ./use-system-libquirc.patch + ]; + + postPatch = '' + # set monero-gui version + substituteInPlace src/version.js.in \ + --replace '@VERSION_TAG_GUI@' '${version}' + + # use monerod from the monero package + substituteInPlace src/daemon/DaemonManager.cpp \ + --replace 'QApplication::applicationDirPath() + "' '"${monero-cli}/bin' + + # 1: only build external deps, *not* the full monero + # 2: use nixpkgs libraries + substituteInPlace CMakeLists.txt \ + --replace 'add_subdirectory(monero)' \ + 'add_subdirectory(monero EXCLUDE_FROM_ALL)' \ + --replace 'add_subdirectory(external)' "" + ''; + + cmakeFlags = [ "-DARCH=default" ]; + + desktopItem = makeDesktopItem { + name = "monero-wallet-gui"; + exec = "monero-wallet-gui"; + icon = "monero"; + desktopName = "Monero"; + genericName = "Wallet"; + categories = [ "Network" "Utility" ]; + }; + + postInstall = '' + # install desktop entry + install -Dm644 -t $out/share/applications \ + ${desktopItem}/share/applications/* + + # install icons + for n in 16 24 32 48 64 96 128 256; do + size=$n"x"$n + install -Dm644 \ + -t $out/share/icons/hicolor/$size/apps/monero.png \ + $src/images/appicons/$size.png + done; + ''; + + meta = with lib; { + description = "Private, secure, untraceable currency"; + homepage = "https://getmonero.org/"; + license = licenses.bsd3; + platforms = platforms.all; + maintainers = with maintainers; [ rnhmjoj ]; + }; +} diff --git a/pkgs/applications/blockchains/monero-gui/move-log-file.patch b/pkgs/applications/blockchains/monero-gui/move-log-file.patch new file mode 100644 index 00000000000..6d3313624e3 --- /dev/null +++ b/pkgs/applications/blockchains/monero-gui/move-log-file.patch @@ -0,0 +1,14 @@ +diff --git a/src/main/main.cpp b/src/main/main.cpp +index c5210e5f..45794d72 100644 +--- a/src/main/main.cpp ++++ b/src/main/main.cpp +@@ -220,6 +220,9 @@ int main(int argc, char *argv[]) + QCommandLineOption logPathOption(QStringList() << "l" << "log-file", + QCoreApplication::translate("main", "Log to specified file"), + QCoreApplication::translate("main", "file")); ++ logPathOption.setDefaultValue( ++ QStandardPaths::writableLocation(QStandardPaths::CacheLocation) ++ + "/monero-wallet-gui.log"); + + QCommandLineOption testQmlOption("test-qml"); + testQmlOption.setFlags(QCommandLineOption::HiddenFromHelp); diff --git a/pkgs/applications/blockchains/monero-gui/use-system-libquirc.patch b/pkgs/applications/blockchains/monero-gui/use-system-libquirc.patch new file mode 100644 index 00000000000..b60057294b1 --- /dev/null +++ b/pkgs/applications/blockchains/monero-gui/use-system-libquirc.patch @@ -0,0 +1,37 @@ +diff --git a/src/QR-Code-scanner/CMakeLists.txt b/src/QR-Code-scanner/CMakeLists.txt +index 15e288df..2e9b3305 100644 +--- a/src/QR-Code-scanner/CMakeLists.txt ++++ b/src/QR-Code-scanner/CMakeLists.txt +@@ -1,11 +1,18 @@ ++find_library(QUIRC_LIBRARY quirc REQUIRED) ++find_path(QUIRC_INCLUDE_DIR quirc.h REQUIRED) ++ + add_library(qrdecoder STATIC + Decoder.cpp + ) ++target_include_directories(qrdecoder ++ PUBLIC ++ ${QUIRC_INCLUDE_DIR} ++) + target_link_libraries(qrdecoder + PUBLIC + Qt5::Gui + PRIVATE +- quirc ++ ${QUIRC_LIBRARY} + ) + + if(WITH_SCANNER) +diff --git a/src/QR-Code-scanner/Decoder.cpp b/src/QR-Code-scanner/Decoder.cpp +index 1bb99140..353ca189 100644 +--- a/src/QR-Code-scanner/Decoder.cpp ++++ b/src/QR-Code-scanner/Decoder.cpp +@@ -30,7 +30,7 @@ + + #include <limits> + +-#include "quirc.h" ++#include <quirc.h> + + QrDecoder::QrDecoder() + : m_qr(quirc_new()) diff --git a/pkgs/applications/blockchains/mycrypto/default.nix b/pkgs/applications/blockchains/mycrypto/default.nix new file mode 100644 index 00000000000..ee7960a843b --- /dev/null +++ b/pkgs/applications/blockchains/mycrypto/default.nix @@ -0,0 +1,59 @@ +{ lib, appimageTools, fetchurl, makeDesktopItem +, gsettings-desktop-schemas, gtk3 +}: + +let + pname = "MyCrypto"; + version = "1.7.17"; + sha256 = "20eb48989b5ae5e60e438eff6830ac79a0d89ac26dff058097260e747e866444"; # Taken from release's checksums.txt.gpg + name = "${pname}-${version}"; + + src = fetchurl { + url = "https://github.com/mycryptohq/mycrypto/releases/download/${version}/linux-x86-64_${version}_MyCrypto.AppImage"; + inherit sha256; + }; + + appimageContents = appimageTools.extractType2 { + inherit name src; + }; + + desktopItem = makeDesktopItem { + name = pname; + desktopName = pname; + comment = "MyCrypto is a free, open-source interface for interacting with the blockchain"; + exec = pname; + icon = "mycrypto"; + categories = [ "Finance" ]; + }; + +in appimageTools.wrapType2 rec { + inherit name src; + + profile = '' + export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS + ''; + + multiPkgs = null; # no p32bit needed + extraPkgs = appimageTools.defaultFhsEnvArgs.multiPkgs; + + extraInstallCommands = '' + mv $out/bin/{${name},${pname}} + + mkdir -p $out/share + cp -rt $out/share ${desktopItem}/share/applications ${appimageContents}/usr/share/icons + chmod -R +w $out/share + mv $out/share/icons/hicolor/{0x0,256x256} + ''; + + meta = with lib; { + description = "A free, open-source interface for interacting with the blockchain"; + longDescription = '' + MyCrypto is an open-source, client-side tool for generating ether wallets, + handling ERC-20 tokens, and interacting with the blockchain more easily. + ''; + homepage = "https://mycrypto.com"; + license = licenses.mit; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ oxalica ]; + }; +} diff --git a/pkgs/applications/blockchains/namecoin/default.nix b/pkgs/applications/blockchains/namecoin/default.nix new file mode 100644 index 00000000000..1851c581c9a --- /dev/null +++ b/pkgs/applications/blockchains/namecoin/default.nix @@ -0,0 +1,48 @@ +{ lib, stdenv, fetchFromGitHub, openssl, boost, libevent, autoreconfHook, db4, miniupnpc, eject, pkg-config, qt4, protobuf, qrencode, hexdump +, withGui }: + +with lib; +stdenv.mkDerivation rec { + version = "nc22.0"; + name = "namecoin" + toString (optional (!withGui) "d") + "-" + version; + + src = fetchFromGitHub { + owner = "namecoin"; + repo = "namecoin-core"; + rev = version; + sha256 = "sha256-Z3CLDe0c4IpFPPTie8yoh0kcuvGmiegSgl4ITNSDkgY="; + }; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + hexdump + ]; + + buildInputs = [ + openssl + boost + libevent + db4 + miniupnpc + eject + ] ++ optionals withGui [ + qt4 + protobuf + qrencode + ]; + + enableParallelBuilding = true; + + configureFlags = [ + "--with-boost-libdir=${boost.out}/lib" + ]; + + meta = { + description = "Decentralized open source information registration and transfer system based on the Bitcoin cryptocurrency"; + homepage = "https://namecoin.org"; + license = licenses.mit; + maintainers = with maintainers; [ infinisil ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/nano-wallet/default.nix b/pkgs/applications/blockchains/nano-wallet/default.nix new file mode 100644 index 00000000000..e13a77c7d24 --- /dev/null +++ b/pkgs/applications/blockchains/nano-wallet/default.nix @@ -0,0 +1,59 @@ +{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, wrapQtAppsHook, boost, libGL +, qtbase, python3 }: + +stdenv.mkDerivation rec { + + pname = "nano-wallet"; + version = "21.3"; + + src = fetchFromGitHub { + owner = "nanocurrency"; + repo = "nano-node"; + rev = "V${version}"; + sha256 = "0f6chl5vrzdr4w8g3nivfxk3qm6m11js401998afnhz0xaysm4pm"; + fetchSubmodules = true; + }; + + cmakeFlags = let + options = { + PYTHON_EXECUTABLE = "${python3.interpreter}"; + NANO_SHARED_BOOST = "ON"; + BOOST_ROOT = boost; + RAIBLOCKS_GUI = "ON"; + RAIBLOCKS_TEST = "ON"; + Qt5_DIR = "${qtbase.dev}/lib/cmake/Qt5"; + Qt5Core_DIR = "${qtbase.dev}/lib/cmake/Qt5Core"; + Qt5Gui_INCLUDE_DIRS = "${qtbase.dev}/include/QtGui"; + Qt5Widgets_INCLUDE_DIRS = "${qtbase.dev}/include/QtWidgets"; + }; + optionToFlag = name: value: "-D${name}=${value}"; + in lib.mapAttrsToList optionToFlag options; + + nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ]; + buildInputs = [ boost libGL qtbase ]; + + strictDeps = true; + + buildPhase = '' + runHook preBuild + make nano_wallet + runHook postBuild + ''; + + checkPhase = '' + runHook preCheck + ./core_test + runHook postCheck + ''; + + meta = { + description = "Wallet for Nano cryptocurrency"; + homepage = "https://nano.org/en/wallet/"; + license = lib.licenses.bsd2; + # Fails on Darwin. See: + # https://github.com/NixOS/nixpkgs/pull/39295#issuecomment-386800962 + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ jluttine ]; + }; + +} diff --git a/pkgs/applications/blockchains/nbxplorer/default.nix b/pkgs/applications/blockchains/nbxplorer/default.nix new file mode 100644 index 00000000000..5b25afd587b --- /dev/null +++ b/pkgs/applications/blockchains/nbxplorer/default.nix @@ -0,0 +1,30 @@ +{ lib, buildDotnetModule, fetchFromGitHub, dotnetCorePackages }: + +buildDotnetModule rec { + pname = "nbxplorer"; + version = "2.2.20"; + + src = fetchFromGitHub { + owner = "dgarage"; + repo = "NBXplorer"; + rev = "v${version}"; + sha256 = "sha256-C3REnfecNwf3dtk6aLYAEsedHRlIrQZAokXtf6KI8U0="; + }; + + projectFile = "NBXplorer/NBXplorer.csproj"; + nugetDeps = ./deps.nix; + + dotnet-sdk = dotnetCorePackages.sdk_6_0; + dotnet-runtime = dotnetCorePackages.aspnetcore_6_0; + + postFixup = '' + mv $out/bin/{NBXplorer,nbxplorer} + ''; + + meta = with lib; { + description = "Minimalist UTXO tracker for HD Cryptocurrency Wallets"; + maintainers = with maintainers; [ kcalvinalvin earvstedt ]; + license = licenses.mit; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/nbxplorer/deps.nix b/pkgs/applications/blockchains/nbxplorer/deps.nix new file mode 100644 index 00000000000..e794e0a976b --- /dev/null +++ b/pkgs/applications/blockchains/nbxplorer/deps.nix @@ -0,0 +1,1082 @@ +{ fetchNuGet }: [ + (fetchNuGet { + pname = "DBTrie"; + version = "1.0.39"; + sha256 = "0kbvl3kf73hrh1w2n3d2wshlxpqsv1pwydhwv2wxigmvs70fn1xp"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.JsonPatch"; + version = "6.0.1"; + sha256 = "0rsqng2b8a3zaha9c2x1195das5wwvmnz31xf14ancgha4lxq68r"; + }) + (fetchNuGet { + pname = "Microsoft.AspNetCore.Mvc.NewtonsoftJson"; + version = "6.0.1"; + sha256 = "179b2774s68im71r32lv4nydcp586x86zggs8ml6jcfjrd9fs5b1"; + }) + (fetchNuGet { + pname = "Microsoft.Azure.Amqp"; + version = "2.4.9"; + sha256 = "15kvklhfl17713kwin8p71lcxq2jx87bk1d8gsl597z3w6l4cqma"; + }) + (fetchNuGet { + pname = "Microsoft.Azure.ServiceBus"; + version = "4.2.1"; + sha256 = "0akxqds078p7djd5g95i9dh4wrlfarabkq2ybn614cqdgl4z0is5"; + }) + (fetchNuGet { + pname = "Microsoft.Azure.Services.AppAuthentication"; + version = "1.0.3"; + sha256 = "0as64agcsilwgbvwx7iw3abdxyp9cbfpczbagjz49mqmmgnqp899"; + }) + (fetchNuGet { + pname = "Microsoft.CodeCoverage"; + version = "16.11.0"; + sha256 = "0f41l3kks6wk5vjaxpjh8m2flnrvlbvqgqflamhv8rfz4y8ifgdv"; + }) + (fetchNuGet { + pname = "Microsoft.CSharp"; + version = "4.0.1"; + sha256 = "0zxc0apx1gcx361jlq8smc9pfdgmyjh6hpka8dypc9w23nlsh6yj"; + }) + (fetchNuGet { + pname = "Microsoft.CSharp"; + version = "4.3.0"; + sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb"; + }) + (fetchNuGet { + pname = "Microsoft.CSharp"; + version = "4.7.0"; + sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.Abstractions"; + version = "2.1.0"; + sha256 = "03gzlr3z9j1xnr1k6y91zgxpz3pj27i3zsvjwj7i8jqnlqmk7pxd"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.EnvironmentVariables"; + version = "2.1.0"; + sha256 = "0xx3idb1l5y1da5zynlys5gyarijmw5pc9hgci8xdxbrcv6rzbjb"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.FileExtensions"; + version = "2.1.0"; + sha256 = "1lz2xwm63clbh9dfhmygbqvcp4dsrwh5jihv82dmqd5h7lqngl40"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration.Ini"; + version = "2.1.0"; + sha256 = "0bchsljywcq36si4zs2dcx2gj8x98ww93dh2bx2z6x5ilxyjnfip"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Configuration"; + version = "2.1.0"; + sha256 = "04rjl38wlr1jjjpbzgf64jp0ql6sbzbil0brwq9mgr3hdgwd7vx2"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.FileProviders.Abstractions"; + version = "2.1.0"; + sha256 = "1sxls5f5cgb0wr8cwb05skqmz074683hrhmd3hhq6m5dasnzb8n3"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.FileProviders.Physical"; + version = "2.1.0"; + sha256 = "1firpsl5bk219i9gdfgiqw1zm68146h1dzx9hvawfpw9slfaa56w"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.FileSystemGlobbing"; + version = "2.1.0"; + sha256 = "1d2622qp22x1cnlwycnzjbc3sgi9jria26fk78zwzsa08npa3avv"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging.Abstractions"; + version = "1.0.0"; + sha256 = "1sh9bidmhy32gkz6fkli79mxv06546ybrzppfw5v2aq0bda1ghka"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Logging.Abstractions"; + version = "2.1.0"; + sha256 = "1gvgif1wcx4k6pv7gc00qv1hid945jdywy1s50s33q0hfd91hbnj"; + }) + (fetchNuGet { + pname = "Microsoft.Extensions.Primitives"; + version = "2.1.0"; + sha256 = "1r9gzwdfmb8ysnc4nzmyz5cyar1lw0qmizsvrsh252nhlyg06nmb"; + }) + (fetchNuGet { + pname = "Microsoft.IdentityModel.Clients.ActiveDirectory"; + version = "3.14.2"; + sha256 = "0g9a2z1qjxd71lqqghp0a542xk9jkvz951bbnnnw43is4hlnqncq"; + }) + (fetchNuGet { + pname = "Microsoft.IdentityModel.JsonWebTokens"; + version = "5.4.0"; + sha256 = "0a5fn0p10dmkwa7vvbq28xw78aq33xm7c82l7vhla95n0lr178n8"; + }) + (fetchNuGet { + pname = "Microsoft.IdentityModel.Logging"; + version = "5.4.0"; + sha256 = "1idlpyg3q3syam6aflfbnsa7iql685mjralr1cnfpryf00lm59v0"; + }) + (fetchNuGet { + pname = "Microsoft.IdentityModel.Tokens"; + version = "5.4.0"; + sha256 = "0gpdh5rs0p97zm41pphha8n3ccd50b1iszikj3917f111khpw8l0"; + }) + (fetchNuGet { + pname = "Microsoft.NET.Test.Sdk"; + version = "16.11.0"; + sha256 = "1a2y6vw6p9xp3w72zq2lwrjl8bxv87s9d7zd2dh4zwbzh1c5slxl"; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Platforms"; + version = "1.0.1"; + sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr"; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Platforms"; + version = "1.0.2"; + sha256 = "17rrj0awknxx6rpdxr7yijdxqdmbbpdlcf2nsadjbd4d2gw7dck0"; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Platforms"; + version = "1.1.0"; + sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Targets"; + version = "1.0.1"; + sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p"; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Targets"; + version = "1.1.0"; + sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; + }) + (fetchNuGet { + pname = "Microsoft.TestPlatform.ObjectModel"; + version = "16.11.0"; + sha256 = "1fc0ghk1cny4i8w43b94pxhl0srxisv6kaflkkp30ncsa9szhkxh"; + }) + (fetchNuGet { + pname = "Microsoft.TestPlatform.TestHost"; + version = "16.11.0"; + sha256 = "0hp1vndf2jhyg1f3miq4g2068z5kpfzy6nmswm25vymghxp1ws4k"; + }) + (fetchNuGet { + pname = "Microsoft.Win32.Primitives"; + version = "4.0.1"; + sha256 = "1n8ap0cmljbqskxpf8fjzn7kh1vvlndsa75k01qig26mbw97k2q7"; + }) + (fetchNuGet { + pname = "Microsoft.Win32.Primitives"; + version = "4.3.0"; + sha256 = "0j0c1wj4ndj21zsgivsc24whiya605603kxrbiw6wkfdync464wq"; + }) + (fetchNuGet { + pname = "Microsoft.Win32.Registry"; + version = "4.3.0"; + sha256 = "1gxyzxam8163vk1kb6xzxjj4iwspjsz9zhgn1w9rjzciphaz0ig7"; + }) + (fetchNuGet { + pname = "NBitcoin.Altcoins"; + version = "3.0.8"; + sha256 = "1qck2nfj8494pxwzhccslq4cbypsgnwcv3nvz24czsd87wn8n618"; + }) + (fetchNuGet { + pname = "NBitcoin.TestFramework"; + version = "3.0.6"; + sha256 = "0yw382238rjv0qmhz1xlb5v696s8sxbjf839c2ck6dqd947q403w"; + }) + (fetchNuGet { + pname = "NBitcoin"; + version = "6.0.15"; + sha256 = "038dcl2k88w4cijws3pdnjflgy4lmqx70z0l7yqz355kmxjz8ain"; + }) + (fetchNuGet { + pname = "NBitcoin"; + version = "6.0.18"; + sha256 = "1dr669h68cx6yfzr3n97yzzwbgnsv5g2008diyxngdjm55nh3q9s"; + }) + (fetchNuGet { + pname = "NETStandard.Library"; + version = "1.6.1"; + sha256 = "1z70wvsx2d847a2cjfii7b83pjfs34q05gb037fdjikv5kbagml8"; + }) + (fetchNuGet { + pname = "NETStandard.Library"; + version = "2.0.3"; + sha256 = "1fn9fxppfcg4jgypp2pmrpr6awl3qz1xmnri0cygpkwvyx27df1y"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json.Bson"; + version = "1.0.2"; + sha256 = "0c27bhy9x3c2n26inq32kmp6drpm71n6mqnmcr19wrlcaihglj35"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json"; + version = "10.0.3"; + sha256 = "06vy67bkshclpz69kps4vgzc9h2cgg41c8vlqmdbwclfky7c4haq"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json"; + version = "11.0.2"; + sha256 = "1784xi44f4k8v1fr696hsccmwpy94bz7kixxqlri98zhcxn406b2"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json"; + version = "13.0.1"; + sha256 = "0fijg0w6iwap8gvzyjnndds0q4b8anwxxvik7y8vgq97dram4srb"; + }) + (fetchNuGet { + pname = "Newtonsoft.Json"; + version = "9.0.1"; + sha256 = "0mcy0i7pnfpqm4pcaiyzzji4g0c8i3a5gjz28rrr28110np8304r"; + }) + (fetchNuGet { + pname = "NicolasDorier.CommandLine.Configuration"; + version = "1.0.0.3"; + sha256 = "0al0pd4zhjpmn8m208xjmy17cbyab68grzdvzr2lhsckwkl6b1jg"; + }) + (fetchNuGet { + pname = "NicolasDorier.CommandLine"; + version = "1.0.0.2"; + sha256 = "08a9l18zkhcfa6f56xqylzvmqjzgxsmgkpm2r3ckvxfyml6w0qyy"; + }) + (fetchNuGet { + pname = "NicolasDorier.StandardConfiguration"; + version = "1.0.0.18"; + sha256 = "0lgssxafv6cqlw21fb79fm0fcln0clgsk6zadcwrnjv9vampfw7b"; + }) + (fetchNuGet { + pname = "NuGet.Frameworks"; + version = "5.0.0"; + sha256 = "18ijvmj13cwjdrrm52c8fpq021531zaz4mj4b4zapxaqzzxf2qjr"; + }) + (fetchNuGet { + pname = "RabbitMQ.Client"; + version = "5.1.2"; + sha256 = "195nxmnva1z2p0ahvn0kswv4d39f5bdy2sl3cxcvfziamc21xrmd"; + }) + (fetchNuGet { + pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; + }) + (fetchNuGet { + pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; + }) + (fetchNuGet { + pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; + }) + (fetchNuGet { + pname = "runtime.native.System.IO.Compression"; + version = "4.3.0"; + sha256 = "1vvivbqsk6y4hzcid27pqpm5bsi6sc50hvqwbcx8aap5ifrxfs8d"; + }) + (fetchNuGet { + pname = "runtime.native.System.Net.Http"; + version = "4.0.1"; + sha256 = "1hgv2bmbaskx77v8glh7waxws973jn4ah35zysnkxmf0196sfxg6"; + }) + (fetchNuGet { + pname = "runtime.native.System.Net.Http"; + version = "4.3.0"; + sha256 = "1n6rgz5132lcibbch1qlf0g9jk60r0kqv087hxc0lisy50zpm7kk"; + }) + (fetchNuGet { + pname = "runtime.native.System.Net.Security"; + version = "4.3.0"; + sha256 = "0dnqjhw445ay3chpia9p6vy4w2j6s9vy3hxszqvdanpvvyaxijr3"; + }) + (fetchNuGet { + pname = "runtime.native.System.Security.Cryptography.Apple"; + version = "4.3.0"; + sha256 = "1b61p6gw1m02cc1ry996fl49liiwky6181dzr873g9ds92zl326q"; + }) + (fetchNuGet { + pname = "runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; + }) + (fetchNuGet { + pname = "runtime.native.System.Security.Cryptography"; + version = "4.0.0"; + sha256 = "0k57aa2c3b10wl3hfqbgrl7xq7g8hh3a3ir44b31dn5p61iiw3z9"; + }) + (fetchNuGet { + pname = "runtime.native.System"; + version = "4.0.0"; + sha256 = "1ppk69xk59ggacj9n7g6fyxvzmk1g5p4fkijm0d7xqfkig98qrkf"; + }) + (fetchNuGet { + pname = "runtime.native.System"; + version = "4.3.0"; + sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; + }) + (fetchNuGet { + pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; + }) + (fetchNuGet { + pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; + }) + (fetchNuGet { + pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple"; + version = "4.3.0"; + sha256 = "10yc8jdrwgcl44b4g93f1ds76b176bajd3zqi2faf5rvh1vy9smi"; + }) + (fetchNuGet { + pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; + }) + (fetchNuGet { + pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; + }) + (fetchNuGet { + pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; + }) + (fetchNuGet { + pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; + }) + (fetchNuGet { + pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; + }) + (fetchNuGet { + pname = "System.AppContext"; + version = "4.3.0"; + sha256 = "1649qvy3dar900z3g817h17nl8jp4ka5vcfmsr05kh0fshn7j3ya"; + }) + (fetchNuGet { + pname = "System.Buffers"; + version = "4.3.0"; + sha256 = "0fgns20ispwrfqll4q1zc1waqcmylb3zc50ys9x8zlwxh9pmd9jy"; + }) + (fetchNuGet { + pname = "System.Buffers"; + version = "4.4.0"; + sha256 = "183f8063w8zqn99pv0ni0nnwh7fgx46qzxamwnans55hhs2l0g19"; + }) + (fetchNuGet { + pname = "System.Buffers"; + version = "4.5.0"; + sha256 = "1ywfqn4md6g3iilpxjn5dsr0f5lx6z0yvhqp4pgjcamygg73cz2c"; + }) + (fetchNuGet { + pname = "System.Collections.Concurrent"; + version = "4.0.12"; + sha256 = "07y08kvrzpak873pmyxs129g1ch8l27zmg51pcyj2jvq03n0r0fc"; + }) + (fetchNuGet { + pname = "System.Collections.Concurrent"; + version = "4.3.0"; + sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8"; + }) + (fetchNuGet { + pname = "System.Collections.NonGeneric"; + version = "4.3.0"; + sha256 = "07q3k0hf3mrcjzwj8fwk6gv3n51cb513w4mgkfxzm3i37sc9kz7k"; + }) + (fetchNuGet { + pname = "System.Collections.Specialized"; + version = "4.3.0"; + sha256 = "1sdwkma4f6j85m3dpb53v9vcgd0zyc9jb33f8g63byvijcj39n20"; + }) + (fetchNuGet { + pname = "System.Collections"; + version = "4.0.11"; + sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6"; + }) + (fetchNuGet { + pname = "System.Collections"; + version = "4.3.0"; + sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; + }) + (fetchNuGet { + pname = "System.ComponentModel.Primitives"; + version = "4.3.0"; + sha256 = "1svfmcmgs0w0z9xdw2f2ps05rdxmkxxhf0l17xk9l1l8xfahkqr0"; + }) + (fetchNuGet { + pname = "System.ComponentModel.TypeConverter"; + version = "4.3.0"; + sha256 = "17ng0p7v3nbrg3kycz10aqrrlw4lz9hzhws09pfh8gkwicyy481x"; + }) + (fetchNuGet { + pname = "System.ComponentModel"; + version = "4.3.0"; + sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb"; + }) + (fetchNuGet { + pname = "System.Console"; + version = "4.3.0"; + sha256 = "1flr7a9x920mr5cjsqmsy9wgnv3lvd0h1g521pdr1lkb2qycy7ay"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Debug"; + version = "4.0.11"; + sha256 = "0gmjghrqmlgzxivd2xl50ncbglb7ljzb66rlx8ws6dv8jm0d5siz"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Debug"; + version = "4.3.0"; + sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; + }) + (fetchNuGet { + pname = "System.Diagnostics.DiagnosticSource"; + version = "4.3.0"; + sha256 = "0z6m3pbiy0qw6rn3n209rrzf9x1k4002zh90vwcrsym09ipm2liq"; + }) + (fetchNuGet { + pname = "System.Diagnostics.DiagnosticSource"; + version = "4.5.1"; + sha256 = "1j8dgilsgd0n7y87wq1cdlnwck96wijhbyhdp4d01l1gzm3074c1"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Process"; + version = "4.3.0"; + sha256 = "0g4prsbkygq8m21naqmcp70f24a1ksyix3dihb1r1f71lpi3cfj7"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Tools"; + version = "4.0.1"; + sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Tools"; + version = "4.3.0"; + sha256 = "0in3pic3s2ddyibi8cvgl102zmvp9r9mchh82ns9f0ms4basylw1"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Tracing"; + version = "4.1.0"; + sha256 = "1d2r76v1x610x61ahfpigda89gd13qydz6vbwzhpqlyvq8jj6394"; + }) + (fetchNuGet { + pname = "System.Diagnostics.Tracing"; + version = "4.3.0"; + sha256 = "1m3bx6c2s958qligl67q7grkwfz3w53hpy7nc97mh6f7j5k168c4"; + }) + (fetchNuGet { + pname = "System.Dynamic.Runtime"; + version = "4.0.11"; + sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9"; + }) + (fetchNuGet { + pname = "System.Dynamic.Runtime"; + version = "4.3.0"; + sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk"; + }) + (fetchNuGet { + pname = "System.Globalization.Calendars"; + version = "4.0.1"; + sha256 = "0bv0alrm2ck2zk3rz25lfyk9h42f3ywq77mx1syl6vvyncnpg4qh"; + }) + (fetchNuGet { + pname = "System.Globalization.Calendars"; + version = "4.3.0"; + sha256 = "1xwl230bkakzzkrggy1l1lxmm3xlhk4bq2pkv790j5lm8g887lxq"; + }) + (fetchNuGet { + pname = "System.Globalization.Extensions"; + version = "4.3.0"; + sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls"; + }) + (fetchNuGet { + pname = "System.Globalization"; + version = "4.0.11"; + sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d"; + }) + (fetchNuGet { + pname = "System.Globalization"; + version = "4.3.0"; + sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; + }) + (fetchNuGet { + pname = "System.IdentityModel.Tokens.Jwt"; + version = "5.4.0"; + sha256 = "05f91fjn054bwphmbbg7c38ipl4i81v73j232jgcq6y16dx6ifyc"; + }) + (fetchNuGet { + pname = "System.IO.Compression.ZipFile"; + version = "4.3.0"; + sha256 = "1yxy5pq4dnsm9hlkg9ysh5f6bf3fahqqb6p8668ndy5c0lk7w2ar"; + }) + (fetchNuGet { + pname = "System.IO.Compression"; + version = "4.3.0"; + sha256 = "084zc82yi6yllgda0zkgl2ys48sypiswbiwrv7irb3r0ai1fp4vz"; + }) + (fetchNuGet { + pname = "System.IO.FileSystem.Primitives"; + version = "4.0.1"; + sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612"; + }) + (fetchNuGet { + pname = "System.IO.FileSystem.Primitives"; + version = "4.3.0"; + sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c"; + }) + (fetchNuGet { + pname = "System.IO.FileSystem"; + version = "4.0.1"; + sha256 = "0kgfpw6w4djqra3w5crrg8xivbanh1w9dh3qapb28q060wb9flp1"; + }) + (fetchNuGet { + pname = "System.IO.FileSystem"; + version = "4.3.0"; + sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw"; + }) + (fetchNuGet { + pname = "System.IO"; + version = "4.1.0"; + sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp"; + }) + (fetchNuGet { + pname = "System.IO"; + version = "4.3.0"; + sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; + }) + (fetchNuGet { + pname = "System.Linq.Expressions"; + version = "4.1.0"; + sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg"; + }) + (fetchNuGet { + pname = "System.Linq.Expressions"; + version = "4.3.0"; + sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv"; + }) + (fetchNuGet { + pname = "System.Linq"; + version = "4.1.0"; + sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5"; + }) + (fetchNuGet { + pname = "System.Linq"; + version = "4.3.0"; + sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; + }) + (fetchNuGet { + pname = "System.Memory"; + version = "4.5.0"; + sha256 = "1layqpcx1q4l805fdnj2dfqp6ncx2z42ca06rgsr6ikq4jjgbv30"; + }) + (fetchNuGet { + pname = "System.Net.Http"; + version = "4.3.0"; + sha256 = "1i4gc757xqrzflbk7kc5ksn20kwwfjhw9w7pgdkn19y3cgnl302j"; + }) + (fetchNuGet { + pname = "System.Net.NameResolution"; + version = "4.3.0"; + sha256 = "15r75pwc0rm3vvwsn8rvm2krf929mjfwliv0mpicjnii24470rkq"; + }) + (fetchNuGet { + pname = "System.Net.Primitives"; + version = "4.0.11"; + sha256 = "10xzzaynkzkakp7jai1ik3r805zrqjxiz7vcagchyxs2v26a516r"; + }) + (fetchNuGet { + pname = "System.Net.Primitives"; + version = "4.3.0"; + sha256 = "0c87k50rmdgmxx7df2khd9qj7q35j9rzdmm2572cc55dygmdk3ii"; + }) + (fetchNuGet { + pname = "System.Net.Security"; + version = "4.3.0"; + sha256 = "1aa5igz31ivk6kpgsrwck3jccab7wd88wr52lddmgypmbh9mmf87"; + }) + (fetchNuGet { + pname = "System.Net.Sockets"; + version = "4.3.0"; + sha256 = "1ssa65k6chcgi6mfmzrznvqaxk8jp0gvl77xhf1hbzakjnpxspla"; + }) + (fetchNuGet { + pname = "System.Net.WebHeaderCollection"; + version = "4.0.1"; + sha256 = "10bxpxj80c4z00z3ksrfswspq9qqsw8jwxcbzvymzycb97m9b55q"; + }) + (fetchNuGet { + pname = "System.Net.WebHeaderCollection"; + version = "4.3.0"; + sha256 = "0ms3ddjv1wn8sqa5qchm245f3vzzif6l6fx5k92klqpn7zf4z562"; + }) + (fetchNuGet { + pname = "System.Net.WebSockets.Client"; + version = "4.0.2"; + sha256 = "0p8m9h94h9za8281hngpi6awka6v26s1gkk0npmxzqq4ilas6b4s"; + }) + (fetchNuGet { + pname = "System.Net.WebSockets.Client"; + version = "4.3.2"; + sha256 = "103y8lfsfa5xd1sqmq9sml4qyp4rij2i3fnnw119h119hb04l0rk"; + }) + (fetchNuGet { + pname = "System.Net.WebSockets"; + version = "4.0.0"; + sha256 = "04jdhq9dp43x1m6hddn06sq74skc50i1yk6hip0224pj6fwxa4k2"; + }) + (fetchNuGet { + pname = "System.Net.WebSockets"; + version = "4.3.0"; + sha256 = "1gfj800078kggcgl0xyl00a6y5k4wwh2k2qm69rjy22wbmq7fy4p"; + }) + (fetchNuGet { + pname = "System.Numerics.Vectors"; + version = "4.4.0"; + sha256 = "0rdvma399070b0i46c4qq1h2yvjj3k013sqzkilz4bz5cwmx1rba"; + }) + (fetchNuGet { + pname = "System.ObjectModel"; + version = "4.0.12"; + sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj"; + }) + (fetchNuGet { + pname = "System.ObjectModel"; + version = "4.3.0"; + sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2"; + }) + (fetchNuGet { + pname = "System.Private.DataContractSerialization"; + version = "4.1.1"; + sha256 = "1xk9wvgzipssp1393nsg4n16zbr5481k03nkdlj954hzq5jkx89r"; + }) + (fetchNuGet { + pname = "System.Private.DataContractSerialization"; + version = "4.3.0"; + sha256 = "06fjipqvjp559rrm825x6pll8gimdj9x1n3larigh5hsm584gndw"; + }) + (fetchNuGet { + pname = "System.Reflection.Emit.ILGeneration"; + version = "4.0.1"; + sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0"; + }) + (fetchNuGet { + pname = "System.Reflection.Emit.ILGeneration"; + version = "4.3.0"; + sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"; + }) + (fetchNuGet { + pname = "System.Reflection.Emit.Lightweight"; + version = "4.0.1"; + sha256 = "1s4b043zdbx9k39lfhvsk68msv1nxbidhkq6nbm27q7sf8xcsnxr"; + }) + (fetchNuGet { + pname = "System.Reflection.Emit.Lightweight"; + version = "4.3.0"; + sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c"; + }) + (fetchNuGet { + pname = "System.Reflection.Emit"; + version = "4.0.1"; + sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp"; + }) + (fetchNuGet { + pname = "System.Reflection.Emit"; + version = "4.3.0"; + sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"; + }) + (fetchNuGet { + pname = "System.Reflection.Extensions"; + version = "4.0.1"; + sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn"; + }) + (fetchNuGet { + pname = "System.Reflection.Extensions"; + version = "4.3.0"; + sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq"; + }) + (fetchNuGet { + pname = "System.Reflection.Metadata"; + version = "1.6.0"; + sha256 = "1wdbavrrkajy7qbdblpbpbalbdl48q3h34cchz24gvdgyrlf15r4"; + }) + (fetchNuGet { + pname = "System.Reflection.Primitives"; + version = "4.0.1"; + sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28"; + }) + (fetchNuGet { + pname = "System.Reflection.Primitives"; + version = "4.3.0"; + sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; + }) + (fetchNuGet { + pname = "System.Reflection.TypeExtensions"; + version = "4.1.0"; + sha256 = "1bjli8a7sc7jlxqgcagl9nh8axzfl11f4ld3rjqsyxc516iijij7"; + }) + (fetchNuGet { + pname = "System.Reflection.TypeExtensions"; + version = "4.3.0"; + sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; + }) + (fetchNuGet { + pname = "System.Reflection"; + version = "4.1.0"; + sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9"; + }) + (fetchNuGet { + pname = "System.Reflection"; + version = "4.3.0"; + sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; + }) + (fetchNuGet { + pname = "System.Resources.ResourceManager"; + version = "4.0.1"; + sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi"; + }) + (fetchNuGet { + pname = "System.Resources.ResourceManager"; + version = "4.3.0"; + sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; + }) + (fetchNuGet { + pname = "System.Runtime.CompilerServices.Unsafe"; + version = "4.5.0"; + sha256 = "17labczwqk3jng3kkky73m0jhi8wc21vbl7cz5c0hj2p1dswin43"; + }) + (fetchNuGet { + pname = "System.Runtime.Extensions"; + version = "4.1.0"; + sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z"; + }) + (fetchNuGet { + pname = "System.Runtime.Extensions"; + version = "4.3.0"; + sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; + }) + (fetchNuGet { + pname = "System.Runtime.Handles"; + version = "4.0.1"; + sha256 = "1g0zrdi5508v49pfm3iii2hn6nm00bgvfpjq1zxknfjrxxa20r4g"; + }) + (fetchNuGet { + pname = "System.Runtime.Handles"; + version = "4.3.0"; + sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; + }) + (fetchNuGet { + pname = "System.Runtime.InteropServices.RuntimeInformation"; + version = "4.3.0"; + sha256 = "0q18r1sh4vn7bvqgd6dmqlw5v28flbpj349mkdish2vjyvmnb2ii"; + }) + (fetchNuGet { + pname = "System.Runtime.InteropServices"; + version = "4.1.0"; + sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1"; + }) + (fetchNuGet { + pname = "System.Runtime.InteropServices"; + version = "4.3.0"; + sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; + }) + (fetchNuGet { + pname = "System.Runtime.Numerics"; + version = "4.0.1"; + sha256 = "1y308zfvy0l5nrn46mqqr4wb4z1xk758pkk8svbz8b5ij7jnv4nn"; + }) + (fetchNuGet { + pname = "System.Runtime.Numerics"; + version = "4.3.0"; + sha256 = "19rav39sr5dky7afygh309qamqqmi9kcwvz3i0c5700v0c5cg61z"; + }) + (fetchNuGet { + pname = "System.Runtime.Serialization.Formatters"; + version = "4.3.0"; + sha256 = "114j35n8gcvn3sqv9ar36r1jjq0y1yws9r0yk8i6wm4aq7n9rs0m"; + }) + (fetchNuGet { + pname = "System.Runtime.Serialization.Json"; + version = "4.0.2"; + sha256 = "08ypbzs0sb302ga04ds5b2wxa2gg0q50zpa0nvc87ipjhs0v66dn"; + }) + (fetchNuGet { + pname = "System.Runtime.Serialization.Primitives"; + version = "4.1.1"; + sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k"; + }) + (fetchNuGet { + pname = "System.Runtime.Serialization.Primitives"; + version = "4.3.0"; + sha256 = "01vv2p8h4hsz217xxs0rixvb7f2xzbh6wv1gzbfykcbfrza6dvnf"; + }) + (fetchNuGet { + pname = "System.Runtime.Serialization.Xml"; + version = "4.3.0"; + sha256 = "1b2cxl2h7s8cydbhbmxhvvq071n9ck61g08npg4gyw7nvg37rfni"; + }) + (fetchNuGet { + pname = "System.Runtime"; + version = "4.1.0"; + sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m"; + }) + (fetchNuGet { + pname = "System.Runtime"; + version = "4.3.0"; + sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; + }) + (fetchNuGet { + pname = "System.Security.Claims"; + version = "4.3.0"; + sha256 = "0jvfn7j22l3mm28qjy3rcw287y9h65ha4m940waaxah07jnbzrhn"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Algorithms"; + version = "4.2.0"; + sha256 = "148s9g5dgm33ri7dnh19s4lgnlxbpwvrw2jnzllq2kijj4i4vs85"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Algorithms"; + version = "4.3.0"; + sha256 = "03sq183pfl5kp7gkvq77myv7kbpdnq3y0xj7vi4q1kaw54sny0ml"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Cng"; + version = "4.2.0"; + sha256 = "118jijz446kix20blxip0f0q8mhsh9bz118mwc2ch1p6g7facpzc"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Cng"; + version = "4.3.0"; + sha256 = "1k468aswafdgf56ab6yrn7649kfqx2wm9aslywjam1hdmk5yypmv"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Csp"; + version = "4.0.0"; + sha256 = "1cwv8lqj8r15q81d2pz2jwzzbaji0l28xfrpw29kdpsaypm92z2q"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Csp"; + version = "4.3.0"; + sha256 = "1x5wcrddf2s3hb8j78cry7yalca4lb5vfnkrysagbn6r9x6xvrx1"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Encoding"; + version = "4.0.0"; + sha256 = "0a8y1a5wkmpawc787gfmnrnbzdgxmx1a14ax43jf3rj9gxmy3vk4"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Encoding"; + version = "4.3.0"; + sha256 = "1jr6w70igqn07k5zs1ph6xja97hxnb3mqbspdrff6cvssgrixs32"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.OpenSsl"; + version = "4.0.0"; + sha256 = "16sx3cig3d0ilvzl8xxgffmxbiqx87zdi8fc73i3i7zjih1a7f4q"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0givpvvj8yc7gv4lhb6s1prq6p2c4147204a0wib89inqzd87gqc"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Primitives"; + version = "4.0.0"; + sha256 = "0i7cfnwph9a10bm26m538h5xcr8b36jscp9sy1zhgifksxz4yixh"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.Primitives"; + version = "4.3.0"; + sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.X509Certificates"; + version = "4.1.0"; + sha256 = "0clg1bv55mfv5dq00m19cp634zx6inm31kf8ppbq1jgyjf2185dh"; + }) + (fetchNuGet { + pname = "System.Security.Cryptography.X509Certificates"; + version = "4.3.0"; + sha256 = "0valjcz5wksbvijylxijjxb1mp38mdhv03r533vnx1q3ikzdav9h"; + }) + (fetchNuGet { + pname = "System.Security.Principal.Windows"; + version = "4.3.0"; + sha256 = "00a0a7c40i3v4cb20s2cmh9csb5jv2l0frvnlzyfxh848xalpdwr"; + }) + (fetchNuGet { + pname = "System.Security.Principal"; + version = "4.3.0"; + sha256 = "12cm2zws06z4lfc4dn31iqv7072zyi4m910d4r6wm8yx85arsfxf"; + }) + (fetchNuGet { + pname = "System.Text.Encoding.Extensions"; + version = "4.0.11"; + sha256 = "08nsfrpiwsg9x5ml4xyl3zyvjfdi4mvbqf93kjdh11j4fwkznizs"; + }) + (fetchNuGet { + pname = "System.Text.Encoding.Extensions"; + version = "4.3.0"; + sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy"; + }) + (fetchNuGet { + pname = "System.Text.Encoding"; + version = "4.0.11"; + sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw"; + }) + (fetchNuGet { + pname = "System.Text.Encoding"; + version = "4.3.0"; + sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; + }) + (fetchNuGet { + pname = "System.Text.RegularExpressions"; + version = "4.1.0"; + sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7"; + }) + (fetchNuGet { + pname = "System.Text.RegularExpressions"; + version = "4.3.0"; + sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l"; + }) + (fetchNuGet { + pname = "System.Threading.Channels"; + version = "4.7.1"; + sha256 = "038fyrriypwzsj5fwgnkw79hm5ya0x63r724yizgahbxf512chr2"; + }) + (fetchNuGet { + pname = "System.Threading.Tasks.Extensions"; + version = "4.0.0"; + sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr"; + }) + (fetchNuGet { + pname = "System.Threading.Tasks.Extensions"; + version = "4.3.0"; + sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z"; + }) + (fetchNuGet { + pname = "System.Threading.Tasks"; + version = "4.0.11"; + sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5"; + }) + (fetchNuGet { + pname = "System.Threading.Tasks"; + version = "4.3.0"; + sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; + }) + (fetchNuGet { + pname = "System.Threading.Thread"; + version = "4.3.0"; + sha256 = "0y2xiwdfcph7znm2ysxanrhbqqss6a3shi1z3c779pj2s523mjx4"; + }) + (fetchNuGet { + pname = "System.Threading.ThreadPool"; + version = "4.3.0"; + sha256 = "027s1f4sbx0y1xqw2irqn6x161lzj8qwvnh2gn78ciiczdv10vf1"; + }) + (fetchNuGet { + pname = "System.Threading.Timer"; + version = "4.3.0"; + sha256 = "1nx773nsx6z5whv8kaa1wjh037id2f1cxhb69pvgv12hd2b6qs56"; + }) + (fetchNuGet { + pname = "System.Threading"; + version = "4.0.11"; + sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls"; + }) + (fetchNuGet { + pname = "System.Threading"; + version = "4.3.0"; + sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; + }) + (fetchNuGet { + pname = "System.Xml.ReaderWriter"; + version = "4.0.11"; + sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5"; + }) + (fetchNuGet { + pname = "System.Xml.ReaderWriter"; + version = "4.3.0"; + sha256 = "0c47yllxifzmh8gq6rq6l36zzvw4kjvlszkqa9wq3fr59n0hl3s1"; + }) + (fetchNuGet { + pname = "System.Xml.XDocument"; + version = "4.0.11"; + sha256 = "0n4lvpqzy9kc7qy1a4acwwd7b7pnvygv895az5640idl2y9zbz18"; + }) + (fetchNuGet { + pname = "System.Xml.XDocument"; + version = "4.3.0"; + sha256 = "08h8fm4l77n0nd4i4fk2386y809bfbwqb7ih9d7564ifcxr5ssxd"; + }) + (fetchNuGet { + pname = "System.Xml.XmlDocument"; + version = "4.0.1"; + sha256 = "0ihsnkvyc76r4dcky7v3ansnbyqjzkbyyia0ir5zvqirzan0bnl1"; + }) + (fetchNuGet { + pname = "System.Xml.XmlDocument"; + version = "4.3.0"; + sha256 = "0bmz1l06dihx52jxjr22dyv5mxv6pj4852lx68grjm7bivhrbfwi"; + }) + (fetchNuGet { + pname = "System.Xml.XmlSerializer"; + version = "4.0.11"; + sha256 = "01nzc3gdslw90qfykq4qzr2mdnqxjl4sj0wp3fixiwdmlmvpib5z"; + }) + (fetchNuGet { + pname = "System.Xml.XmlSerializer"; + version = "4.3.0"; + sha256 = "07pa4sx196vxkgl3csvdmw94nydlsm9ir38xxcs84qjn8cycd912"; + }) + (fetchNuGet { + pname = "xunit.abstractions"; + version = "2.0.3"; + sha256 = "00wl8qksgkxld76fgir3ycc5rjqv1sqds6x8yx40927q5py74gfh"; + }) + (fetchNuGet { + pname = "xunit.analyzers"; + version = "0.10.0"; + sha256 = "15n02q3akyqbvkp8nq75a8rd66d4ax0rx8fhdcn8j78pi235jm7j"; + }) + (fetchNuGet { + pname = "xunit.assert"; + version = "2.4.1"; + sha256 = "1imynzh80wxq2rp9sc4gxs4x1nriil88f72ilhj5q0m44qqmqpc6"; + }) + (fetchNuGet { + pname = "xunit.core"; + version = "2.4.1"; + sha256 = "1nnb3j4kzmycaw1g76ii4rfqkvg6l8gqh18falwp8g28h802019a"; + }) + (fetchNuGet { + pname = "xunit.extensibility.core"; + version = "2.4.1"; + sha256 = "103qsijmnip2pnbhciqyk2jyhdm6snindg5z2s57kqf5pcx9a050"; + }) + (fetchNuGet { + pname = "xunit.extensibility.execution"; + version = "2.4.1"; + sha256 = "1pbilxh1gp2ywm5idfl0klhl4gb16j86ib4x83p8raql1dv88qia"; + }) + (fetchNuGet { + pname = "xunit.runner.visualstudio"; + version = "2.4.3"; + sha256 = "0j1d0rbcm7pp6dypi61sjxp8l22sv261252z55b243l39jgv2rp3"; + }) + (fetchNuGet { + pname = "xunit"; + version = "2.4.1"; + sha256 = "0xf3kaywpg15flqaqfgywqyychzk15kz0kz34j21rcv78q9ywq20"; + }) +] diff --git a/pkgs/applications/blockchains/nbxplorer/update.sh b/pkgs/applications/blockchains/nbxplorer/update.sh new file mode 100755 index 00000000000..caab20c928f --- /dev/null +++ b/pkgs/applications/blockchains/nbxplorer/update.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -euo pipefail + +scriptDir=$(cd "${BASH_SOURCE[0]%/*}" && pwd) + +getVersionFromTags=1 "$scriptDir"/util/update-common.sh nbxplorer "$scriptDir"/deps.nix '' diff --git a/pkgs/applications/blockchains/nbxplorer/util/create-deps.sh b/pkgs/applications/blockchains/nbxplorer/util/create-deps.sh new file mode 100755 index 00000000000..2d3f41f2586 --- /dev/null +++ b/pkgs/applications/blockchains/nbxplorer/util/create-deps.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p dotnet-sdk_3 +set -euo pipefail + +# Writes deps for dotnet package in $pkgSrc to $depsFile. +# Expects $pkgSrc to contain a single .sln file. + +pkgSrc=$1 +depsFile=$(realpath "$2") +customFlags=$3 + +sln=$(cd "$pkgSrc"; find * -maxdepth 0 -name '*.sln' | head -1) +[[ $sln ]] || { echo "No .sln file in $pkgSrc" ; exit 1; } + +tmpdir=$(mktemp -d /tmp/$pkgName-src.XXX) +echo "Using tmp dir: $tmpdir" +cp -rT "$pkgSrc" "$tmpdir" +chmod -R +w "$tmpdir" + +pushd "$tmpdir" > /dev/null +mkdir home +echo "Running dotnet restore for $sln" +HOME=home DOTNET_CLI_TELEMETRY_OPTOUT=1 \ + dotnet restore $customFlags -v normal --no-cache "$sln" > restore_log + +echo "{ fetchNuGet }: [" > "$depsFile" +while read pkgSpec; do + { read pname; read version; } < <( + # Ignore build version part: 1.0.0-beta2+77df2220 -> 1.0.0-beta2 + sed -nE 's/.*<id>([^<]*).*/\1/p; s/.*<version>([^<+]*).*/\1/p' "$pkgSpec" + ) + sha256=$(nix-hash --type sha256 --flat --base32 "$(dirname "$pkgSpec")"/*.nupkg) + cat >> "$depsFile" <<EOF + (fetchNuGet { + pname = "$pname"; + version = "$version"; + sha256 = "$sha256"; + }) +EOF +done < <(find home/.nuget/packages -name '*.nuspec' | LC_ALL=C sort) +echo "]" >> "$depsFile" + +echo "Created $depsFile" + +popd > /dev/null +rm -r $tmpdir diff --git a/pkgs/applications/blockchains/nbxplorer/util/update-common.sh b/pkgs/applications/blockchains/nbxplorer/util/update-common.sh new file mode 100755 index 00000000000..1ca9ef3444b --- /dev/null +++ b/pkgs/applications/blockchains/nbxplorer/util/update-common.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p coreutils curl jq common-updater-scripts dotnet-sdk_3 git gnupg nixFlakes +set -euo pipefail + +# This script uses the following env vars: +# getVersionFromTags +# refetch + +pkgName=$1 +depsFile=$2 +customFlags=$3 + +: ${getVersionFromTags:=} +: ${refetch:=} + +scriptDir=$(cd "${BASH_SOURCE[0]%/*}" && pwd) +nixpkgs=$(realpath "$scriptDir"/../../../../..) + +evalNixpkgs() { + nix eval --impure --raw --expr "(with import \"$nixpkgs\" {}; $1)" +} + +getRepo() { + url=$(evalNixpkgs $pkgName.src.meta.homepage) + echo $(basename $(dirname $url))/$(basename $url) +} + +getLatestVersionTag() { + "$nixpkgs"/pkgs/common-updater/scripts/list-git-tags --url=https://github.com/$(getRepo) 2>/dev/null \ + | sort -V | tail -1 | sed 's|^v||' +} + +oldVersion=$(evalNixpkgs "$pkgName.version") +if [[ $getVersionFromTags ]]; then + newVersion=$(getLatestVersionTag) +else + newVersion=$(curl -s "https://api.github.com/repos/$(getRepo)/releases" | jq -r '.[0].name') +fi + +if [[ $newVersion == $oldVersion && ! $refetch ]]; then + echo "nixpkgs already has the latest version $newVersion" + echo "Run this script with env var refetch=1 to re-verify the content hash via GPG" + echo "and to recreate $(basename "$depsFile"). This is useful for reviewing a version update." + exit 0 +fi + +# Fetch release and GPG-verify the content hash +tmpdir=$(mktemp -d /tmp/$pkgName-verify-gpg.XXX) +repo=$tmpdir/repo +trap "rm -rf $tmpdir" EXIT +git clone --depth 1 --branch v${newVersion} -c advice.detachedHead=false https://github.com/$(getRepo) $repo +export GNUPGHOME=$tmpdir +# Fetch Nicolas Dorier's key (64-bit key ID: 6618763EF09186FE) +gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys AB4CFA9895ACA0DBE27F6B346618763EF09186FE 2> /dev/null +echo +echo "Verifying commit" +git -C $repo verify-commit HEAD +rm -rf $repo/.git +newHash=$(nix hash-path $repo) +rm -rf $tmpdir +echo + +# Update pkg version and hash +echo "Updating $pkgName: $oldVersion -> $newVersion" +if [[ $newVersion == $oldVersion ]]; then + # Temporarily set a source version that doesn't equal $newVersion so that $newHash + # is always updated in the next call to update-source-version. + (cd "$nixpkgs" && update-source-version "$pkgName" "0" "0000000000000000000000000000000000000000000000000000") +fi +(cd "$nixpkgs" && update-source-version "$pkgName" "$newVersion" "$newHash") +echo + +# Create deps file +storeSrc="$(nix-build "$nixpkgs" -A $pkgName.src --no-out-link)" +. "$scriptDir"/create-deps.sh "$storeSrc" "$depsFile" "$customFlags" diff --git a/pkgs/applications/blockchains/openethereum/default.nix b/pkgs/applications/blockchains/openethereum/default.nix new file mode 100644 index 00000000000..79ab37c7adb --- /dev/null +++ b/pkgs/applications/blockchains/openethereum/default.nix @@ -0,0 +1,50 @@ +{ lib +, fetchFromGitHub +, rustPlatform +, cmake +, llvmPackages +, openssl +, pkg-config +, stdenv +, systemd +, darwin +}: + +rustPlatform.buildRustPackage rec { + pname = "openethereum"; + version = "3.2.6"; + + src = fetchFromGitHub { + owner = "openethereum"; + repo = "openethereum"; + rev = "v${version}"; + sha256 = "0lxps3cyg8dzb9qr1kg91s9jc3mnm6hxybwcbhva38pcq4yc40xc"; + }; + + cargoSha256 = "08yrpls3szmw6vy2c4d6b1k907ga0809ylvyx0zb6f8mp8z7ahl2"; + + nativeBuildInputs = [ cmake pkg-config ]; + + buildInputs = [ openssl ] + ++ lib.optionals stdenv.isLinux [ systemd ] + ++ lib.optionals stdenv.isDarwin [ darwin.Security ]; + + buildFeatures = [ "final" ]; + + # Fix tests by preventing them from writing to /homeless-shelter. + preCheck = '' + export HOME=$(mktemp -d) + ''; + + # Exclude some tests that don't work in the sandbox + # - Nat test requires network access + checkFlags = "--skip configuration::tests::should_resolve_external_nat_hosts"; + + meta = with lib; { + description = "Fast, light, robust Ethereum implementation"; + homepage = "http://parity.io/ethereum"; + license = licenses.gpl3; + maintainers = with maintainers; [ akru ]; + platforms = lib.platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/oxen/default.nix b/pkgs/applications/blockchains/oxen/default.nix new file mode 100644 index 00000000000..773071c0499 --- /dev/null +++ b/pkgs/applications/blockchains/oxen/default.nix @@ -0,0 +1,68 @@ +{ stdenv, lib, fetchurl, fetchFromGitHub, fetchpatch +, cmake, pkg-config +, boost, openssl, unbound +, pcsclite, readline, libsodium, hidapi +, rapidjson +, curl, sqlite +, trezorSupport ? true +, libusb1 +, protobuf +, python3 +}: + +stdenv.mkDerivation rec { + pname = "oxen"; + version = "9.1.3"; + + src = fetchFromGitHub { + owner = "oxen-io"; + repo = "oxen-core"; + rev = "v${version}"; + sha256 = "11g3wqn0syk47yfcsdql5737kpad8skwdxhifn2yaz9zy8n3xqqb"; + fetchSubmodules = true; + }; + + # Required for static linking, the only supported install path + lbzmqsrc = fetchurl { + url = "https://github.com/zeromq/libzmq/releases/download/v4.3.3/zeromq-4.3.3.tar.gz"; + sha512 = "4c18d784085179c5b1fcb753a93813095a12c8d34970f2e1bfca6499be6c9d67769c71c68b7ca54ff181b20390043170e89733c22f76ff1ea46494814f7095b1"; + }; + + postPatch = '' + # remove vendored libraries + rm -r external/rapidjson + sed -i s,/lib/,/lib64/, external/loki-mq/cmake/local-libzmq//LocalLibzmq.cmake + ''; + + postInstall = '' + rm -R $out/lib $out/include + ''; + + nativeBuildInputs = [ cmake pkg-config ]; + + buildInputs = [ + boost openssl unbound + pcsclite readline + libsodium hidapi rapidjson + protobuf curl sqlite + ] ++ lib.optionals trezorSupport [ libusb1 protobuf python3 ]; + + cmakeFlags = [ + "-DCMAKE_BUILD_TYPE=Release" + # "-DUSE_DEVICE_TREZOR=ON" + # "-DBUILD_GUI_DEPS=ON" + "-DReadline_ROOT_DIR=${readline.dev}" + # It build with shared libs but doesn't install them. Fail. + # "-DBUILD_SHARED_LIBS=ON" + "-DLIBZMQ_TARBALL_URL=${lbzmqsrc}" + ] ++ lib.optional stdenv.isDarwin "-DBoost_USE_MULTITHREADED=OFF"; + + meta = with lib; { + description = "Private cryptocurrency based on Monero"; + homepage = "https://oxen.io/"; + license = licenses.bsd3; + platforms = platforms.all; + maintainers = [ maintainers.viric ]; + broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/oxen.x86_64-darwin + }; +} diff --git a/pkgs/applications/blockchains/particl-core/default.nix b/pkgs/applications/blockchains/particl-core/default.nix new file mode 100644 index 00000000000..c9fb1a45869 --- /dev/null +++ b/pkgs/applications/blockchains/particl-core/default.nix @@ -0,0 +1,56 @@ +{ lib +, stdenv +, autoreconfHook +, boost +, db48 +, fetchFromGitHub +, libevent +, miniupnpc +, openssl +, pkg-config +, zeromq +, zlib +, unixtools +, python3 +}: + +with lib; + +stdenv.mkDerivation rec { + pname = "particl-core"; + version = "0.19.2.14"; + + src = fetchFromGitHub { + owner = "particl"; + repo = "particl-core"; + rev = "v${version}"; + sha256 = "sha256-gJLEMfEvQ35xjKt8iN/FXi2T/GBMSS7eUqOC8XHKPBg="; + }; + + nativeBuildInputs = [ pkg-config autoreconfHook ]; + buildInputs = [ openssl db48 boost zlib miniupnpc libevent zeromq unixtools.hexdump python3 ]; + + configureFlags = [ + "--disable-bench" + "--with-boost-libdir=${boost.out}/lib" + ] ++ optionals (!doCheck) [ + "--enable-tests=no" + ]; + + # Always check during Hydra builds + doCheck = true; + preCheck = "patchShebangs test"; + enableParallelBuilding = true; + + meta = { + description = "Privacy-Focused Marketplace & Decentralized Application Platform"; + longDescription = '' + An open source, decentralized privacy platform built for global person to person eCommerce. + RPC daemon and CLI client only. + ''; + homepage = "https://particl.io/"; + maintainers = with maintainers; [ demyanrogozhin ]; + license = licenses.mit; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/pivx/default.nix b/pkgs/applications/blockchains/pivx/default.nix new file mode 100644 index 00000000000..75d0aa7ebfc --- /dev/null +++ b/pkgs/applications/blockchains/pivx/default.nix @@ -0,0 +1,78 @@ +{ fetchFromGitHub +, lib +, stdenv +, pkg-config +, autoreconfHook +, wrapQtAppsHook +, openssl +, db48 +, boost +, zlib +, miniupnpc +, gmp +, qrencode +, glib +, protobuf +, yasm +, libevent +, util-linux +, qtbase +, qttools +, enableUpnp ? false +, disableWallet ? false +, disableDaemon ? false +, withGui ? false +}: + +stdenv.mkDerivation rec { + pname = "pivx"; + version = "4.1.1"; + + src = fetchFromGitHub { + owner = "PIVX-Project"; + repo = "PIVX"; + rev = "v${version}"; + sha256 = "03ndk46h6093v8s18d5iffz48zhlshq7jrk6vgpjfs6z2iqgd2sy"; + }; + + nativeBuildInputs = [ pkg-config autoreconfHook ] + ++ lib.optionals withGui [ wrapQtAppsHook ]; + + buildInputs = [ glib gmp openssl db48 yasm boost zlib libevent miniupnpc protobuf util-linux ] + ++ lib.optionals withGui [ qtbase qttools qrencode ]; + + configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ] + ++ lib.optional enableUpnp "--enable-upnp-default" + ++ lib.optional disableWallet "--disable-wallet" + ++ lib.optional disableDaemon "--disable-daemon" + ++ lib.optionals withGui [ + "--with-gui=yes" + "--with-qt-bindir=${lib.getDev qtbase}/bin:${lib.getDev qttools}/bin" + ]; + + enableParallelBuilding = true; + doCheck = true; + postBuild = '' + mkdir -p $out/share/applications $out/share/icons + cp contrib/debian/pivx-qt.desktop $out/share/applications/ + cp share/pixmaps/*128.png $out/share/icons/ + ''; + + doInstallCheck = true; + installCheckPhase = '' + $out/bin/test_pivx + ''; + + meta = with lib; { + description = "An open source crypto-currency focused on fast private transactions"; + longDescription = '' + PIVX is an MIT licensed, open source, blockchain-based cryptocurrency with + ultra fast transactions, low fees, high network decentralization, and + Zero Knowledge cryptography proofs for industry-leading transaction anonymity. + ''; + license = licenses.mit; + homepage = "https://pivx.org"; + maintainers = with maintainers; [ ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/polkadot/default.nix b/pkgs/applications/blockchains/polkadot/default.nix new file mode 100644 index 00000000000..e008832d4f0 --- /dev/null +++ b/pkgs/applications/blockchains/polkadot/default.nix @@ -0,0 +1,69 @@ +{ clang +, fetchFromGitHub +, lib +, llvmPackages +, protobuf +, rustPlatform +, writeShellScriptBin +}: +rustPlatform.buildRustPackage rec { + pname = "polkadot"; + version = "0.9.17"; + + src = fetchFromGitHub { + owner = "paritytech"; + repo = "polkadot"; + rev = "v${version}"; + sha256 = "sha256-m47Y4IXGc43XLs5d6ehlD0A53BWC5kO3K2BS/xbYgl8="; + + # see the comment below on fakeGit for how this is used + leaveDotGit = true; + postFetch = '' + ( cd $out; git rev-parse --short HEAD > .git_commit ) + rm -rf $out/.git + ''; + }; + + cargoSha256 = "sha256-JBacioy2woAfKQuK6tXU9as4DNc+3uY3F3GWksCf6WU="; + + nativeBuildInputs = + let + # the build process of polkadot requires a .git folder in order to determine + # the git commit hash that is being built and add it to the version string. + # since having a .git folder introduces reproducibility issues to the nix + # build, we check the git commit hash after fetching the source and save it + # into a .git_commit file, and then delete the .git folder. then we create a + # fake git command that will just return the contents of this file, which will + # be used when the polkadot build calls `git rev-parse` to fetch the commit + # hash. + fakeGit = writeShellScriptBin "git" '' + if [[ $@ = "rev-parse --short HEAD" ]]; then + cat /build/source/.git_commit + else + >&2 echo "Unknown command: $@" + exit 1 + fi + ''; + in + [ clang fakeGit ]; + + LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib"; + PROTOC = "${protobuf}/bin/protoc"; + + # NOTE: We don't build the WASM runtimes since this would require a more + # complicated rust environment setup and this is only needed for developer + # environments. The resulting binary is useful for end-users of live networks + # since those just use the WASM blob from the network chainspec. + SKIP_WASM_BUILD = 1; + + # We can't run the test suite since we didn't compile the WASM runtimes. + doCheck = false; + + meta = with lib; { + description = "Polkadot Node Implementation"; + homepage = "https://polkadot.network"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ akru andresilva asymmetric FlorianFranzen RaghavSood ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/quorum/default.nix b/pkgs/applications/blockchains/quorum/default.nix new file mode 100644 index 00000000000..1424ddc9516 --- /dev/null +++ b/pkgs/applications/blockchains/quorum/default.nix @@ -0,0 +1,41 @@ +{ lib, fetchFromGitHub, buildGoPackage, git, which, removeReferencesTo, go }: + +buildGoPackage rec { + pname = "quorum"; + version = "2.5.0"; + + goPackagePath = "github.com/jpmorganchase/quorum"; + + src = fetchFromGitHub { + owner = "jpmorganchase"; + repo = pname; + rev = "v${version}"; + sha256 = "0xfdaqp9bj5dkw12gy19lxj73zh7w80j051xclsvnd41sfah86ll"; + }; + + buildInputs = [ git which ]; + + buildPhase = '' + cd "go/src/$goPackagePath" + make geth bootnode swarm + ''; + + installPhase = '' + mkdir -pv $out/bin + cp -v build/bin/geth build/bin/bootnode build/bin/swarm $out/bin + ''; + + # fails with `GOFLAGS=-trimpath` + allowGoReference = true; + preFixup = '' + find $out -type f -exec ${removeReferencesTo}/bin/remove-references-to -t ${go} '{}' + + ''; + + meta = with lib; { + description = "A permissioned implementation of Ethereum supporting data privacy"; + homepage = "https://www.goquorum.com/"; + license = licenses.lgpl3; + maintainers = with maintainers; [ mmahut ]; + platforms = subtractLists ["aarch64-linux"] platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/snarkos/default.nix b/pkgs/applications/blockchains/snarkos/default.nix new file mode 100644 index 00000000000..c52780c9564 --- /dev/null +++ b/pkgs/applications/blockchains/snarkos/default.nix @@ -0,0 +1,61 @@ +{ stdenv +, fetchFromGitHub +, lib +, rustPlatform +, Security +, curl +, pkg-config +, openssl +, llvmPackages +}: +rustPlatform.buildRustPackage rec { + pname = "snarkos"; + version = "2.0.2"; + + src = fetchFromGitHub { + owner = "AleoHQ"; + repo = "snarkOS"; + rev = "v${version}"; + sha256 = "sha256-sS8emB+uhWuoq5ISuT8FgSSzX7/WDoOY8hHzPE/EX3o="; + }; + + cargoSha256 = "sha256-XS6dw6BIoJdigEso/J1dUaAp7AIAda3HrKnCoBynRv8="; + + # buildAndTestSubdir = "cli"; + + nativeBuildInputs = lib.optionals stdenv.isLinux [ pkg-config llvmPackages.clang ]; + + # Needed to get openssl-sys to use pkg-config. + OPENSSL_NO_VENDOR = 1; + OPENSSL_LIB_DIR = "${openssl.out}/lib"; + OPENSSL_DIR="${lib.getDev openssl}"; + + LIBCLANG_PATH="${llvmPackages.libclang.lib}/lib"; + + # TODO check why rust compilation fails by including the rocksdb from nixpkgs + # Used by build.rs in the rocksdb-sys crate. If we don't set these, it would + # try to build RocksDB from source. + # ROCKSDB_INCLUDE_DIR="${rocksdb}/include"; + # ROCKSDB_LIB_DIR="${rocksdb}/lib"; + + buildInputs = lib.optionals stdenv.isDarwin [ Security curl ]; + + # some tests are flaky and some need network access + # TODO finish filtering the tests to enable them + doCheck = !stdenv.isLinux; + # checkFlags = [ + # # tries to make a network access + # "--skip=rpc::rpc::tests::test_send_transaction_large" + # # flaky test + # "--skip=helpers::block_requests::tests::test_block_requests_case_2ca" + # ]; + + + meta = with lib; { + description = "A Decentralized Operating System for Zero-Knowledge Applications"; + homepage = "https://snarkos.org"; + license = licenses.asl20; + maintainers = with maintainers; [ happysalada ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/solana/default.nix b/pkgs/applications/blockchains/solana/default.nix new file mode 100644 index 00000000000..bfa9382b245 --- /dev/null +++ b/pkgs/applications/blockchains/solana/default.nix @@ -0,0 +1,56 @@ +{ stdenv +, fetchFromGitHub +, lib +, rustPlatform +, IOKit +, Security +, AppKit +, pkg-config +, udev +, zlib +, protobuf +}: +rustPlatform.buildRustPackage rec { + pname = "solana-testnet-cli"; + version = "1.9.2"; + + src = fetchFromGitHub { + owner = "solana-labs"; + repo = "solana"; + rev = "v${version}"; + sha256 = "sha256-wrv35vBohLztMZPb6gfZdCaXcjj/Y7vnQqINaI6dBM4="; + }; + + cargoSha256 = "sha256-A5uVa+cRmrkVyw7MFH4QAr0VIFi18wcc2VPFvQyT9EM="; + + buildAndTestSubdir = "cli"; + + nativeBuildInputs = lib.optionals stdenv.isLinux [ protobuf pkg-config ]; + buildInputs = lib.optionals stdenv.isLinux [ udev zlib ] ++ lib.optionals stdenv.isDarwin [ IOKit Security AppKit ]; + + # check phase fails + # on darwin with missing framework System. This framework is not available in nixpkgs + # on linux with some librocksdb-sys compilation error + doCheck = false; + + # all the following are needed for the checkphase + # checkInputs = lib.optionals stdenv.isDarwin [ pkg-config rustfmt ]; + # Needed to get openssl-sys to use pkg-config. + # OPENSSL_NO_VENDOR = 1; + # OPENSSL_LIB_DIR = "${openssl.out}/lib"; + # OPENSSL_DIR="${lib.getDev openssl}"; + # LLVM_CONFIG_PATH="${llvm}/bin/llvm-config"; + # LIBCLANG_PATH="${llvmPackages.libclang.lib}/lib"; + # Used by build.rs in the rocksdb-sys crate. If we don't set these, it would + # try to build RocksDB from source. + # ROCKSDB_INCLUDE_DIR="${rocksdb}/include"; + # ROCKSDB_LIB_DIR="${rocksdb}/lib"; + + meta = with lib; { + description = "Web-Scale Blockchain for fast, secure, scalable, decentralized apps and marketplaces. "; + homepage = "https://solana.com"; + license = licenses.asl20; + maintainers = with maintainers; [ happysalada ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/stellar-core/default.nix b/pkgs/applications/blockchains/stellar-core/default.nix new file mode 100644 index 00000000000..6ecc4e241cb --- /dev/null +++ b/pkgs/applications/blockchains/stellar-core/default.nix @@ -0,0 +1,46 @@ +{ lib, stdenv, fetchFromGitHub, autoconf, libtool, automake, pkg-config, git +, bison, flex, postgresql, ripgrep }: + +stdenv.mkDerivation rec { + pname = "stellar-core"; + version = "17.0.0"; + + src = fetchFromGitHub { + owner = "stellar"; + repo = pname; + rev = "v${version}"; + sha256 = "1ngl8yjqb8xzhdwzlxzzxf14q2hgwy2ysb17sn5380rrn0jswin1"; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ automake autoconf git libtool pkg-config ripgrep ]; + + propagatedBuildInputs = [ bison flex postgresql ]; + + preConfigure = '' + # Due to https://github.com/NixOS/nixpkgs/issues/8567 we cannot rely on + # having the .git directory present, so directly provide the version + substituteInPlace src/Makefile.am --replace '$$vers' '${pname} ${version}'; + + # Everything needs to be staged in git because the build uses + # `git ls-files` to search for source files to compile. + git init + git add . + + ./autogen.sh + ''; + + meta = with lib; { + description = "Implements the Stellar Consensus Protocol, a federated consensus protocol"; + longDescription = '' + Stellar-core is the backbone of the Stellar network. It maintains a + local copy of the ledger, communicating and staying in sync with other + instances of stellar-core on the network. Optionally, stellar-core can + store historical records of the ledger and participate in consensus. + ''; + homepage = "https://www.stellar.org/"; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ ]; + license = licenses.asl20; + }; +} diff --git a/pkgs/applications/blockchains/sumokoin/default.nix b/pkgs/applications/blockchains/sumokoin/default.nix new file mode 100644 index 00000000000..ee817b58195 --- /dev/null +++ b/pkgs/applications/blockchains/sumokoin/default.nix @@ -0,0 +1,33 @@ +{ lib, stdenv, fetchFromGitHub, cmake, unbound, openssl, boost +, libunwind, lmdb, miniupnpc }: + +stdenv.mkDerivation rec { + pname = "sumokoin"; + version = "0.2.0.0"; + + src = fetchFromGitHub { + owner = "sumoprojects"; + repo = "sumokoin"; + rev = "v${version}"; + sha256 = "0ndgcawhxh3qb3llrrilrwzhs36qpxv7f53rxgcansbff9b3za6n"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ unbound openssl boost libunwind lmdb miniupnpc ]; + + postPatch = '' + substituteInPlace src/blockchain_db/lmdb/db_lmdb.cpp --replace mdb_size_t size_t + ''; + + cmakeFlags = [ + "-DLMDB_INCLUDE=${lmdb}/include" + ]; + + meta = with lib; { + description = "A fork of Monero and a truely fungible cryptocurrency"; + homepage = "https://www.sumokoin.org/"; + license = licenses.bsd3; + maintainers = with maintainers; [ fpletz ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/tessera/default.nix b/pkgs/applications/blockchains/tessera/default.nix new file mode 100644 index 00000000000..5b139252553 --- /dev/null +++ b/pkgs/applications/blockchains/tessera/default.nix @@ -0,0 +1,26 @@ +{ lib, stdenv, fetchurl, makeWrapper, jre }: + +stdenv.mkDerivation rec { + pname = "tessera"; + version = "0.10.2"; + + src = fetchurl { + url = "https://oss.sonatype.org/service/local/repositories/releases/content/com/jpmorgan/quorum/${pname}-app/${version}/${pname}-app-${version}-app.jar"; + sha256 = "1zn8w7q0q5man0407kb82lw4mlvyiy9whq2f6izf2b5415f9s0m4"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + dontUnpack = true; + + installPhase = '' + makeWrapper ${jre}/bin/java $out/bin/tessera --add-flags "-jar $src" + ''; + + meta = with lib; { + description = "Enterprise Implementation of Quorum's transaction manager"; + homepage = "https://github.com/jpmorganchase/tessera"; + license = licenses.asl20; + maintainers = with maintainers; [ mmahut ]; + }; +} diff --git a/pkgs/applications/blockchains/trezor-suite/default.nix b/pkgs/applications/blockchains/trezor-suite/default.nix new file mode 100644 index 00000000000..43f41e5aeef --- /dev/null +++ b/pkgs/applications/blockchains/trezor-suite/default.nix @@ -0,0 +1,64 @@ +{ lib +, stdenv +, fetchurl +, appimageTools +, tor +, trezord +}: + +let + pname = "trezor-suite"; + version = "22.1.1"; + name = "${pname}-${version}"; + + suffix = { + aarch64-linux = "linux-arm64"; + x86_64-linux = "linux-x86_64"; + }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + + src = fetchurl { + url = "https://github.com/trezor/${pname}/releases/download/v${version}/Trezor-Suite-${version}-${suffix}.AppImage"; + sha512 = { # curl -Lfs https://github.com/trezor/trezor-suite/releases/latest/download/latest-linux{-arm64,}.yml | grep ^sha512 | sed 's/: /-/' + aarch64-linux = "sha512-hRPwhKdAqiHmsaIuNm5r3ZuKhUh+IipR5/5N/9PwiLEfaSQRWink0dUwyuUoWzy4DyGabLQyIWbQRvR7eRGKJA=="; + x86_64-linux = "sha512-W4S7W4TeDtSwWCj6N6EoJJOCYG3m1pK3D+UPlsp7B7VY/0uBtI31+tS28E6TUgXZUttr8IIbqzJYWCuyLfDthQ=="; + }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + }; + + appimageContents = appimageTools.extractType2 { + inherit name src; + }; + +in + +appimageTools.wrapType2 rec { + inherit name src; + + extraInstallCommands = '' + mv $out/bin/${name} $out/bin/${pname} + mkdir -p $out/bin $out/share/${pname} $out/share/${pname}/resources + + cp -a ${appimageContents}/locales/ $out/share/${pname} + cp -a ${appimageContents}/resources/app*.* $out/share/${pname}/resources + cp -a ${appimageContents}/resources/images/ $out/share/${pname}/resources + + install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop + install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/512x512/apps/${pname}.png + install -m 444 -D ${appimageContents}/resources/images/icons/512x512.png $out/share/icons/hicolor/512x512/apps/${pname}.png + substituteInPlace $out/share/applications/${pname}.desktop \ + --replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname}' + + # symlink system binaries instead bundled ones + mkdir -p $out/share/${pname}/resources/bin/{bridge,tor} + ln -sf ${trezord}/bin/trezord-go $out/share/${pname}/resources/bin/bridge/trezord + ln -sf ${tor}/bin/tor $out/share/${pname}/resources/bin/tor/tor + ''; + + meta = with lib; { + description = "Trezor Suite - Desktop App for managing crypto"; + homepage = "https://suite.trezor.io"; + changelog = "https://github.com/trezor/trezor-suite/releases/tag/v${version}"; + license = licenses.unfree; + maintainers = with maintainers; [ prusnak ]; + platforms = [ "aarch64-linux" "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/blockchains/vertcoin/default.nix b/pkgs/applications/blockchains/vertcoin/default.nix new file mode 100644 index 00000000000..acb02298e11 --- /dev/null +++ b/pkgs/applications/blockchains/vertcoin/default.nix @@ -0,0 +1,69 @@ +{ lib, stdenv +, fetchFromGitHub +, openssl +, boost +, libevent +, autoreconfHook +, db4 +, pkg-config +, protobuf +, hexdump +, zeromq +, withGui +, qtbase ? null +, qttools ? null +, wrapQtAppsHook ? null +}: + +with lib; + +stdenv.mkDerivation rec { + pname = "vertcoin"; + version = "0.15.0.1"; + + name = pname + toString (optional (!withGui) "d") + "-" + version; + + src = fetchFromGitHub { + owner = pname + "-project"; + repo = pname + "-core"; + rev = version; + sha256 = "09q7qicw52gv225hq6wlpsf4zr4hjc8miyim5cygi5nxxrlw7kd3"; + }; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + hexdump + ] ++ optionals withGui [ + wrapQtAppsHook + ]; + + buildInputs = [ + openssl + boost + libevent + db4 + zeromq + ] ++ optionals withGui [ + qtbase + qttools + protobuf + ]; + + enableParallelBuilding = true; + + configureFlags = [ + "--with-boost-libdir=${boost.out}/lib" + ] ++ optionals withGui [ + "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" + ]; + + meta = { + description = "A digital currency with mining decentralisation and ASIC resistance as a key focus"; + homepage = "https://vertcoin.org/"; + license = licenses.mit; + maintainers = [ maintainers.mmahut ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/wasabibackend/default.nix b/pkgs/applications/blockchains/wasabibackend/default.nix new file mode 100644 index 00000000000..c7f594e31b4 --- /dev/null +++ b/pkgs/applications/blockchains/wasabibackend/default.nix @@ -0,0 +1,50 @@ +{ lib +, stdenv +, fetchFromGitHub +, buildDotnetModule +, dotnetCorePackages +, autoPatchelfHook +, zlib +, openssl +}: + +buildDotnetModule rec { + pname = "wasabibackend"; + version = "1.1.13.0"; + + src = fetchFromGitHub { + owner = "zkSNACKs"; + repo = "WalletWasabi"; + rev = "v${version}"; + sha256 = "sha256-zDOk8MurT5NXOr4kvm5mnsphY+eDFWuVBcpeTZpcHOo="; + }; + + projectFile = "WalletWasabi.Backend/WalletWasabi.Backend.csproj"; + nugetDeps = ./deps.nix; + + dotnet-sdk = dotnetCorePackages.sdk_3_1; + dotnet-runtime = dotnetCorePackages.aspnetcore_3_1; + + nativeBuildInputs = [ autoPatchelfHook ]; + buildInputs = [ stdenv.cc.cc.lib zlib ]; + + runtimeDeps = [ openssl zlib ]; + + preConfigure = '' + makeWrapperArgs+=( + --run "cd $out/lib/${pname}" + ) + ''; + + postFixup = '' + mv $out/bin/WalletWasabi.Backend $out/bin/WasabiBackend + ''; + + meta = with lib; { + description = "Backend for the Wasabi Wallet"; + homepage = "https://wasabiwallet.io/"; + license = licenses.mit; + maintainers = with maintainers; [ mmahut ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/blockchains/wasabibackend/deps.nix b/pkgs/applications/blockchains/wasabibackend/deps.nix new file mode 100644 index 00000000000..782f183da07 --- /dev/null +++ b/pkgs/applications/blockchains/wasabibackend/deps.nix @@ -0,0 +1,203 @@ +{ fetchNuGet }: [ + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "3.1.10"; sha256 = "0xn4zh7shvijqlr03fqsmps6gz856isd9bg9rk4z2c4599ggal77"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "3.1.21"; sha256 = "056g9nv8a7n8zdbgzmyzmn3pbg52yq2kv5d1rcp7h6plwzgpiwql"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "3.1.21"; sha256 = "0akdzi35497v8yxr3a9q1g26cnx9vxnwv81kwxi293jklwnx8gsr"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "3.1.21"; sha256 = "16kya6xvi7k42sr8bxgpbz9116dj7g3i18ylpvji9qngdx41891v"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.JsonPatch"; version = "3.1.1"; sha256 = "0c0aaz9rlh9chc53dnv5jryp0x0415hipaizrmih3kzwd3fmqpml"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.Mvc.NewtonsoftJson"; version = "3.1.1"; sha256 = "1c2lrlp64kkacnjgdyygr6fqdawk10l8j4qgppii6rq61yjwhcig"; }) + (fetchNuGet { pname = "Microsoft.Build"; version = "15.3.409"; sha256 = "0vzq6csp2yys9s96c7i37bjml439rdi47g8f5rzqdr7xf5a1jk81"; }) + (fetchNuGet { pname = "Microsoft.Build.Framework"; version = "15.3.409"; sha256 = "1dhanwb9ihbfay85xj7cwn0byzmmdz94hqfi3q6r1ncwdjd8y1s2"; }) + (fetchNuGet { pname = "Microsoft.Build.Runtime"; version = "15.3.409"; sha256 = "135ycnqz5jfg61y5zaapgc7xdpjx2aq4icmxb9ph7h5inl445q7q"; }) + (fetchNuGet { pname = "Microsoft.Build.Tasks.Core"; version = "15.3.409"; sha256 = "135swyygp7cz2civwsz6a7dj7h8bzp7yrybmgxjanxwrw66hm933"; }) + (fetchNuGet { pname = "Microsoft.Build.Utilities.Core"; version = "15.3.409"; sha256 = "1p8a0l9sxmjj86qha748qjw2s2n07q8mn41mj5r6apjnwl27ywnf"; }) + (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.3.0"; sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb"; }) + (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.7.0"; sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j"; }) + (fetchNuGet { pname = "Microsoft.Extensions.ApiDescription.Server"; version = "3.0.0"; sha256 = "13a47xcqyi5gz85swxd4mgp7ndgl4kknrvv3xwmbn71hsh953hsh"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Abstractions"; version = "2.0.0"; sha256 = "0d6y5isjy6jpf4w3f3w89cwh9p40glzhwvm7cwhx05wkqd8bk9w4"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Physical"; version = "2.0.0"; sha256 = "0l0l92g7sq4122n139av1pn1jl6wlw92hjmdnr47xdss0ndmwrs3"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileSystemGlobbing"; version = "2.0.0"; sha256 = "02lzy6r14ghwfwm384xajq08vv3pl3ww0mi5isrr10vivhijhgg4"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "1.0.0"; sha256 = "1sh9bidmhy32gkz6fkli79mxv06546ybrzppfw5v2aq0bda1ghka"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "2.0.0"; sha256 = "1xppr5jbny04slyjgngxjdm0maxdh47vq481ps944d7jrfs0p3mb"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App"; version = "2.0.5"; sha256 = "0qb7k624w7l0zhapdp519ymqg84a67r8zyd8cpj42hywsgb0dqv6"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "3.1.21"; sha256 = "01kbhi29lhv6mg1zfsyakz3z8hfbxnc0kxy0fczl8xqviik9svx7"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "3.1.21"; sha256 = "1s5g9gk0hvs268q2zpc32m0my2m2ivlmsmza86797a9vkxr6pzw6"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "3.1.21"; sha256 = "0dl4yakfmdkx6xr18f09cdnl11b4fyp23jg3msr8a25zqdqvcr29"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "3.1.0"; sha256 = "08svsiilx9spvjamcnjswv0dlpdrgryhr3asdz7cvnl914gjzq4y"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "3.1.21"; sha256 = "13692wqcww0w6x4nhyxpxwprdg6mx9xmlvv38m6fvp6g0m27r43v"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "3.1.21"; sha256 = "1p7fpcmx4m2374zjfh53i3mv4lkr8xrkz5lnawv95s7j005m07pc"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "3.1.21"; sha256 = "02zgxzf8l607mh17900n7msga0yfcnqgd70rj1rlwj23plifykx1"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetAppHost"; version = "2.0.5"; sha256 = "00bsxdg9c8msjxyffvfi8siqk8v2m7ca8fqy1npv7b2pzg3byjws"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostPolicy"; version = "2.0.5"; sha256 = "0v5csskiwpk8kz8wclqad8kcjmxr7ik4w99wl05740qvaag3qysk"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostResolver"; version = "2.0.5"; sha256 = "1sz2fdp8fdwz21x3lr2m1zhhrbix6iz699fjkwiryqdjl4ygd3hw"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.0.1"; sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.0.1"; sha256 = "1j2hmnivgb4plni2dd205kafzg6mkg7r4knrd3s7mg75wn2l25np"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "3.1.0"; sha256 = "1gc1x8f95wk8yhgznkwsg80adk1lc65v9n5rx4yaa4bc5dva0z3j"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.0.1"; sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; }) + (fetchNuGet { pname = "Microsoft.OpenApi"; version = "1.1.4"; sha256 = "1sn79829nhx6chi2qxsza1801di7zdl5fd983m0jakawzbjhjcb3"; }) + (fetchNuGet { pname = "Microsoft.VisualStudio.Web.CodeGeneration.Contracts"; version = "2.0.2"; sha256 = "1fs6sbjn0chx6rv38d61zgk8mhyyxz44xp4wsfya0lvkckyszyn1"; }) + (fetchNuGet { pname = "Microsoft.VisualStudio.Web.CodeGeneration.Tools"; version = "2.0.2"; sha256 = "0fkjm06irs53d77z29i6dwj5pjhgj9ivhad8v39ghnrwasc0ivq6"; }) + (fetchNuGet { pname = "Microsoft.Win32.Primitives"; version = "4.0.1"; sha256 = "1n8ap0cmljbqskxpf8fjzn7kh1vvlndsa75k01qig26mbw97k2q7"; }) + (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "4.0.0"; sha256 = "1spf4m9pikkc19544p29a47qnhcd885klncahz133hbnyqbkmz9k"; }) + (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "4.7.0"; sha256 = "0bx21jjbs7l5ydyw4p6cn07chryxpmchq2nl5pirzz4l3b0q4dgs"; }) + (fetchNuGet { pname = "NBitcoin"; version = "5.0.81"; sha256 = "1fba94kc8yzykb1m5lvpx1hm63mpycpww9cz5zfp85phs1spdn8x"; }) + (fetchNuGet { pname = "NBitcoin.Secp256k1"; version = "1.0.10"; sha256 = "14hngbhxk2xjr5kcbsb26l788xnd1lmxn7fhmm2kvx49kdb1malp"; }) + (fetchNuGet { pname = "NETStandard.Library"; version = "1.6.0"; sha256 = "0nmmv4yw7gw04ik8ialj3ak0j6pxa9spih67hnn1h2c38ba8h58k"; }) + (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.1"; sha256 = "0d44wjxphs1ck838v7dapm0ag0b91zpiy33cr5vflsrwrqgj51dk"; }) + (fetchNuGet { pname = "Newtonsoft.Json"; version = "10.0.1"; sha256 = "15ncqic3p2rzs8q8ppi0irl2miq75kilw4lh8yfgjq96id0ds3hv"; }) + (fetchNuGet { pname = "Newtonsoft.Json"; version = "11.0.2"; sha256 = "1784xi44f4k8v1fr696hsccmwpy94bz7kixxqlri98zhcxn406b2"; }) + (fetchNuGet { pname = "Newtonsoft.Json"; version = "12.0.2"; sha256 = "0w2fbji1smd2y7x25qqibf1qrznmv4s6s0jvrbvr6alb7mfyqvh5"; }) + (fetchNuGet { pname = "Newtonsoft.Json.Bson"; version = "1.0.2"; sha256 = "0c27bhy9x3c2n26inq32kmp6drpm71n6mqnmcr19wrlcaihglj35"; }) + (fetchNuGet { pname = "NuGet.Frameworks"; version = "4.0.0"; sha256 = "0nar684cm53cvzx28gzl6kmpg9mrfr1yv29323din7xqal4pscgq"; }) + (fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.0.11"; sha256 = "1x44bm1cgv28zmrp095wf9mn8a6a0ivnzp9v14dcbhx06igxzgg0"; }) + (fetchNuGet { pname = "runtime.any.System.Diagnostics.Tracing"; version = "4.1.0"; sha256 = "041im8hmp1zdgrx6jzyrdch6kshvbddmkar7r2mlm1ksb5c5kwpq"; }) + (fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.0.11"; sha256 = "0240rp66pi5bw1xklmh421hj7arwcdmjmgfkiq1cbc6nrm8ah286"; }) + (fetchNuGet { pname = "runtime.any.System.IO"; version = "4.1.0"; sha256 = "0kasfkjiml2kk8prnyn1990nhsahnjggvqwszqjdsfwfl43vpcb5"; }) + (fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.1.0"; sha256 = "06kcs059d5czyakx75rvlwa2mr86156w18fs7chd03f7084l7mq6"; }) + (fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.0.1"; sha256 = "1zxrpvixr5fqzkxpnin6g6gjq6xajy1snghz99ds2dwbhm276rhz"; }) + (fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.0.1"; sha256 = "1jmgs7hynb2rff48623wnyb37558bbh1q28k9c249j5r5sgsr5kr"; }) + (fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.1.0"; sha256 = "0mjr2bi7wvnkphfjqgkyf8vfyvy15a829jz6mivl6jmksh2bx40m"; }) + (fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.0.1"; sha256 = "1kswgqhy34qvc49i981fk711s7knd6z13bp0rin8ms6axkh98nas"; }) + (fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.1.0"; sha256 = "0gm8if0hcmp1qys1wmx4970k2x62pqvldgljsyzbjhiy5644vl8z"; }) + (fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.0.11"; sha256 = "0m4vgmzi1ky8xlj0r7xcyazxln3j9dlialnk6d2gmgrfnzf8f9m7"; }) + (fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.0.11"; sha256 = "1qzdp09qs8br5qxzlm1lgbjn4n57fk8vr1lzrmli2ysdg6x1xzvk"; }) + (fetchNuGet { pname = "runtime.native.System"; version = "4.0.0"; sha256 = "1ppk69xk59ggacj9n7g6fyxvzmk1g5p4fkijm0d7xqfkig98qrkf"; }) + (fetchNuGet { pname = "runtime.native.System.IO.Compression"; version = "4.1.0"; sha256 = "0d720z4lzyfcabmmnvh0bnj76ll7djhji2hmfh3h44sdkjnlkknk"; }) + (fetchNuGet { pname = "runtime.native.System.Net.Http"; version = "4.0.1"; sha256 = "1hgv2bmbaskx77v8glh7waxws973jn4ah35zysnkxmf0196sfxg6"; }) + (fetchNuGet { pname = "runtime.native.System.Security.Cryptography"; version = "4.0.0"; sha256 = "0k57aa2c3b10wl3hfqbgrl7xq7g8hh3a3ir44b31dn5p61iiw3z9"; }) + (fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.0.11"; sha256 = "05ndbai4vpqrry0ghbfgqc8xblmplwjgndxmdn1zklqimczwjg2d"; }) + (fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.0.1"; sha256 = "0ic5dgc45jkhcr1g9xmmzjm7ffiw4cymm0fprczlx4fnww4783nm"; }) + (fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.1.0"; sha256 = "0x1cwd7cvifzmn5x1wafvj75zdxlk3mxy860igh3x1wx0s8167y4"; }) + (fetchNuGet { pname = "runtime.win7.System.Private.Uri"; version = "4.0.1"; sha256 = "1ibrwabavdpqapnplm5kh6nz9vgcwv0wn61w1p60v262kif6sglp"; }) + (fetchNuGet { pname = "runtime.win.System.Diagnostics.Debug"; version = "4.0.11"; sha256 = "1ylkj4v7aq00svij7aq82d86afpwqgrqf2kpikabxl26p19ry9wm"; }) + (fetchNuGet { pname = "runtime.win.System.Runtime.Extensions"; version = "4.1.0"; sha256 = "1zmx2msa04ka8mgh8viahi4pqpp86vdhzij2rg1jg131bwlv59yw"; }) + (fetchNuGet { pname = "Swashbuckle.AspNetCore"; version = "5.0.0"; sha256 = "0rn2awmzrsrppk97xbbwk4kq1mys9bygb5xhl6mphbk0hchrvh09"; }) + (fetchNuGet { pname = "Swashbuckle.AspNetCore.Swagger"; version = "5.0.0"; sha256 = "1341nv8nmh6avs3y7w2szzir5qd0bndxwrkdmvvj3hcxj1126w2f"; }) + (fetchNuGet { pname = "Swashbuckle.AspNetCore.SwaggerGen"; version = "5.0.0"; sha256 = "00swg2avqnb38q2bsxljd34n8rpknp74h9vbn0fdnfds3a32cqr4"; }) + (fetchNuGet { pname = "Swashbuckle.AspNetCore.SwaggerUI"; version = "5.0.0"; sha256 = "0d7vjq489rz208j6k3rb7vq6mzxzff3mqg83yk2rqy25vklrsbjd"; }) + (fetchNuGet { pname = "System.AppContext"; version = "4.1.0"; sha256 = "0fv3cma1jp4vgj7a8hqc9n7hr1f1kjp541s6z0q1r6nazb4iz9mz"; }) + (fetchNuGet { pname = "System.Buffers"; version = "4.0.0"; sha256 = "13s659bcmg9nwb6z78971z1lr6bmh2wghxi1ayqyzl4jijd351gr"; }) + (fetchNuGet { pname = "System.Collections"; version = "4.0.11"; sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6"; }) + (fetchNuGet { pname = "System.Collections"; version = "4.3.0"; sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; }) + (fetchNuGet { pname = "System.Collections.Concurrent"; version = "4.0.12"; sha256 = "07y08kvrzpak873pmyxs129g1ch8l27zmg51pcyj2jvq03n0r0fc"; }) + (fetchNuGet { pname = "System.Collections.Immutable"; version = "1.2.0"; sha256 = "1jm4pc666yiy7af1mcf7766v710gp0h40p228ghj6bavx7xfa38m"; }) + (fetchNuGet { pname = "System.Collections.NonGeneric"; version = "4.0.1"; sha256 = "19994r5y5bpdhj7di6w047apvil8lh06lh2c2yv9zc4fc5g9bl4d"; }) + (fetchNuGet { pname = "System.Collections.NonGeneric"; version = "4.3.0"; sha256 = "07q3k0hf3mrcjzwj8fwk6gv3n51cb513w4mgkfxzm3i37sc9kz7k"; }) + (fetchNuGet { pname = "System.Collections.Specialized"; version = "4.3.0"; sha256 = "1sdwkma4f6j85m3dpb53v9vcgd0zyc9jb33f8g63byvijcj39n20"; }) + (fetchNuGet { pname = "System.ComponentModel"; version = "4.3.0"; sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb"; }) + (fetchNuGet { pname = "System.ComponentModel.Primitives"; version = "4.3.0"; sha256 = "1svfmcmgs0w0z9xdw2f2ps05rdxmkxxhf0l17xk9l1l8xfahkqr0"; }) + (fetchNuGet { pname = "System.ComponentModel.TypeConverter"; version = "4.3.0"; sha256 = "17ng0p7v3nbrg3kycz10aqrrlw4lz9hzhws09pfh8gkwicyy481x"; }) + (fetchNuGet { pname = "System.Console"; version = "4.0.0"; sha256 = "0ynxqbc3z1nwbrc11hkkpw9skw116z4y9wjzn7id49p9yi7mzmlf"; }) + (fetchNuGet { pname = "System.Diagnostics.Contracts"; version = "4.0.1"; sha256 = "0y6dkd9n5k98vzhc3w14r2pbhf10qjn2axpghpmfr6rlxx9qrb9j"; }) + (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.0.11"; sha256 = "0gmjghrqmlgzxivd2xl50ncbglb7ljzb66rlx8ws6dv8jm0d5siz"; }) + (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; }) + (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "4.0.0"; sha256 = "1n6c3fbz7v8d3pn77h4v5wvsfrfg7v1c57lg3nff3cjyh597v23m"; }) + (fetchNuGet { pname = "System.Diagnostics.FileVersionInfo"; version = "4.0.0"; sha256 = "1s5vxhy7i09bmw51kxqaiz9zaj9am8wsjyz13j85sp23z267hbv3"; }) + (fetchNuGet { pname = "System.Diagnostics.Process"; version = "4.1.0"; sha256 = "061lrcs7xribrmq7kab908lww6kn2xn1w3rdc41q189y0jibl19s"; }) + (fetchNuGet { pname = "System.Diagnostics.Tools"; version = "4.0.1"; sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x"; }) + (fetchNuGet { pname = "System.Diagnostics.Tools"; version = "4.3.0"; sha256 = "0in3pic3s2ddyibi8cvgl102zmvp9r9mchh82ns9f0ms4basylw1"; }) + (fetchNuGet { pname = "System.Diagnostics.TraceSource"; version = "4.0.0"; sha256 = "1mc7r72xznczzf6mz62dm8xhdi14if1h8qgx353xvhz89qyxsa3h"; }) + (fetchNuGet { pname = "System.Diagnostics.Tracing"; version = "4.1.0"; sha256 = "1d2r76v1x610x61ahfpigda89gd13qydz6vbwzhpqlyvq8jj6394"; }) + (fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.0.11"; sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9"; }) + (fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.3.0"; sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk"; }) + (fetchNuGet { pname = "System.Globalization"; version = "4.0.11"; sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d"; }) + (fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; }) + (fetchNuGet { pname = "System.Globalization.Calendars"; version = "4.0.1"; sha256 = "0bv0alrm2ck2zk3rz25lfyk9h42f3ywq77mx1syl6vvyncnpg4qh"; }) + (fetchNuGet { pname = "System.Globalization.Extensions"; version = "4.0.1"; sha256 = "0hjhdb5ri8z9l93bw04s7ynwrjrhx2n0p34sf33a9hl9phz69fyc"; }) + (fetchNuGet { pname = "System.Globalization.Extensions"; version = "4.3.0"; sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls"; }) + (fetchNuGet { pname = "System.IO"; version = "4.1.0"; sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp"; }) + (fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; }) + (fetchNuGet { pname = "System.IO.Compression"; version = "4.1.0"; sha256 = "0iym7s3jkl8n0vzm3jd6xqg9zjjjqni05x45dwxyjr2dy88hlgji"; }) + (fetchNuGet { pname = "System.IO.Compression.ZipFile"; version = "4.0.1"; sha256 = "0h72znbagmgvswzr46mihn7xm7chfk2fhrp5krzkjf29pz0i6z82"; }) + (fetchNuGet { pname = "System.IO.FileSystem"; version = "4.0.1"; sha256 = "0kgfpw6w4djqra3w5crrg8xivbanh1w9dh3qapb28q060wb9flp1"; }) + (fetchNuGet { pname = "System.IO.FileSystem"; version = "4.3.0"; sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw"; }) + (fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.0.1"; sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612"; }) + (fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.3.0"; sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c"; }) + (fetchNuGet { pname = "System.IO.Pipes"; version = "4.0.0"; sha256 = "0fxfvcf55s9q8zsykwh8dkq2xb5jcqnml2ycq8srfry2l07h18za"; }) + (fetchNuGet { pname = "System.Linq"; version = "4.1.0"; sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5"; }) + (fetchNuGet { pname = "System.Linq"; version = "4.3.0"; sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; }) + (fetchNuGet { pname = "System.Linq.Expressions"; version = "4.1.0"; sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg"; }) + (fetchNuGet { pname = "System.Linq.Expressions"; version = "4.3.0"; sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv"; }) + (fetchNuGet { pname = "System.Linq.Parallel"; version = "4.0.1"; sha256 = "0i33x9f4h3yq26yvv6xnq4b0v51rl5z8v1bm7vk972h5lvf4apad"; }) + (fetchNuGet { pname = "System.Net.Http"; version = "4.1.0"; sha256 = "1i5rqij1icg05j8rrkw4gd4pgia1978mqhjzhsjg69lvwcdfg8yb"; }) + (fetchNuGet { pname = "System.Net.Primitives"; version = "4.0.11"; sha256 = "10xzzaynkzkakp7jai1ik3r805zrqjxiz7vcagchyxs2v26a516r"; }) + (fetchNuGet { pname = "System.Net.Sockets"; version = "4.1.0"; sha256 = "1385fvh8h29da5hh58jm1v78fzi9fi5vj93vhlm2kvqpfahvpqls"; }) + (fetchNuGet { pname = "System.ObjectModel"; version = "4.0.12"; sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj"; }) + (fetchNuGet { pname = "System.ObjectModel"; version = "4.3.0"; sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2"; }) + (fetchNuGet { pname = "System.Private.DataContractSerialization"; version = "4.1.1"; sha256 = "1xk9wvgzipssp1393nsg4n16zbr5481k03nkdlj954hzq5jkx89r"; }) + (fetchNuGet { pname = "System.Private.Uri"; version = "4.0.1"; sha256 = "0k57qhawjysm4cpbfpc49kl4av7lji310kjcamkl23bwgij5ld9j"; }) + (fetchNuGet { pname = "System.Reflection"; version = "4.1.0"; sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9"; }) + (fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; }) + (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.0.1"; sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp"; }) + (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.3.0"; sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"; }) + (fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.0.1"; sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0"; }) + (fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.3.0"; sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"; }) + (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.0.1"; sha256 = "1s4b043zdbx9k39lfhvsk68msv1nxbidhkq6nbm27q7sf8xcsnxr"; }) + (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.3.0"; sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c"; }) + (fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.0.1"; sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn"; }) + (fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.3.0"; sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq"; }) + (fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.3.0"; sha256 = "1y5m6kryhjpqqm2g3h3b6bzig13wkiw954x3b7icqjm6xypm1x3b"; }) + (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.0.1"; sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28"; }) + (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; }) + (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.1.0"; sha256 = "1bjli8a7sc7jlxqgcagl9nh8axzfl11f4ld3rjqsyxc516iijij7"; }) + (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.3.0"; sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; }) + (fetchNuGet { pname = "System.Resources.Reader"; version = "4.0.0"; sha256 = "1jafi73dcf1lalrir46manq3iy6xnxk2z7gpdpwg4wqql7dv3ril"; }) + (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.0.1"; sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi"; }) + (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; }) + (fetchNuGet { pname = "System.Resources.Writer"; version = "4.0.0"; sha256 = "07hp218kjdcvpl27djspnixgnacbp9apma61zz3wsca9fx5g3lmv"; }) + (fetchNuGet { pname = "System.Runtime"; version = "4.1.0"; sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m"; }) + (fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; }) + (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.4.0"; sha256 = "0a6ahgi5b148sl5qyfpyw383p3cb4yrkm802k29fsi4mxkiwir29"; }) + (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.1.0"; sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z"; }) + (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; }) + (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.0.1"; sha256 = "1g0zrdi5508v49pfm3iii2hn6nm00bgvfpjq1zxknfjrxxa20r4g"; }) + (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; }) + (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.1.0"; sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1"; }) + (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; }) + (fetchNuGet { pname = "System.Runtime.InteropServices.RuntimeInformation"; version = "4.0.0"; sha256 = "0glmvarf3jz5xh22iy3w9v3wyragcm4hfdr17v90vs7vcrm7fgp6"; }) + (fetchNuGet { pname = "System.Runtime.Loader"; version = "4.0.0"; sha256 = "0lpfi3psqcp6zxsjk2qyahal7zaawviimc8lhrlswhip2mx7ykl0"; }) + (fetchNuGet { pname = "System.Runtime.Numerics"; version = "4.0.1"; sha256 = "1y308zfvy0l5nrn46mqqr4wb4z1xk758pkk8svbz8b5ij7jnv4nn"; }) + (fetchNuGet { pname = "System.Runtime.Numerics"; version = "4.3.0"; sha256 = "19rav39sr5dky7afygh309qamqqmi9kcwvz3i0c5700v0c5cg61z"; }) + (fetchNuGet { pname = "System.Runtime.Serialization.Formatters"; version = "4.3.0"; sha256 = "114j35n8gcvn3sqv9ar36r1jjq0y1yws9r0yk8i6wm4aq7n9rs0m"; }) + (fetchNuGet { pname = "System.Runtime.Serialization.Primitives"; version = "4.1.1"; sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k"; }) + (fetchNuGet { pname = "System.Runtime.Serialization.Primitives"; version = "4.3.0"; sha256 = "01vv2p8h4hsz217xxs0rixvb7f2xzbh6wv1gzbfykcbfrza6dvnf"; }) + (fetchNuGet { pname = "System.Runtime.Serialization.Xml"; version = "4.1.1"; sha256 = "11747an5gbz821pwahaim3v82gghshnj9b5c4cw539xg5a3gq7rk"; }) + (fetchNuGet { pname = "System.Security.AccessControl"; version = "4.7.0"; sha256 = "0n0k0w44flkd8j0xw7g3g3vhw7dijfm51f75xkm1qxnbh4y45mpz"; }) + (fetchNuGet { pname = "System.Security.Cryptography.Algorithms"; version = "4.2.0"; sha256 = "148s9g5dgm33ri7dnh19s4lgnlxbpwvrw2jnzllq2kijj4i4vs85"; }) + (fetchNuGet { pname = "System.Security.Cryptography.Cng"; version = "4.2.0"; sha256 = "118jijz446kix20blxip0f0q8mhsh9bz118mwc2ch1p6g7facpzc"; }) + (fetchNuGet { pname = "System.Security.Cryptography.Csp"; version = "4.0.0"; sha256 = "1cwv8lqj8r15q81d2pz2jwzzbaji0l28xfrpw29kdpsaypm92z2q"; }) + (fetchNuGet { pname = "System.Security.Cryptography.Encoding"; version = "4.0.0"; sha256 = "0a8y1a5wkmpawc787gfmnrnbzdgxmx1a14ax43jf3rj9gxmy3vk4"; }) + (fetchNuGet { pname = "System.Security.Cryptography.OpenSsl"; version = "4.0.0"; sha256 = "16sx3cig3d0ilvzl8xxgffmxbiqx87zdi8fc73i3i7zjih1a7f4q"; }) + (fetchNuGet { pname = "System.Security.Cryptography.Primitives"; version = "4.0.0"; sha256 = "0i7cfnwph9a10bm26m538h5xcr8b36jscp9sy1zhgifksxz4yixh"; }) + (fetchNuGet { pname = "System.Security.Cryptography.X509Certificates"; version = "4.1.0"; sha256 = "0clg1bv55mfv5dq00m19cp634zx6inm31kf8ppbq1jgyjf2185dh"; }) + (fetchNuGet { pname = "System.Security.Principal"; version = "4.0.1"; sha256 = "1nbzdfqvzzbgsfdd5qsh94d7dbg2v4sw0yx6himyn52zf8z6007p"; }) + (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.7.0"; sha256 = "1a56ls5a9sr3ya0nr086sdpa9qv0abv31dd6fp27maqa9zclqq5d"; }) + (fetchNuGet { pname = "System.Text.Encoding"; version = "4.0.11"; sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw"; }) + (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; }) + (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "4.0.1"; sha256 = "00wpm3b9y0k996rm9whxprngm8l500ajmzgy2ip9pgwk0icp06y3"; }) + (fetchNuGet { pname = "System.Text.Encoding.Extensions"; version = "4.0.11"; sha256 = "08nsfrpiwsg9x5ml4xyl3zyvjfdi4mvbqf93kjdh11j4fwkznizs"; }) + (fetchNuGet { pname = "System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy"; }) + (fetchNuGet { pname = "System.Text.RegularExpressions"; version = "4.1.0"; sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7"; }) + (fetchNuGet { pname = "System.Text.RegularExpressions"; version = "4.3.0"; sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l"; }) + (fetchNuGet { pname = "System.Threading"; version = "4.0.11"; sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls"; }) + (fetchNuGet { pname = "System.Threading"; version = "4.3.0"; sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; }) + (fetchNuGet { pname = "System.Threading.Overlapped"; version = "4.0.1"; sha256 = "0fi79az3vmqdp9mv3wh2phblfjls89zlj6p9nc3i9f6wmfarj188"; }) + (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.0.11"; sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5"; }) + (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; }) + (fetchNuGet { pname = "System.Threading.Tasks.Dataflow"; version = "4.6.0"; sha256 = "0a1davr71wssyn4z1hr75lk82wqa0daz0vfwkmg1fm3kckfd72k1"; }) + (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.0.0"; sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr"; }) + (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.3.0"; sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z"; }) + (fetchNuGet { pname = "System.Threading.Thread"; version = "4.0.0"; sha256 = "1gxxm5fl36pjjpnx1k688dcw8m9l7nmf802nxis6swdaw8k54jzc"; }) + (fetchNuGet { pname = "System.Threading.ThreadPool"; version = "4.0.10"; sha256 = "0fdr61yjcxh5imvyf93n2m3n5g9pp54bnw2l1d2rdl9z6dd31ypx"; }) + (fetchNuGet { pname = "System.Threading.Timer"; version = "4.0.1"; sha256 = "15n54f1f8nn3mjcjrlzdg6q3520571y012mx7v991x2fvp73lmg6"; }) + (fetchNuGet { pname = "System.Xml.ReaderWriter"; version = "4.0.11"; sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5"; }) + (fetchNuGet { pname = "System.Xml.ReaderWriter"; version = "4.3.0"; sha256 = "0c47yllxifzmh8gq6rq6l36zzvw4kjvlszkqa9wq3fr59n0hl3s1"; }) + (fetchNuGet { pname = "System.Xml.XDocument"; version = "4.0.11"; sha256 = "0n4lvpqzy9kc7qy1a4acwwd7b7pnvygv895az5640idl2y9zbz18"; }) + (fetchNuGet { pname = "System.Xml.XDocument"; version = "4.3.0"; sha256 = "08h8fm4l77n0nd4i4fk2386y809bfbwqb7ih9d7564ifcxr5ssxd"; }) + (fetchNuGet { pname = "System.Xml.XmlDocument"; version = "4.0.1"; sha256 = "0ihsnkvyc76r4dcky7v3ansnbyqjzkbyyia0ir5zvqirzan0bnl1"; }) + (fetchNuGet { pname = "System.Xml.XmlDocument"; version = "4.3.0"; sha256 = "0bmz1l06dihx52jxjr22dyv5mxv6pj4852lx68grjm7bivhrbfwi"; }) + (fetchNuGet { pname = "System.Xml.XmlSerializer"; version = "4.0.11"; sha256 = "01nzc3gdslw90qfykq4qzr2mdnqxjl4sj0wp3fixiwdmlmvpib5z"; }) + (fetchNuGet { pname = "System.Xml.XPath"; version = "4.0.1"; sha256 = "0fjqgb6y66d72d5n8qq1h213d9nv2vi8mpv8p28j3m9rccmsh04m"; }) + (fetchNuGet { pname = "System.Xml.XPath.XmlDocument"; version = "4.0.1"; sha256 = "0l7yljgif41iv5g56l3nxy97hzzgck2a7rhnfnljhx9b0ry41bvc"; }) +] diff --git a/pkgs/applications/blockchains/wasabiwallet/default.nix b/pkgs/applications/blockchains/wasabiwallet/default.nix new file mode 100644 index 00000000000..f8e20f1a05d --- /dev/null +++ b/pkgs/applications/blockchains/wasabiwallet/default.nix @@ -0,0 +1,67 @@ +{ lib, stdenv +, fetchurl +, makeDesktopItem +, curl +, dotnetCorePackages +, fontconfig +, krb5 +, openssl +, xorg +, zlib +}: + +let + dotnet-runtime = dotnetCorePackages.runtime_5_0; + libPath = lib.makeLibraryPath [ + curl + dotnet-runtime + fontconfig.lib + krb5 + openssl + stdenv.cc.cc.lib + xorg.libX11 + zlib + ]; +in +stdenv.mkDerivation rec { + pname = "wasabiwallet"; + version = "1.1.12.9"; + + src = fetchurl { + url = "https://github.com/zkSNACKs/WalletWasabi/releases/download/v${version}/Wasabi-${version}.tar.gz"; + sha256 = "sha256-DtoLQbRXyR4xGm+M0xg9uj8wcbh1dOBJUG430OS8AS4="; + }; + + dontBuild = true; + dontPatchELF = true; + + desktopItem = makeDesktopItem { + name = "wasabi"; + exec = "wasabiwallet"; + desktopName = "Wasabi"; + genericName = "Bitcoin wallet"; + comment = meta.description; + categories = [ "Network" "Utility" ]; + }; + + installPhase = '' + mkdir -p $out/opt/${pname} $out/bin $out/share/applications + cp -Rv . $out/opt/${pname} + cd $out/opt/${pname} + for i in $(find . -type f -name '*.so') wassabee + do + patchelf --set-rpath ${libPath} $i + done + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" wassabee + ln -s $out/opt/${pname}/wassabee $out/bin/${pname} + cp -v $desktopItem/share/applications/* $out/share/applications + ''; + + meta = with lib; { + description = "Privacy focused Bitcoin wallet"; + homepage = "https://wasabiwallet.io/"; + license = licenses.mit; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ mmahut ]; + }; +} diff --git a/pkgs/applications/blockchains/wownero/default.nix b/pkgs/applications/blockchains/wownero/default.nix new file mode 100644 index 00000000000..9efdd6c56df --- /dev/null +++ b/pkgs/applications/blockchains/wownero/default.nix @@ -0,0 +1,61 @@ +{ lib, stdenv, fetchFromGitea, cmake, boost, miniupnpc_2, openssl, unbound +, readline, libsodium, rapidjson +}: + +with lib; +stdenv.mkDerivation rec { + pname = "wownero"; + version = "0.8.0.1"; + randomwowVersion = "1.1.7"; + + src = fetchFromGitea { + domain = "git.wownero.com"; + owner = "wownero"; + repo = "wownero"; + rev = "v${version}"; + sha256 = "sha256-+cUdousEiZMNwqhTvjoqw/k21x3dg7Lhb/5KyNUGrjQ="; + fetchSubmodules = false; + }; + + randomwow = fetchFromGitea { + domain = "git.wownero.com"; + owner = "wownero"; + repo = "RandomWOW"; + rev = randomwowVersion; + sha256 = "sha256-JzyRlHwM8rmJ5OaKHz+6vHGfpSz+X4zkFAKn4Jmo+EE="; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ + boost miniupnpc_2 openssl unbound rapidjson readline libsodium + ]; + + postUnpack = '' + rm -r $sourceRoot/external/RandomWOW + ln -s ${randomwow} $sourceRoot/external/RandomWOW + ''; + + cmakeFlags = [ + "-DReadline_ROOT_DIR=${readline.dev}" + "-DMANUAL_SUBMODULES=ON" + ]; + + meta = { + description = '' + A privacy-centric memecoin that was fairly launched on April 1, 2018 with + no pre-mine, stealth-mine or ICO + ''; + longDescription = '' + Wownero has a maximum supply of around 184 million WOW with a slow and + steady emission over 50 years. It is a fork of Monero, but with its own + genesis block, so there is no degradation of privacy due to ring + signatures using different participants for the same tx outputs on + opposing forks. + ''; + homepage = "https://wownero.org/"; + license = licenses.bsd3; + platforms = platforms.linux; + maintainers = with maintainers; [ fuwa ]; + }; +} diff --git a/pkgs/applications/blockchains/zcash/default.nix b/pkgs/applications/blockchains/zcash/default.nix new file mode 100644 index 00000000000..8dc15e7c9d8 --- /dev/null +++ b/pkgs/applications/blockchains/zcash/default.nix @@ -0,0 +1,65 @@ +{ rust, rustPlatform, stdenv, lib, fetchFromGitHub, autoreconfHook, makeWrapper +, cargo, pkg-config, curl, coreutils, boost175, db62, hexdump, libsodium +, libevent, utf8cpp, util-linux, withDaemon ? true, withMining ? true +, withUtils ? true, withWallet ? true, withZmq ? true, zeromq +}: + +rustPlatform.buildRustPackage.override { stdenv = stdenv; } rec { + pname = "zcash"; + version = "4.6.0-1"; + + src = fetchFromGitHub { + owner = "zcash"; + repo = "zcash"; + rev = "v${version}"; + sha256 = "sha256-YJ5ufo+LYbOTr9SyiEzzp1pcSx6+cHSvDLBOIcx9X+4="; + }; + + cargoSha256 = "sha256-m/SBHv3BNYKkSXxHnCdVng3blbHrTc/HxX/nEIa1DnM="; + + nativeBuildInputs = [ autoreconfHook cargo hexdump makeWrapper pkg-config ]; + buildInputs = [ boost175 libevent libsodium utf8cpp ] + ++ lib.optional withWallet db62 + ++ lib.optional withZmq zeromq; + + # Use the stdenv default phases (./configure; make) instead of the + # ones from buildRustPackage. + configurePhase = "configurePhase"; + buildPhase = "buildPhase"; + checkPhase = "checkPhase"; + installPhase = "installPhase"; + + postPatch = '' + # Have to do this here instead of in preConfigure because + # cargoDepsCopy gets unset after postPatch. + configureFlagsArray+=("RUST_VENDORED_SOURCES=$NIX_BUILD_TOP/$cargoDepsCopy") + ''; + + configureFlags = [ + "--disable-tests" + "--with-boost-libdir=${lib.getLib boost175}/lib" + "CXXFLAGS=-I${lib.getDev utf8cpp}/include/utf8cpp" + "RUST_TARGET=${rust.toRustTargetSpec stdenv.hostPlatform}" + ] ++ lib.optional (!withWallet) "--disable-wallet" + ++ lib.optional (!withDaemon) "--without-daemon" + ++ lib.optional (!withUtils) "--without-utils" + ++ lib.optional (!withMining) "--disable-mining"; + + enableParallelBuilding = true; + + # Requires hundreds of megabytes of zkSNARK parameters. + doCheck = false; + + postInstall = '' + wrapProgram $out/bin/zcash-fetch-params \ + --set PATH ${lib.makeBinPath [ coreutils curl util-linux ]} + ''; + + meta = with lib; { + description = "Peer-to-peer, anonymous electronic cash system"; + homepage = "https://z.cash/"; + maintainers = with maintainers; [ rht tkerber ]; + license = licenses.mit; + platforms = platforms.linux; + }; +} |