diff options
author | Bastian Köcher <info@kchr.de> | 2023-12-06 09:29:39 +0100 |
---|---|---|
committer | Jörg Thalheim <Mic92@users.noreply.github.com> | 2023-12-07 15:18:32 +0100 |
commit | 46e35b98e78b72128a56ed9810dd1a31adcac908 (patch) | |
tree | 107409d9211b32158e7daad32b8b6a5233fd538e /pkgs | |
parent | 449c6fb06be60edd4233bb9fe748a0754df185b1 (diff) |
signal-desktop: Adds support for `aarch64-linux`
This adds support for `signal-desktop` on `aarch64-linux`. This is achieved by leveraging a community deb package that builds it for `aarch64`. A future version may switches to a full custom build of the package, so that we don't need to use any debs at all.
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/applications/networking/instant-messengers/signal-desktop/default.nix | 11 | ||||
-rw-r--r-- | pkgs/applications/networking/instant-messengers/signal-desktop/generic.nix | 27 |
2 files changed, 27 insertions, 11 deletions
diff --git a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix index c545ac79a242b..c01f260406d4b 100644 --- a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix +++ b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix @@ -1,12 +1,17 @@ -{ callPackage }: builtins.mapAttrs (pname: attrs: callPackage ./generic.nix (attrs // { inherit pname; })) { - signal-desktop = { +{ callPackage, stdenv }: builtins.mapAttrs (pname: attrs: callPackage ./generic.nix (attrs // { inherit pname; })) { + signal-desktop = rec { dir = "Signal"; version = "6.40.0"; + version-aarch64 = "6.40.0"; + url = "https://updates.signal.org/desktop/apt/pool/s/signal-desktop/signal-desktop_${version}_amd64.deb"; + url-aarch64 = "https://github.com/0mniteck/Signal-Desktop-Mobian/raw/${version-aarch64}/builds/release/signal-desktop_${version-aarch64}_arm64.deb"; hash = "sha256-vyXHlycPSyEyv938IKzGM6pdERHHerx2CLY/U+WMrH4="; + hash-aarch64 = "sha256-3Pi0c+CGcJR1M4ll51m+B5PmGIcIjjlc0qa9b8rkMeU="; }; - signal-desktop-beta = { + signal-desktop-beta = rec { dir = "Signal Beta"; version = "6.40.0-beta.2"; hash = "sha256-pfedkxbZ25DFgz+/N7ZEb9LwKrHuoMM+Zi+Tc21QPsg="; + url = "https://updates.signal.org/desktop/apt/pool/s/signal-desktop-beta/signal-desktop-beta_${version}_amd64.deb"; }; } diff --git a/pkgs/applications/networking/instant-messengers/signal-desktop/generic.nix b/pkgs/applications/networking/instant-messengers/signal-desktop/generic.nix index 1d75bd542d6c0..c3e14775cb16a 100644 --- a/pkgs/applications/networking/instant-messengers/signal-desktop/generic.nix +++ b/pkgs/applications/networking/instant-messengers/signal-desktop/generic.nix @@ -1,7 +1,11 @@ { pname , dir , version +, version-aarch64 ? "" , hash +, hash-aarch64 ? "" +, url +, url-aarch64 ? "" , stdenv , lib , fetchurl @@ -51,8 +55,15 @@ , wayland }: -stdenv.mkDerivation rec { - inherit pname version; # Please backport all updates to the stable channel. +let + inherit (stdenv) targetPlatform; + ARCH = if targetPlatform.isAarch64 then "arm64" else "x64"; + final-version = if targetPlatform.isAarch64 then version-aarch64 else version; +in stdenv.mkDerivation rec { + inherit pname; + version = final-version; + + # Please backport all updates to the stable channel. # All releases have a limited lifetime and "expire" 90 days after the release. # When releases "expire" the application becomes unusable until an update is # applied. The expiration date for the current release can be extracted with: @@ -61,8 +72,8 @@ stdenv.mkDerivation rec { # few additional steps and might not be the best idea.) src = fetchurl { - url = "https://updates.signal.org/desktop/apt/pool/s/${pname}/${pname}_${version}_amd64.deb"; - inherit hash; + url = if targetPlatform.isAarch64 then url-aarch64 else url; + hash = if targetPlatform.isAarch64 then hash-aarch64 else hash; }; nativeBuildInputs = [ @@ -163,7 +174,7 @@ stdenv.mkDerivation rec { ${if pname == "signal-desktop" then "--replace \"bin/signal-desktop\" \"bin/signal-desktop --use-tray-icon\"" else ""} autoPatchelf --no-recurse -- "$out/lib/${dir}/" - patchelf --add-needed ${libpulseaudio}/lib/libpulse.so "$out/lib/${dir}/resources/app.asar.unpacked/node_modules/@signalapp/ringrtc/build/linux/libringrtc-x64.node" + patchelf --add-needed ${libpulseaudio}/lib/libpulse.so "$out/lib/${dir}/resources/app.asar.unpacked/node_modules/@signalapp/ringrtc/build/linux/libringrtc-${ARCH}.node" ''; # Tests if the application launches and waits for "Link your phone to Signal Desktop": @@ -176,11 +187,11 @@ stdenv.mkDerivation rec { "Signal Android" or "Signal iOS" app. ''; homepage = "https://signal.org/"; - changelog = "https://github.com/signalapp/Signal-Desktop/releases/tag/v${version}"; + changelog = "https://github.com/signalapp/Signal-Desktop/releases/tag/v${final-version}"; license = lib.licenses.agpl3Only; - maintainers = with lib.maintainers; [ mic92 equirosa urandom ]; + maintainers = with lib.maintainers; [ mic92 equirosa urandom bkchr ]; mainProgram = pname; - platforms = [ "x86_64-linux" ]; + platforms = if builtins.stringLength version-aarch64 > 0 then [ "x86_64-linux" "aarch64-linux" ] else [ "x86_64-linux" ]; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; }; } |