sparrow: init at 1.6.4

+276
+232
pkgs/applications/blockchains/sparrow/default.nix
··· 1 + { stdenv 2 + , lib 3 + , makeWrapper 4 + , fetchurl 5 + , makeDesktopItem 6 + , copyDesktopItems 7 + , autoPatchelfHook 8 + , openjdk17 9 + , gtk3 10 + , gsettings-desktop-schemas 11 + , writeScript 12 + , bash 13 + , gnugrep 14 + , tor 15 + , zlib 16 + , openimajgrabber 17 + , hwi 18 + , imagemagick 19 + }: 20 + 21 + let 22 + pname = "sparrow"; 23 + version = "1.6.4"; 24 + 25 + src = fetchurl { 26 + url = "https://github.com/sparrowwallet/${pname}/releases/download/${version}/${pname}-${version}.tar.gz"; 27 + sha256 = "1wdibpbhv3g6qk42ddfc5vyqkkwprczy45w5wi115qg3g1rf1in7"; 28 + }; 29 + 30 + launcher = writeScript "sparrow" '' 31 + #! ${bash}/bin/bash 32 + params=( 33 + --module-path @out@/lib:@jdkModules@/modules 34 + --add-opens javafx.graphics/com.sun.javafx.css=org.controlsfx.controls 35 + --add-opens javafx.graphics/javafx.scene=org.controlsfx.controls 36 + --add-opens javafx.controls/com.sun.javafx.scene.control.behavior=org.controlsfx.controls 37 + --add-opens javafx.controls/com.sun.javafx.scene.control.inputmap=org.controlsfx.controls 38 + --add-opens javafx.graphics/com.sun.javafx.scene.traversal=org.controlsfx.controls 39 + --add-opens javafx.base/com.sun.javafx.event=org.controlsfx.controls 40 + --add-opens javafx.controls/javafx.scene.control.cell=com.sparrowwallet.sparrow 41 + --add-opens org.controlsfx.controls/impl.org.controlsfx.skin=com.sparrowwallet.sparrow 42 + --add-opens org.controlsfx.controls/impl.org.controlsfx.skin=javafx.fxml 43 + --add-opens javafx.graphics/com.sun.javafx.tk=centerdevice.nsmenufx 44 + --add-opens javafx.graphics/com.sun.javafx.tk.quantum=centerdevice.nsmenufx 45 + --add-opens javafx.graphics/com.sun.glass.ui=centerdevice.nsmenufx 46 + --add-opens javafx.controls/com.sun.javafx.scene.control=centerdevice.nsmenufx 47 + --add-opens javafx.graphics/com.sun.javafx.menu=centerdevice.nsmenufx 48 + --add-opens javafx.graphics/com.sun.glass.ui=com.sparrowwallet.sparrow 49 + --add-opens javafx.graphics/com.sun.javafx.application=com.sparrowwallet.sparrow 50 + --add-opens java.base/java.net=com.sparrowwallet.sparrow 51 + --add-opens java.base/java.io=com.google.gson 52 + --add-reads com.sparrowwallet.merged.module=java.desktop 53 + --add-reads com.sparrowwallet.merged.module=java.sql 54 + --add-reads com.sparrowwallet.merged.module=com.sparrowwallet.sparrow 55 + --add-reads com.sparrowwallet.merged.module=logback.classic 56 + --add-reads com.sparrowwallet.merged.module=com.fasterxml.jackson.databind 57 + --add-reads com.sparrowwallet.merged.module=com.fasterxml.jackson.annotation 58 + --add-reads com.sparrowwallet.merged.module=com.fasterxml.jackson.core 59 + --add-reads com.sparrowwallet.merged.module=co.nstant.in.cbor 60 + -m com.sparrowwallet.sparrow 61 + ) 62 + 63 + XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS ${openjdk17}/bin/java ''${params[@]} $@ 64 + ''; 65 + 66 + torWrapper = writeScript "tor-wrapper" '' 67 + #! ${bash}/bin/bash 68 + 69 + exec ${tor}/bin/tor "$@" 70 + ''; 71 + 72 + jdk-modules = stdenv.mkDerivation { 73 + name = "jdk-modules"; 74 + nativeBuildInputs = [ openjdk17 ]; 75 + dontUnpack = true; 76 + 77 + buildPhase = '' 78 + # Extract the JDK's JIMAGE and generate a list of modules. 79 + mkdir modules 80 + pushd modules 81 + jimage extract ${openjdk17}/lib/openjdk/lib/modules 82 + ls | xargs -d " " -- echo > ../manifest.txt 83 + popd 84 + ''; 85 + 86 + installPhase = '' 87 + mkdir -p $out 88 + cp manifest.txt $out/ 89 + cp -r modules/ $out/ 90 + ''; 91 + }; 92 + 93 + sparrow-modules = stdenv.mkDerivation { 94 + pname = "sparrow-modules"; 95 + inherit version src; 96 + nativeBuildInputs = [ makeWrapper gnugrep openjdk17 autoPatchelfHook stdenv.cc.cc.lib zlib ]; 97 + 98 + buildPhase = '' 99 + # Extract Sparrow's JIMAGE and generate a list of them. 100 + mkdir modules 101 + pushd modules 102 + jimage extract ../lib/runtime/lib/modules 103 + 104 + # Delete JDK modules 105 + cat ${jdk-modules}/manifest.txt | xargs -I {} -- rm -fR {} 106 + 107 + # Delete unneeded native libs. 108 + 109 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/freebsd-x86-64 110 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/freebsd-x86 111 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/linux-aarch64 112 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/linux-arm 113 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/linux-armel 114 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/linux-mips64el 115 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/linux-ppc 116 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/linux-ppc64le 117 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/linux-s390x 118 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/linux-x86 119 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/openbsd-x86-64 120 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/openbsd-x86 121 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/sunos-sparc 122 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/sunos-sparcv9 123 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/sunos-x86-64 124 + rm -fR com.sparrowwallet.merged.module/com/sun/jna/sunos-x86 125 + rm -fR com.github.sarxos.webcam.capture/com/github/sarxos/webcam/ds/buildin/lib/linux_armel 126 + rm -fR com.github.sarxos.webcam.capture/com/github/sarxos/webcam/ds/buildin/lib/linux_armhf 127 + rm -fR com.github.sarxos.webcam.capture/com/github/sarxos/webcam/ds/buildin/lib/linux_x86 128 + rm com.github.sarxos.webcam.capture/com/github/sarxos/webcam/ds/buildin/lib/linux_x64/OpenIMAJGrabber.so 129 + rm -fR com.nativelibs4java.bridj/org/bridj/lib/linux_arm32_armel 130 + rm -fR com.nativelibs4java.bridj/org/bridj/lib/linux_armel 131 + rm -fR com.nativelibs4java.bridj/org/bridj/lib/linux_armhf 132 + rm -fR com.nativelibs4java.bridj/org/bridj/lib/linux_x86 133 + rm -fR com.nativelibs4java.bridj/org/bridj/lib/sunos_x64 134 + rm -fR com.nativelibs4java.bridj/org/bridj/lib/sunos_x86 135 + rm -fR com.sparrowwallet.merged.module/linux-aarch64 136 + rm -fR com.sparrowwallet.merged.module/linux-arm 137 + rm -fR com.sparrowwallet.merged.module/linux-x86 138 + rm com.sparrowwallet.sparrow/native/linux/x64/hwi 139 + 140 + ls | xargs -d " " -- echo > ../manifest.txt 141 + find . | grep "\.so$" | xargs -- chmod ugo+x 142 + popd 143 + 144 + # Replace the embedded Tor binary (which is in a Tar archive) 145 + # with one from Nixpkgs. 146 + cp ${torWrapper} ./tor 147 + tar -cJf tor.tar.xz tor 148 + cp tor.tar.xz modules/netlayer.jpms/native/linux/x64/tor.tar.xz 149 + ''; 150 + 151 + installPhase = '' 152 + mkdir -p $out 153 + cp manifest.txt $out/ 154 + cp -r modules/ $out/ 155 + ln -s ${openimajgrabber}/lib/OpenIMAJGrabber.so $out/modules/com.github.sarxos.webcam.capture/com/github/sarxos/webcam/ds/buildin/lib/linux_x64/OpenIMAJGrabber.so 156 + ln -s ${hwi}/bin/hwi $out/modules/com.sparrowwallet.sparrow/native/linux/x64/hwi 157 + ''; 158 + }; 159 + 160 + # To use the udev rules for connected hardware wallets, 161 + # add "pkgs.sparrow" to "services.udev.packages" and add user accounts to the user group "plugdev". 162 + udev-rules = stdenv.mkDerivation { 163 + name = "sparrow-udev"; 164 + 165 + src = let version = "2.0.2"; in 166 + fetchurl { 167 + url = "https://github.com/bitcoin-core/HWI/releases/download/${version}/hwi-${version}.tar.gz"; 168 + sha256 = "sha256-di1fRsMbwpHcBFNTCVivfxpwhUoUKLA3YTnJxKq/jHM="; 169 + }; 170 + 171 + installPhase = '' 172 + mkdir -p $out/etc/udev/rules.d 173 + cp -a hwilib/udev/* $out/etc/udev/rules.d 174 + rm $out/etc/udev/rules.d/README.md 175 + ''; 176 + }; 177 + in 178 + stdenv.mkDerivation rec { 179 + inherit pname version src; 180 + nativeBuildInputs = [ makeWrapper copyDesktopItems ]; 181 + 182 + desktopItems = [ 183 + (makeDesktopItem { 184 + name = "Sparrow"; 185 + exec = pname; 186 + icon = pname; 187 + desktopName = "Sparrow Bitcoin Wallet"; 188 + genericName = "Bitcoin Wallet"; 189 + categories = [ "Finance" ]; 190 + }) 191 + ]; 192 + 193 + sparrow-icons = stdenv.mkDerivation { 194 + inherit version src; 195 + pname = "sparrow-icons"; 196 + nativeBuildInputs = [ imagemagick ]; 197 + 198 + installPhase = '' 199 + for n in 16 24 32 48 64 96 128 256; do 200 + size=$n"x"$n 201 + mkdir -p $out/hicolor/$size/apps 202 + convert lib/Sparrow.png -resize $size $out/hicolor/$size/apps/sparrow.png 203 + done; 204 + ''; 205 + }; 206 + 207 + installPhase = '' 208 + runHook preInstall 209 + 210 + mkdir -p $out/bin $out 211 + ln -s ${sparrow-modules}/modules $out/lib 212 + install -D -m 777 ${launcher} $out/bin/sparrow 213 + substituteAllInPlace $out/bin/sparrow 214 + substituteInPlace $out/bin/sparrow --subst-var-by jdkModules ${jdk-modules} 215 + 216 + mkdir -p $out/share/icons 217 + ln -s ${sparrow-icons}/hicolor $out/share/icons 218 + 219 + mkdir -p $out/etc/udev 220 + ln -s ${udev-rules}/etc/udev/rules.d $out/etc/udev/rules.d 221 + 222 + runHook postInstall 223 + ''; 224 + 225 + meta = with lib; { 226 + description = "A modern desktop Bitcoin wallet application supporting most hardware wallets and built on common standards such as PSBT, with an emphasis on transparency and usability."; 227 + homepage = "https://sparrowwallet.com"; 228 + license = licenses.asl20; 229 + maintainers = with maintainers; [ emmanuelrosa _1000101 ]; 230 + platforms = [ "x86_64-linux" ]; 231 + }; 232 + }
+40
pkgs/applications/blockchains/sparrow/openimajgrabber.nix
··· 1 + { stdenv 2 + , lib 3 + , fetchFromGitHub 4 + , libv4l 5 + }: 6 + stdenv.mkDerivation rec { 7 + pname = "openimajgrabber"; 8 + version = "1.3.10"; 9 + 10 + src = fetchFromGitHub { 11 + owner = "openimaj"; 12 + repo = "openimaj"; 13 + rev = "openimaj-${version}"; 14 + sha256 = "sha256-Y8707ovE7f6Fk3cJ+PtwvzNpopgH5vlF55m2Xm4hjYM="; 15 + }; 16 + 17 + buildInputs = [ libv4l ]; 18 + 19 + # These build instructions come from build.sh 20 + buildPhase = '' 21 + pushd hardware/core-video-capture/src-native/linux 22 + g++ -fPIC -g -c OpenIMAJGrabber.cpp 23 + g++ -fPIC -g -c capture.cpp 24 + g++ -shared -Wl,-soname,OpenIMAJGrabber.so -o OpenIMAJGrabber.so OpenIMAJGrabber.o capture.o -lv4l2 -lrt -lv4lconvert 25 + popd 26 + ''; 27 + 28 + installPhase = '' 29 + mkdir -p $out/lib 30 + cp hardware/core-video-capture/src-native/linux/OpenIMAJGrabber.so $out/lib 31 + ''; 32 + 33 + meta = with lib; { 34 + description = "A collection of libraries and tools for multimedia (images, text, video, audio, etc.) content analysis and content generation. This package only builds the OpenIMAJGrabber for Linux."; 35 + homepage = "http://www.openimaj.org"; 36 + license = licenses.bsd0; 37 + maintainers = with maintainers; [ emmanuelrosa _1000101 ]; 38 + platforms = platforms.linux; 39 + }; 40 + }
+4
pkgs/top-level/all-packages.nix
··· 10454 10454 10455 10455 sozu = callPackage ../servers/sozu { }; 10456 10456 10457 + sparrow = callPackage ../applications/blockchains/sparrow { 10458 + openimajgrabber = callPackage ../applications/blockchains/sparrow/openimajgrabber.nix {}; 10459 + }; 10460 + 10457 10461 sparsehash = callPackage ../development/libraries/sparsehash { }; 10458 10462 10459 10463 spectre-meltdown-checker = callPackage ../tools/security/spectre-meltdown-checker { };