diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/blockchains/bisq-desktop/default.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/blockchains/bisq-desktop/default.nix | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/blockchains/bisq-desktop/default.nix b/nixpkgs/pkgs/applications/blockchains/bisq-desktop/default.nix new file mode 100644 index 000000000000..8e6881f0d7e8 --- /dev/null +++ b/nixpkgs/pkgs/applications/blockchains/bisq-desktop/default.nix @@ -0,0 +1,126 @@ +{ stdenv +, lib +, makeWrapper +, fetchurl +, makeDesktopItem +, copyDesktopItems +, imagemagick +, openjdk11 +, dpkg +, writeScript +, bash +, strip-nondeterminism +, tor +, zip +, xz +, findutils +}: + +let + bisq-launcher = args: 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} + + classpath=@out@/lib/desktop.jar:@out@/lib/* + + exec "${openjdk11}/bin/java" -Djpackage.app-version=@version@ -XX:MaxRAM=8g -Xss1280k -XX:+UseG1GC -XX:MaxHeapFreeRatio=10 -XX:MinHeapFreeRatio=5 -XX:+UseStringDeduplication -Djava.net.preferIPv4Stack=true -classpath $classpath ${args} bisq.desktop.app.BisqAppMain "$@" + ''; + + bisq-tor = writeScript "bisq-tor" '' + #! ${bash}/bin/bash + + exec ${tor}/bin/tor "$@" + ''; +in +stdenv.mkDerivation rec { + pname = "bisq-desktop"; + version = "1.9.14"; + + src = fetchurl { + url = "https://github.com/bisq-network/bisq/releases/download/v${version}/Bisq-64bit-${version}.deb"; + sha256 = "0xbq94qbp59523xjp80bly38aisfwkfi0y9hmyhf8xlw084b82kz"; + }; + + nativeBuildInputs = [ + copyDesktopItems + dpkg + imagemagick + makeWrapper + strip-nondeterminism + xz + zip + findutils + ]; + + desktopItems = [ + (makeDesktopItem { + name = "Bisq"; + exec = "bisq-desktop"; + icon = "bisq"; + desktopName = "Bisq ${version}"; + genericName = "Decentralized bitcoin exchange"; + categories = [ "Network" "P2P" ]; + }) + + (makeDesktopItem { + name = "Bisq-hidpi"; + exec = "bisq-desktop-hidpi"; + icon = "bisq"; + desktopName = "Bisq ${version} (HiDPI)"; + 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 --sort=name --mtime="@$SOURCE_DATE_EPOCH" -cJf native/linux/x64/tor.tar.xz tor + tor_jar_file=$(find ./opt/bisq/lib/app -name "tor-binary-linux64-*.jar") + zip -r $tor_jar_file native + strip-nondeterminism ./opt/bisq/lib/app/*.jar + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out $out/bin + cp -r opt/bisq/lib/app $out/lib + + install -D -m 777 ${bisq-launcher ""} $out/bin/bisq-desktop + substituteAllInPlace $out/bin/bisq-desktop + + install -D -m 777 ${bisq-launcher "-Dglass.gtk.uiScale=2.0"} $out/bin/bisq-desktop-hidpi + substituteAllInPlace $out/bin/bisq-desktop-hidpi + + 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"; + sourceProvenance = with sourceTypes; [ binaryBytecode ]; + license = licenses.mit; + maintainers = with maintainers; [ juaningan emmanuelrosa ]; + platforms = [ "x86_64-linux" ]; + }; +} |