From ed53720eef6434003151fd868e0c7de7b4bdf07b Mon Sep 17 00:00:00 2001 From: Emmanuel Rosa Date: Sun, 9 Jun 2024 13:29:32 -0400 Subject: [PATCH] bisq2: init @ 2.1.0 --- pkgs/by-name/bi/bisq/package.nix | 158 +++++++++++++++++++++++++++++++ pkgs/by-name/bi/bisq/pubkey.asc | 52 ++++++++++ pkgs/top-level/all-packages.nix | 4 + 3 files changed, 214 insertions(+) create mode 100644 pkgs/by-name/bi/bisq/package.nix create mode 100644 pkgs/by-name/bi/bisq/pubkey.asc diff --git a/pkgs/by-name/bi/bisq/package.nix b/pkgs/by-name/bi/bisq/package.nix new file mode 100644 index 000000000000000..f79a86cb5f650e5 --- /dev/null +++ b/pkgs/by-name/bi/bisq/package.nix @@ -0,0 +1,158 @@ +{ + stdenvNoCC, + lib, + makeWrapper, + fetchurl, + makeDesktopItem, + copyDesktopItems, + imagemagick, + openjdk, + dpkg, + writeScript, + bash, + tor, + zip, + gnupg, +}: + +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} + + rm -fR $HOME/.local/share/Bisq2/tor + + exec "${openjdk}/bin/java" -Djpackage.app-version=@version@ -classpath @out@/lib/app/desktop-app-launcher.jar:@out@/lib/app/* ${args} bisq.desktop_app_launcher.DesktopAppLauncher "$@" + ''; + + bisq-tor = writeScript "bisq-tor" '' + #! ${bash}/bin/bash + + exec ${tor}/bin/tor "$@" + ''; + + # Alejandro Garcia's public key was obtained from + # https://bisq.network/pubkey/E222AA02.asc + publicKey = ./pubkey.asc; +in +stdenvNoCC.mkDerivation rec { + pname = "bisq2"; + version = "2.1.0"; + + src = fetchurl { + url = "https://github.com/bisq-network/${pname}/releases/download/v${version}/Bisq-${version}.deb"; + sha256 = "sha256-nvJy7V0Jh0gWpDtj9tq4yjd/npOcy+wTo8YKAOJUOJs="; + + # Verify the upstream Debian package prior to extraction. + # See https://bisq.wiki/Downloading_and_installing#Verify_installer_file + # This ensures that a successful build of this Nix package requires the Debian + # package to pass verification. + nativeBuildInputs = [ gnupg ]; + downloadToTemp = true; + + postFetch = '' + pushd $(mktemp -d) + export GNUPGHOME=./gnupg + mkdir -m 700 -p $GNUPGHOME + ln -s $downloadedFile ./Bisq-${version}.deb + ln -s ${signature} ./signature.asc + gpg --import ${publicKey} + gpg --batch --verify signature.asc Bisq-${version}.deb + popd + mv $downloadedFile $out + ''; + }; + + signature = fetchurl { + url = "https://github.com/bisq-network/${pname}/releases/download/v${version}/Bisq-${version}.deb.asc"; + sha256 = "sha256-D8hLTTXTnoC75sePBZu2SO4I6DldwWNaxJCSDH+OElE="; + }; + + nativeBuildInputs = [ + copyDesktopItems + dpkg + imagemagick + makeWrapper + zip + gnupg + ]; + + desktopItems = [ + (makeDesktopItem { + name = pname; + exec = pname; + icon = pname; + desktopName = "Bisq 2"; + genericName = "Decentralized bitcoin exchange"; + categories = [ + "Network" + "P2P" + ]; + }) + + (makeDesktopItem { + name = "${pname}-hidpi"; + exec = "${pname}-hidpi"; + icon = pname; + desktopName = "Bisq 2 (HiDPI)"; + genericName = "Decentralized bitcoin exchange"; + categories = [ + "Network" + "P2P" + ]; + }) + ]; + + unpackPhase = '' + dpkg -x $src . + ''; + + buildPhase = '' + # Replace the Tor binary embedded in tor.jar (which is in the zip archive tor.zip) + # with the Tor binary from Nixpkgs. + + cp ${bisq-tor} ./tor + zip tor.zip ./tor + zip opt/bisq2/lib/app/tor.jar tor.zip + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib $out/bin + cp -r opt/bisq2/lib/app $out/lib + + install -D -m 777 ${bisq-launcher ""} $out/bin/${pname} + substituteAllInPlace $out/bin/${pname} + + install -D -m 777 ${bisq-launcher "-Dglass.gtk.uiScale=2.0"} $out/bin/${pname}-hidpi + substituteAllInPlace $out/bin/${pname}-hidpi + + for n in 16 24 32 48 64 96 128 256; do + size=$n"x"$n + magick convert opt/${pname}/lib/Bisq2.png -resize $size ${pname}.png + install -Dm644 -t $out/share/icons/hicolor/$size/apps ${pname}.png + done; + + runHook postInstall + ''; + + meta = with lib; { + description = "A decentralized bitcoin exchange network"; + homepage = "https://bisq.network"; + mainProgram = pname; + sourceProvenance = with sourceTypes; [ + binaryBytecode + nativeBinaryCode + ]; + license = licenses.mit; + maintainers = with maintainers; [ emmanuelrosa ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/by-name/bi/bisq/pubkey.asc b/pkgs/by-name/bi/bisq/pubkey.asc new file mode 100644 index 000000000000000..1a70fe9265ca98e --- /dev/null +++ b/pkgs/by-name/bi/bisq/pubkey.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +E75tU69fX3jkrGUnqLQIJ/yI3fXUCXnd +=ektd +-----END PGP PUBLIC KEY BLOCK----- diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 46d1f2e3a76fc5d..94d9d9adb0ce315 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3324,6 +3324,10 @@ with pkgs; openjdk11 = openjdk11.override { enableJavaFX = true; }; }; + bisq2 = callPackage ../by-name/bi/bisq/package.nix { + openjdk = jdk22.override { enableJavaFX = true; }; + }; + bic = callPackage ../development/interpreters/bic { }; biscuit-cli = callPackage ../tools/security/biscuit-cli { };