about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/misc/electrum/grs.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/misc/electrum/grs.nix')
-rw-r--r--nixpkgs/pkgs/applications/misc/electrum/grs.nix119
1 files changed, 119 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/misc/electrum/grs.nix b/nixpkgs/pkgs/applications/misc/electrum/grs.nix
new file mode 100644
index 000000000000..87a85e9f986d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/electrum/grs.nix
@@ -0,0 +1,119 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, wrapQtAppsHook
+, python3
+, zbar
+, secp256k1
+, enableQt ? true
+, qtwayland
+}:
+
+let
+  version = "4.4.4";
+
+  libsecp256k1_name =
+    if stdenv.isLinux then "libsecp256k1.so.{v}"
+    else if stdenv.isDarwin then "libsecp256k1.{v}.dylib"
+    else "libsecp256k1${stdenv.hostPlatform.extensions.sharedLibrary}";
+
+  libzbar_name =
+    if stdenv.isLinux then "libzbar.so.0"
+    else if stdenv.isDarwin then "libzbar.0.dylib"
+    else "libzbar${stdenv.hostPlatform.extensions.sharedLibrary}";
+
+in
+
+python3.pkgs.buildPythonApplication {
+  pname = "electrum-grs";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "Groestlcoin";
+    repo = "electrum-grs";
+    rev = "refs/tags/v${version}";
+    sha256 = "0fl01qdvb1z6l6kwipj1lj0qmjk3mzw25wv7yh5j1hh1f5lng0s8";
+  };
+
+  nativeBuildInputs = lib.optionals enableQt [ wrapQtAppsHook ];
+  buildInputs = lib.optional stdenv.isLinux qtwayland;
+
+  propagatedBuildInputs = with python3.pkgs; [
+    aiohttp
+    aiohttp-socks
+    aiorpcx
+    attrs
+    bitstring
+    cryptography
+    dnspython
+    groestlcoin-hash
+    jsonrpclib-pelix
+    matplotlib
+    pbkdf2
+    protobuf
+    pysocks
+    qrcode
+    requests
+    tlslite-ng
+    certifi
+    # plugins
+    btchip-python
+    ledger-bitcoin
+    ckcc-protocol
+    keepkey
+    trezor
+  ] ++ lib.optionals enableQt [
+    pyqt5
+    qdarkstyle
+  ];
+
+  postPatch = ''
+    # make compatible with protobuf4 by easing dependencies ...
+    substituteInPlace ./contrib/requirements/requirements.txt \
+      --replace "protobuf>=3.20,<4" "protobuf>=3.20"
+    # ... and regenerating the paymentrequest_pb2.py file
+    protoc --python_out=. electrum_grs/paymentrequest.proto
+
+    substituteInPlace ./electrum_grs/ecc_fast.py \
+      --replace ${libsecp256k1_name} ${secp256k1}/lib/libsecp256k1${stdenv.hostPlatform.extensions.sharedLibrary}
+  '' + (if enableQt then ''
+    substituteInPlace ./electrum_grs/qrscanner.py \
+      --replace ${libzbar_name} ${zbar.lib}/lib/libzbar${stdenv.hostPlatform.extensions.sharedLibrary}
+  '' else ''
+    sed -i '/qdarkstyle/d' contrib/requirements/requirements.txt
+  '');
+
+  postInstall = lib.optionalString stdenv.isLinux ''
+    substituteInPlace $out/share/applications/electrum-grs.desktop \
+      --replace 'Exec=sh -c "PATH=\"\\$HOME/.local/bin:\\$PATH\"; electrum-grs %u"' \
+                "Exec=$out/bin/electrum-grs %u" \
+      --replace 'Exec=sh -c "PATH=\"\\$HOME/.local/bin:\\$PATH\"; electrum-grs --testnet %u"' \
+                "Exec=$out/bin/electrum-grs --testnet %u"
+  '';
+
+  postFixup = lib.optionalString enableQt ''
+    wrapQtApp $out/bin/electrum-grs
+  '';
+
+  # the tests are currently broken
+  doCheck = false;
+
+  postCheck = ''
+    $out/bin/electrum-grs help >/dev/null
+  '';
+
+  meta = with lib; {
+    description = "Lightweight Groestlcoin wallet";
+    longDescription = ''
+      An easy-to-use Groestlcoin client featuring wallets generated from
+      mnemonic seeds (in addition to other, more advanced, wallet options)
+      and the ability to perform transactions without downloading a copy
+      of the blockchain.
+    '';
+    homepage = "https://groestlcoin.org/";
+    downloadPage = "https://github.com/Groestlcoin/electrum-grs/releases/tag/v{version}";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ gruve-p ];
+  };
+}