Skip to content

Commit ec5ec92

Browse files
authored
signal-desktop-source: build signal-sqlcipher from source (NixOS#397816)
2 parents 4035a7f + 21fbe41 commit ec5ec92

File tree

4 files changed

+97
-50
lines changed

4 files changed

+97
-50
lines changed

pkgs/by-name/si/signal-desktop-source/package.nix

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
}:
1919
let
2020
nodejs = nodejs_22;
21-
pnpm = pnpm_10;
21+
pnpm = pnpm_10.override { inherit nodejs; };
2222
electron = electron_35;
2323

2424
nodeOS =
@@ -39,6 +39,7 @@ let
3939
or (throw "unsupported platform ${stdenv.hostPlatform.parsed.cpu.name}");
4040

4141
libsignal-node = callPackage ./libsignal-node.nix { inherit nodejs; };
42+
signal-sqlcipher = callPackage ./signal-sqlcipher.nix { inherit pnpm nodejs; };
4243

4344
webrtc = callPackage ./webrtc.nix { };
4445
ringrtc = callPackage ./ringrtc.nix { inherit webrtc; };
@@ -85,7 +86,7 @@ let
8586

8687
nativeBuildInputs = [
8788
nodejs
88-
(pnpm.override { inherit nodejs; }).configHook
89+
pnpm.configHook
8990
];
9091

9192
buildPhase = ''
@@ -107,7 +108,7 @@ stdenv.mkDerivation (finalAttrs: {
107108

108109
nativeBuildInputs = [
109110
nodejs
110-
(pnpm.override { inherit nodejs; }).configHook
111+
pnpm.configHook
111112
makeWrapper
112113
copyDesktopItems
113114
python3
@@ -157,6 +158,11 @@ stdenv.mkDerivation (finalAttrs: {
157158
die "libsignal-client version mismatch"
158159
fi
159160
161+
if [ "`jq -r '.dependencies."@signalapp/sqlcipher"' < package.json`" != "${signal-sqlcipher.version}" ]
162+
then
163+
die "signal-sqlcipher version mismatch"
164+
fi
165+
160166
if [ "`jq -r '.dependencies."@signalapp/ringrtc"' < package.json`" != "${ringrtc.version}" ]
161167
then
162168
die "ringrtc version mismatch"
@@ -168,6 +174,9 @@ stdenv.mkDerivation (finalAttrs: {
168174
169175
rm -fr node_modules/@signalapp/libsignal-client/prebuilds
170176
cp -r ${libsignal-node}/lib node_modules/@signalapp/libsignal-client/prebuilds
177+
178+
rm -fr node_modules/@signalapp/sqlcipher
179+
cp -r ${signal-sqlcipher} node_modules/@signalapp/sqlcipher
171180
'';
172181

173182
buildPhase = ''
@@ -235,6 +244,7 @@ stdenv.mkDerivation (finalAttrs: {
235244
ringrtc
236245
webrtc
237246
sticker-creator
247+
signal-sqlcipher
238248
;
239249
tests.application-launch = nixosTests.signal-desktop;
240250
updateScript.command = [ ./update.sh ];
@@ -265,12 +275,5 @@ stdenv.mkDerivation (finalAttrs: {
265275
"x86_64-linux"
266276
"aarch64-linux"
267277
];
268-
sourceProvenance = with lib.sourceTypes; [
269-
fromSource
270-
271-
# @signalapp/sqlcipher
272-
# ringrtc
273-
binaryNativeCode
274-
];
275278
};
276279
})
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
{
2+
stdenv,
3+
lib,
4+
fetchFromGitHub,
5+
pnpm,
6+
nodejs,
7+
rustPlatform,
8+
cargo,
9+
dump_syms,
10+
python3,
11+
}:
12+
stdenv.mkDerivation (finalAttrs: {
13+
pname = "node-sqlcipher";
14+
version = "1.0.0";
15+
16+
src = fetchFromGitHub {
17+
owner = "signalapp";
18+
repo = "node-sqlcipher";
19+
tag = "v${finalAttrs.version}";
20+
hash = "sha256-fuChNio2iWYuxIj40jW1lJCZItnQKrzX7m1gJeeajvs=";
21+
};
22+
23+
pnpmDeps = pnpm.fetchDeps {
24+
inherit (finalAttrs) pname version src;
25+
hash = "sha256-regaYG+SDvIgdnHQVR1GG1A1FSBXpzFfLuyTEdMt1kQ=";
26+
};
27+
28+
cargoRoot = "deps/extension";
29+
cargoDeps = rustPlatform.fetchCargoVendor {
30+
name = "sqlcipher-signal-exentsion";
31+
inherit (finalAttrs) src cargoRoot;
32+
hash = "sha256-qT4HM/FRL8qugKKNlMYM/0zgUsC6cDOa9fgd1d4VIrc=";
33+
};
34+
35+
nativeBuildInputs = [
36+
nodejs
37+
pnpm.configHook
38+
rustPlatform.cargoSetupHook
39+
cargo
40+
dump_syms
41+
python3
42+
];
43+
44+
buildPhase = ''
45+
runHook preBuild
46+
47+
export npm_config_nodedir=${nodejs}
48+
pnpm run prebuildify
49+
pnpm run build
50+
51+
runHook postBuild
52+
'';
53+
54+
installPhase = ''
55+
runHook preInstall
56+
57+
cp -r dist $out
58+
cp -r prebuilds $out
59+
60+
runHook postInstall
61+
'';
62+
63+
meta = {
64+
description = "Fast N-API-based Node.js addon wrapping sqlcipher and FTS5 segmenting APIs";
65+
homepage = "https://github.com/signalapp/node-sqlcipher/tree/main";
66+
license = with lib.licenses; [
67+
agpl3Only
68+
69+
# deps/sqlcipher
70+
bsd3
71+
];
72+
platforms = lib.platforms.linux;
73+
};
74+
})

pkgs/by-name/si/signal-desktop-source/sqlite3.gyp

Lines changed: 0 additions & 40 deletions
This file was deleted.

pkgs/by-name/si/signal-desktop-source/update.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ latestVersion="`jq -r '.version' <<< $packageJson`"
2222
nodeVersion="`jq -r '.engines.node' <<< $packageJson | cut -d. -f1`"
2323
electronVersion="`jq -r '.devDependencies.electron' <<< $packageJson | cut -d. -f1`"
2424
libsignalClientVersion=`jq -r '.dependencies."@signalapp/libsignal-client"' <<< $packageJson`
25+
signalSqlcipherVersion=`jq -r '.dependencies."@signalapp/sqlcipher"' <<< $packageJson`
2526
ringrtcVersion=`jq -r '.dependencies."@signalapp/ringrtc"' <<< $packageJson`
2627
ringrtcVersionProperties="`curl_github "https://raw.githubusercontent.com/signalapp/ringrtc/refs/tags/v$ringrtcVersion/config/version.properties"`"
2728
webrtcVersion="`grep --only-matching "^webrtc.version=.*$" <<< $ringrtcVersionProperties | sed "s/webrtc.version=//g"`"
@@ -46,6 +47,15 @@ update-source-version signal-desktop-source.libsignal-node \
4647
--ignore-same-version \
4748
--source-key=npmDeps
4849
50+
update-source-version signal-desktop-source.signal-sqlcipher \
51+
"$signalSqlcipherVersion"
52+
update-source-version signal-desktop-source.signal-sqlcipher \
53+
--ignore-same-version \
54+
--source-key=cargoDeps.vendorStaging
55+
update-source-version signal-desktop-source.signal-sqlcipher \
56+
--ignore-same-version \
57+
--source-key=pnpmDeps
58+
4959
update-source-version signal-desktop-source.ringrtc "$ringrtcVersion"
5060
update-source-version signal-desktop-source.ringrtc \
5161
--ignore-same-version \

0 commit comments

Comments
 (0)