From e3e2bc8c6fd7f5c9002ccc3f7d7ffeecb6d42453 Mon Sep 17 00:00:00 2001 From: Angel J <78835633+Iamanaws@users.noreply.github.com> Date: Tue, 14 Jul 2026 18:10:56 -0700 Subject: [PATCH] signal-desktop: 8.15.0 -> 8.18.0 --- .../dont-assert-unicode-17-emoji.patch | 12 ----- .../si/signal-desktop/libsignal-node.nix | 8 +-- pkgs/by-name/si/signal-desktop/package.nix | 54 ++++++++++++++----- .../replace-apple-emoji-with-noto-emoji.patch | 12 ++--- pkgs/by-name/si/signal-desktop/ringrtc.nix | 6 +-- .../si/signal-desktop/signal-sqlcipher.nix | 6 +-- 6 files changed, 56 insertions(+), 42 deletions(-) delete mode 100644 pkgs/by-name/si/signal-desktop/dont-assert-unicode-17-emoji.patch diff --git a/pkgs/by-name/si/signal-desktop/dont-assert-unicode-17-emoji.patch b/pkgs/by-name/si/signal-desktop/dont-assert-unicode-17-emoji.patch deleted file mode 100644 index a39494ca8271..000000000000 --- a/pkgs/by-name/si/signal-desktop/dont-assert-unicode-17-emoji.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/scripts/generate-emoji-data.mjs b/scripts/generate-emoji-data.mjs -index 85fd8d484..23ca0bb72 100644 ---- a/scripts/generate-emoji-data.mjs -+++ b/scripts/generate-emoji-data.mjs -@@ -207,7 +207,6 @@ for (const emojiSrc of SRC_EMOJIS_SORTED) { - } - - const emoji = encodeUnified(emojiSrc.unified); -- assert(isEmoji(emoji), 'Unexpected invalid emoji'); - - if (isDeprecated(emoji)) { - continue; // drop deprecated emoji diff --git a/pkgs/by-name/si/signal-desktop/libsignal-node.nix b/pkgs/by-name/si/signal-desktop/libsignal-node.nix index c540ad1bfb83..b37ef4709c4a 100644 --- a/pkgs/by-name/si/signal-desktop/libsignal-node.nix +++ b/pkgs/by-name/si/signal-desktop/libsignal-node.nix @@ -15,23 +15,23 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "libsignal-node"; - version = "0.95.0"; + version = "0.96.3"; src = fetchFromGitHub { owner = "signalapp"; repo = "libsignal"; tag = "v${finalAttrs.version}"; - hash = "sha256-stxakRw9CJQetkBcF2BfQh1EvEGurccP5/QLNLyEJz0="; + hash = "sha256-FOppsfocUvUfWa6AfBPOxAnntGJkzTbnPwqMzzbHnWQ="; }; - cargoHash = "sha256-bbOsE6vcFQpplzXAupcvp2oEoIFT3nk8Ug9QWbCe2yc="; + cargoHash = "sha256-wsXlCpNwO+E6rVNaD2R51Mi0sZUv2lhllGxDxzyptYA="; npmRoot = "node"; npmDeps = fetchNpmDeps { name = "${finalAttrs.pname}-npm-deps"; inherit (finalAttrs) version src; sourceRoot = "${finalAttrs.src.name}/${finalAttrs.npmRoot}"; - hash = "sha256-lCLM0qI11Ce9w2NNgXHalxa8Ks628nvTjZhy26PvNbM="; + hash = "sha256-p8udihRlXMTnG4BT60D2VlI7D/O3eHV/zCS7ucpeuO4="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/si/signal-desktop/package.nix b/pkgs/by-name/si/signal-desktop/package.nix index 7fa96cde9803..be16d0a387f6 100644 --- a/pkgs/by-name/si/signal-desktop/package.nix +++ b/pkgs/by-name/si/signal-desktop/package.nix @@ -4,6 +4,7 @@ lib, nodejs_24, pnpm_10, + pnpm_11, node-gyp, fetchPnpmDeps, pnpmConfigHook, @@ -32,22 +33,25 @@ assert lib.warnIf (commandLineArgs != "") true; let nodejs = nodejs_24; - pnpm = pnpm_10; + pnpm = pnpm_11; electron = electron_42; libsignal-node = callPackage ./libsignal-node.nix { inherit nodejs; }; - signal-sqlcipher = callPackage ./signal-sqlcipher.nix { inherit pnpm nodejs; }; + signal-sqlcipher = callPackage ./signal-sqlcipher.nix { + pnpm = pnpm_10; + inherit nodejs; + }; webrtc = callPackage ./webrtc.nix { }; ringrtc = callPackage ./ringrtc.nix { inherit webrtc; }; - version = "8.15.0"; + version = "8.18.0"; src = fetchFromGitHub { owner = "signalapp"; repo = "Signal-Desktop"; tag = "v${version}"; - hash = "sha256-SiOgNUll6J+EZNlmM6yhXakOc5qFCFRE/GczhaH57Vo="; + hash = "sha256-fynCFGmch3UecT5esNfVVlf0+xDrCdCBGw2HMMqBzWw="; # Emoji font files will be added in `postFetch` if `withAppleEmojis` is enabled. They # are fetched separately below. postFetch = '' @@ -63,16 +67,28 @@ let sticker-creator = stdenv.mkDerivation (finalAttrs: { pname = "signal-desktop-sticker-creator"; - inherit version; - src = src + "/sticker-creator"; + inherit src version; + + pnpmRoot = "sticker-creator"; + pnpmWorkspaces = [ "signal-art-creator" ]; pnpmDeps = fetchPnpmDeps { - inherit (finalAttrs) pname src version; + inherit (finalAttrs) + pname + src + version + postPatch + pnpmWorkspaces + ; inherit pnpm; fetcherVersion = 4; - hash = "sha256-WmDSa4PrASaqs8X68LYaPBeE+i+Jh3FfWF30SseN74Y="; + hash = "sha256-bWNs5W2NPk55Sm7UqwWvXU7bY+AXzevU3o2ji23HxtU="; }; + postPatch = '' + rm sticker-creator/pnpm-lock.yaml + ''; + strictDeps = true; nativeBuildInputs = [ nodejs @@ -83,7 +99,7 @@ let installPhase = '' runHook preInstall - cp -r dist $out + cp -r sticker-creator/dist $out runHook postInstall ''; }); @@ -113,9 +129,6 @@ stdenv.mkDerivation (finalAttrs: { patches = [ ./force-90-days-expiration.patch - - # Drop once https://github.com/NixOS/nixpkgs/pull/520553 and https://github.com/NixOS/nixpkgs/pull/525241 land. - ./dont-assert-unicode-17-emoji.patch ] ++ lib.optional (!withAppleEmojis) ( # Signal ships the Apple emoji set without a licence and upstream @@ -149,6 +162,11 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace config/production.json \ --replace-fail '"updatesEnabled": true' '"updatesEnabled": false' + # pnpm 11 verifies node_modules before every `pnpm run`, which fails + # after nixpkgs swaps in the prebuilt native modules below. + substituteInPlace pnpm-workspace.yaml \ + --replace-fail "verifyDepsBeforeRun: prompt" "verifyDepsBeforeRun: false" + # Nix builds do not need upstream release hooks (notarization and # language-pack postprocessing), and they expect a different macOS # app layout than nixpkgs' Electron provides. @@ -172,13 +190,13 @@ stdenv.mkDerivation (finalAttrs: { ; inherit pnpm; fetcherVersion = 4; - hash = "sha256-/z+P9mb7Cm3FzzMpV6Da6THcHd73JgPuuB0Gx8KwKcc="; + hash = "sha256-bWNs5W2NPk55Sm7UqwWvXU7bY+AXzevU3o2ji23HxtU="; }; env = { ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; SIGNAL_ENV = "production"; - SOURCE_DATE_EPOCH = 1781737260; + SOURCE_DATE_EPOCH = 1783606680; }; preBuild = '' @@ -233,6 +251,14 @@ stdenv.mkDerivation (finalAttrs: { popd test -f node_modules/fs-xattr/build/Release/xattr.node + # @signalapp/windows-ucv is imported on all platforms, but its TypeScript + # output is normally produced by its preinstall script. pnpmConfigHook runs + # `pnpm install --ignore-scripts`, so build it explicitly. + pushd packages/windows-ucv + pnpm run build + popd + test -f node_modules/@signalapp/windows-ucv/dist/index.js + cp -r ${electron.dist} electron-dist chmod -R u+w electron-dist cp -r ${sticker-creator} sticker-creator/dist diff --git a/pkgs/by-name/si/signal-desktop/replace-apple-emoji-with-noto-emoji.patch b/pkgs/by-name/si/signal-desktop/replace-apple-emoji-with-noto-emoji.patch index 6cc74744b76c..2b3e50b13af0 100644 --- a/pkgs/by-name/si/signal-desktop/replace-apple-emoji-with-noto-emoji.patch +++ b/pkgs/by-name/si/signal-desktop/replace-apple-emoji-with-noto-emoji.patch @@ -1,13 +1,13 @@ diff --git a/app/AssetService.main.ts b/app/AssetService.main.ts -index 33b20b8d5..c122f8c67 100644 +index a4a21b5bb..3d5ab1eb0 100644 --- a/app/AssetService.main.ts +++ b/app/AssetService.main.ts -@@ -32,7 +32,6 @@ const LOCAL_ASSETS = new Set([ +@@ -34,7 +34,6 @@ const OPTIONAL_ASSETS = new Map([]); - // pathname to optional resource name - const OPTIONAL_ASSETS = new Map([ -- ['optional-fonts/emoji-large.woff2', 'emoji-font.woff2'], - ]); + if (!process.mas) { + LOCAL_ASSETS.add('fonts/emoji.woff2'); +- OPTIONAL_ASSETS.set('optional-fonts/emoji-large.woff2', 'emoji-font.woff2'); + } export class AssetService { diff --git a/app/protocol_filter.node.ts b/app/protocol_filter.node.ts diff --git a/pkgs/by-name/si/signal-desktop/ringrtc.nix b/pkgs/by-name/si/signal-desktop/ringrtc.nix index 04b0d64cd4a9..c981eb2b9a2d 100644 --- a/pkgs/by-name/si/signal-desktop/ringrtc.nix +++ b/pkgs/by-name/si/signal-desktop/ringrtc.nix @@ -19,16 +19,16 @@ let in rustPlatform.buildRustPackage (finalAttrs: { pname = "ringrtc"; - version = "2.69.3"; + version = "2.69.4"; src = fetchFromGitHub { owner = "signalapp"; repo = "ringrtc"; tag = "v${finalAttrs.version}"; - hash = "sha256-ekSXEaAyVzd5957qoFakD33UYrUmvxZL19M6uflPR5U="; + hash = "sha256-z/9Y9rrlH4yziEVAXrCmkmP42hdDm3frGJnL1O/qOqg="; }; - cargoHash = "sha256-oNHT2owg3Ob2z8JxdYnICRdogK+XaasVgbF5RYYBJas="; + cargoHash = "sha256-a6CEUVW1HXqgIp/S+4Ype83N3QtNCBrutiEepHNW5pY="; preConfigure = '' # Check for matching webrtc version diff --git a/pkgs/by-name/si/signal-desktop/signal-sqlcipher.nix b/pkgs/by-name/si/signal-desktop/signal-sqlcipher.nix index bdbf1db57ebd..d1b8824f2f2d 100644 --- a/pkgs/by-name/si/signal-desktop/signal-sqlcipher.nix +++ b/pkgs/by-name/si/signal-desktop/signal-sqlcipher.nix @@ -16,20 +16,20 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "node-sqlcipher"; - version = "3.3.5"; + version = "3.3.9"; src = fetchFromGitHub { owner = "signalapp"; repo = "node-sqlcipher"; tag = "v${finalAttrs.version}"; - hash = "sha256-RzuyUx0WEG8j8HwV5cepVJIeqYzJpNemFNtB+9NETto="; + hash = "sha256-eddDeNK8UA6CW1qXZtgS8QpuXVjFO6tVwpFDyYDnX+U="; }; pnpmDeps = fetchPnpmDeps { inherit (finalAttrs) pname version src; inherit pnpm; # may be different than top-level pnpm fetcherVersion = 4; - hash = "sha256-HK3AetwGqFq/dhxX+aWgUww6eLCeQEkZIVsmmnYqdmM="; + hash = "sha256-avvXNPfN5YVqwCOU2RX8dos3LTlre1t/4COKb4zHkh4="; }; cargoRoot = "deps/extension";