diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/misc/electrum/default.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/misc/electrum/default.nix | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/misc/electrum/default.nix b/nixpkgs/pkgs/applications/misc/electrum/default.nix new file mode 100644 index 000000000000..0de055df5698 --- /dev/null +++ b/nixpkgs/pkgs/applications/misc/electrum/default.nix @@ -0,0 +1,128 @@ +{ stdenv, fetchurl, fetchFromGitHub, python3, python3Packages, zbar, secp256k1 + + +# for updater.nix +, writeScript +, common-updater-scripts +, bash +, coreutils +, curl +, gnugrep +, gnupg +, gnused +, nix +}: + +let + version = "3.3.7"; + + # Not provided in official source releases, which are what upstream signs. + tests = fetchFromGitHub { + owner = "spesmilo"; + repo = "electrum"; + rev = version; + sha256 = "1g2kbbsi6k105q6s0la20h12gz8dzka5kdcjbdhs12jqsjfx3lr0"; + + extraPostFetch = '' + mv $out ./all + mv ./all/electrum/tests $out + ''; + }; +in + +python3Packages.buildPythonApplication rec { + pname = "electrum"; + inherit version; + + src = fetchurl { + url = "https://download.electrum.org/${version}/Electrum-${version}.tar.gz"; + sha256 = "13ahc4zqpgzmck2r663sqqgz86xsd83r5qqi26mh2vazy1i6pykz"; + }; + + postUnpack = '' + # can't symlink, tests get confused + cp -ar ${tests} $sourceRoot/electrum/tests + ''; + + propagatedBuildInputs = with python3Packages; [ + aiorpcx + aiohttp + aiohttp-socks + dnspython + ecdsa + jsonrpclib-pelix + matplotlib + pbkdf2 + protobuf + pyaes + pycryptodomex + pyqt5 + pysocks + qdarkstyle + qrcode + requests + tlslite-ng + + # plugins + keepkey + trezor + btchip + + # TODO plugins + # amodem + ]; + + preBuild = '' + sed -i 's,usr_share = .*,usr_share = "'$out'/share",g' setup.py + sed -i "s|name = 'libzbar.*'|name='${zbar}/lib/libzbar.so'|" electrum/qrscanner.py + substituteInPlace ./electrum/ecc_fast.py --replace libsecp256k1.so.0 ${secp256k1}/lib/libsecp256k1.so.0 + ''; + + postInstall = '' + # Despite setting usr_share above, these files are installed under + # $out/nix ... + mv $out/${python3.sitePackages}/nix/store"/"*/share $out + rm -rf $out/${python3.sitePackages}/nix + + substituteInPlace $out/share/applications/electrum.desktop \ + --replace 'Exec=sh -c "PATH=\"\\$HOME/.local/bin:\\$PATH\"; electrum %u"' \ + "Exec=$out/bin/electrum %u" \ + --replace 'Exec=sh -c "PATH=\"\\$HOME/.local/bin:\\$PATH\"; electrum --testnet %u"' \ + "Exec=$out/bin/electrum --testnet %u" + ''; + + checkInputs = with python3Packages; [ pytest ]; + + checkPhase = '' + py.test electrum/tests + $out/bin/electrum help >/dev/null + ''; + + passthru.updateScript = import ./update.nix { + inherit (stdenv) lib; + inherit + writeScript + common-updater-scripts + bash + coreutils + curl + gnupg + gnugrep + gnused + nix + ; + }; + + meta = with stdenv.lib; { + description = "A lightweight Bitcoin wallet"; + longDescription = '' + An easy-to-use Bitcoin 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://electrum.org/; + license = licenses.mit; + maintainers = with maintainers; [ ehmry joachifm np ]; + }; +} |