about summary refs log tree commit diff
path: root/pkgs/applications/networking/instant-messengers/signal-desktop
diff options
context:
space:
mode:
authorAndré Silva <andrerfosilva@gmail.com>2021-07-28 18:22:28 +0100
committerAndré Silva <andrerfosilva@gmail.com>2021-10-10 22:17:06 +0100
commit7fac5898af6aa1485c09a7f61b73cf23e7049866 (patch)
tree827aa8e27d4b95453873c57f12483dfe223375ff /pkgs/applications/networking/instant-messengers/signal-desktop
parent772285e6bbfc0b7dee56cedbce013184acd52e0c (diff)
signal-desktop: preload sqlcipher library from nixpkgs
Diffstat (limited to 'pkgs/applications/networking/instant-messengers/signal-desktop')
-rw-r--r--pkgs/applications/networking/instant-messengers/signal-desktop/default.nix42
1 files changed, 36 insertions, 6 deletions
diff --git a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
index 81967bcbe2b78..9b884450bd3fc 100644
--- a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
@@ -10,6 +10,7 @@
 , hunspellDicts, spellcheckerLanguage ? null # E.g. "de_DE"
 # For a full list of available languages:
 # $ cat pkgs/development/libraries/hunspell/dictionaries.nix | grep "dictFileName =" | awk '{ print $3 }'
+, sqlcipher
 }:
 
 let
@@ -21,6 +22,40 @@ let
     in lib.optionalString (spellcheckerLanguage != null) ''
       --set HUNSPELL_DICTIONARIES "${hunspellDicts.${hunspellDict}}/share/hunspell" \
       --set LC_MESSAGES "${spellcheckerLanguage}"'');
+
+  sqlcipher-signal = sqlcipher.overrideAttrs (_: {
+    # Using the same features as the upstream signal sqlcipher build
+    # https://github.com/signalapp/better-sqlite3/blob/2fa02d2484e9f9a10df5ac7ea4617fb2dff30006/deps/defines.gypi
+    CFLAGS = [
+      "-DSQLITE_LIKE_DOESNT_MATCH_BLOBS"
+      "-DSQLITE_THREADSAFE=2"
+      "-DSQLITE_USE_URI=0"
+      "-DSQLITE_DEFAULT_MEMSTATUS=0"
+      "-DSQLITE_OMIT_DEPRECATED"
+      "-DSQLITE_OMIT_GET_TABLE"
+      "-DSQLITE_OMIT_TCL_VARIABLE"
+      "-DSQLITE_OMIT_PROGRESS_CALLBACK"
+      "-DSQLITE_OMIT_SHARED_CACHE"
+      "-DSQLITE_TRACE_SIZE_LIMIT=32"
+      "-DSQLITE_DEFAULT_CACHE_SIZE=-16000"
+      "-DSQLITE_DEFAULT_FOREIGN_KEYS=1"
+      "-DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1"
+      "-DSQLITE_ENABLE_COLUMN_METADATA"
+      "-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT"
+      "-DSQLITE_ENABLE_STAT4"
+      "-DSQLITE_ENABLE_FTS5"
+      "-DSQLITE_ENABLE_JSON1"
+      "-DSQLITE_ENABLE_RTREE"
+      "-DSQLITE_INTROSPECTION_PRAGMAS"
+
+      # SQLCipher-specific options
+      "-DSQLITE_HAS_CODEC"
+      "-DSQLITE_TEMP_STORE=2"
+      "-DSQLITE_SECURE_DELETE"
+    ];
+
+    LDFLAGS = [ "-lm" ];
+  });
 in stdenv.mkDerivation rec {
   pname = "signal-desktop";
   version = "5.19.0"; # Please backport all updates to the stable channel.
@@ -115,15 +150,10 @@ in stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
-  # Required for $SQLCIPHER_LIB which contains "/build/" inside the path:
-  noAuditTmpdir = true;
-
   preFixup = ''
-    export SQLCIPHER_LIB="$out/lib/Signal/resources/app.asar.unpacked/node_modules/better-sqlite3/build/Release/better_sqlite3.node"
-    test -x "$SQLCIPHER_LIB" # To ensure the location hasn't changed
     gappsWrapperArgs+=(
       --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ stdenv.cc.cc ] }"
-      --prefix LD_PRELOAD : "$SQLCIPHER_LIB"
+      --prefix LD_PRELOAD : "${sqlcipher-signal}/lib/libsqlcipher.so"
       ${customLanguageWrapperArgs}
     )