mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-25 08:23:09 +00:00
parent
d89cf08495
commit
9720acbb5e
169
pkgs/by-name/bi/bisq2/package.nix
Normal file
169
pkgs/by-name/bi/bisq2/package.nix
Normal file
@ -0,0 +1,169 @@
|
||||
{
|
||||
stdenvNoCC,
|
||||
lib,
|
||||
makeWrapper,
|
||||
runtimeShell,
|
||||
fetchurl,
|
||||
makeDesktopItem,
|
||||
copyDesktopItems,
|
||||
imagemagick,
|
||||
jdk23,
|
||||
dpkg,
|
||||
writeShellScript,
|
||||
bash,
|
||||
tor,
|
||||
zip,
|
||||
gnupg,
|
||||
}:
|
||||
|
||||
let
|
||||
version = "2.1.2";
|
||||
|
||||
jdk = jdk23.override { enableJavaFX = true; };
|
||||
|
||||
bisq-launcher =
|
||||
args:
|
||||
writeShellScript "bisq-launcher" ''
|
||||
# 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.
|
||||
# ${lib.getExe' tor "tor"}
|
||||
|
||||
rm -fR $HOME/.local/share/Bisq2/tor
|
||||
|
||||
exec "${lib.getExe jdk}" -Djpackage.app-version=@version@ -classpath @out@/lib/app/desktop-app-launcher.jar:@out@/lib/app/* ${args} bisq.desktop_app_launcher.DesktopAppLauncher "$@"
|
||||
'';
|
||||
|
||||
# A given release will be signed by either Alejandro Garcia or Henrik Jannsen
|
||||
# as indicated in the file
|
||||
# https://github.com/bisq-network/bisq2/releases/download/v${version}/signingkey.asc
|
||||
publicKey =
|
||||
{
|
||||
"E222AA02" = fetchurl {
|
||||
url = "https://github.com/bisq-network/bisq2/releases/download/v${version}/E222AA02.asc";
|
||||
sha256 = "sha256-31uBpe/+0QQwFyAsoCt1TUWRm0PHfCFOGOx1M16efoE=";
|
||||
};
|
||||
|
||||
"387C8307" = fetchurl {
|
||||
url = "https://github.com/bisq-network/bisq2/releases/download/v${version}/387C8307.asc";
|
||||
sha256 = "sha256-PrRYZLT0xv82dUscOBgQGKNf6zwzWUDhriAffZbNpmI=";
|
||||
};
|
||||
}
|
||||
."387C8307";
|
||||
in
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
inherit version;
|
||||
|
||||
pname = "bisq2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/bisq-network/bisq2/releases/download/v${version}/Bisq-${version}.deb";
|
||||
sha256 = "0zgv70xlz3c9mrwmiaa1dgagbc441ppk2vrkgard8zjrvk8rg7va";
|
||||
|
||||
# Verify the upstream Debian package prior to extraction.
|
||||
# See https://bisq.wiki/Bisq_2#Installation
|
||||
# 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/bisq2/releases/download/v${version}/Bisq-${version}.deb.asc";
|
||||
sha256 = "sha256-WZhI8RDmb7nQqpCQJM86vrp8qQNg+mvRVdSPcDqgzxE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
copyDesktopItems
|
||||
dpkg
|
||||
imagemagick
|
||||
makeWrapper
|
||||
zip
|
||||
gnupg
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "bisq2";
|
||||
exec = "bisq2";
|
||||
icon = "bisq2";
|
||||
desktopName = "Bisq 2";
|
||||
genericName = "Decentralized bitcoin exchange";
|
||||
categories = [
|
||||
"Network"
|
||||
"P2P"
|
||||
];
|
||||
})
|
||||
|
||||
(makeDesktopItem {
|
||||
name = "bisq2-hidpi";
|
||||
exec = "bisq2-hidpi";
|
||||
icon = "bisq2";
|
||||
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.
|
||||
|
||||
makeWrapper ${lib.getExe' tor "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/bisq2
|
||||
substituteAllInPlace $out/bin/bisq2
|
||||
|
||||
install -D -m 777 ${bisq-launcher "-Dglass.gtk.uiScale=2.0"} $out/bin/bisq2-hidpi
|
||||
substituteAllInPlace $out/bin/bisq2-hidpi
|
||||
|
||||
for n in 16 24 32 48 64 96 128 256; do
|
||||
size=$n"x"$n
|
||||
magick convert opt/bisq2/lib/Bisq2.png -resize $size bisq2.png
|
||||
install -Dm644 -t $out/share/icons/hicolor/$size/apps bisq2.png
|
||||
done;
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Decentralized bitcoin exchange network";
|
||||
homepage = "https://bisq.network";
|
||||
mainProgram = "bisq2";
|
||||
sourceProvenance = with sourceTypes; [
|
||||
binaryBytecode
|
||||
];
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ emmanuelrosa ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user