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