From 026ba2c7d352dbbd737c9ca691519fe75ca58de5 Mon Sep 17 00:00:00 2001 From: kashw2 Date: Mon, 15 Sep 2025 01:06:31 +1000 Subject: [PATCH 1/6] nextcloud-talk-desktop: add darwin support (cherry picked from commit b031816f58e7c8454e96c3d7c01e26002986cbef) --- .../ne/nextcloud-talk-desktop/package.nix | 208 +++++++++++------- 1 file changed, 127 insertions(+), 81 deletions(-) diff --git a/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix b/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix index c17cbca9ef66b..327d698d5368b 100644 --- a/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix +++ b/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix @@ -21,97 +21,143 @@ libglvnd, systemd, nix-update-script, + undmg, + makeWrapper, }: - -stdenv.mkDerivation (finalAttrs: { +let pname = "nextcloud-talk-desktop"; version = "2.0.3"; - # Building from source would require building also building Server and Talk components - # See https://github.com/nextcloud/talk-desktop?tab=readme-ov-file#%EF%B8%8F-prerequisites - src = fetchzip { - url = "https://github.com/nextcloud-releases/talk-desktop/releases/download/v${finalAttrs.version}/Nextcloud.Talk-linux-x64.zip"; - hash = "sha256-QKbg5vHLuxLpngrHom/odWw9RK43jhZsEg7Df5c7db0="; - stripRoot = false; - }; - - icon = fetchurl { - url = "https://raw.githubusercontent.com/nextcloud/talk-desktop/refs/tags/v1.0.0/img/icons/icon.png"; - hash = "sha256-DteSSuxIs0ukIJrvUO/3Mrh5F2GG5UAVvGRZUuZonkg="; + # Only x86_64-linux is supported with Darwin support being universal + sources = { + # Building from source would require building also building Server and Talk components + # See https://github.com/nextcloud/talk-desktop?tab=readme-ov-file#%EF%B8%8F-prerequisites + linux = fetchzip { + url = "https://github.com/nextcloud-releases/talk-desktop/releases/download/v${version}/Nextcloud.Talk-linux-x64.zip"; + hash = "sha256-QKbg5vHLuxLpngrHom/odWw9RK43jhZsEg7Df5c7db0="; + stripRoot = false; + }; + darwin = fetchurl { + url = "https://github.com/nextcloud-releases/talk-desktop/releases/download/v${version}/Nextcloud.Talk-macos-universal.dmg"; + hash = "sha256-FgiUb2MNEqmbK4BphHQ7M2IeN7Vg1NQ9FR9UO4AfvNs="; + }; }; - nativeBuildInputs = [ - autoPatchelfHook - copyDesktopItems - ]; - - buildInputs = [ - nss - cairo - alsa-lib - at-spi2-core - pango - libdrm - libxkbcommon - gtk3 - vivaldi-ffmpeg-codecs - libgbm - libGL - libglvnd - ] - ++ (with xorg; [ - libX11 - libXcomposite - libXdamage - libXrandr - libXfixes - libXcursor - ]); - - # Required to launch the application and proceed past the zygote_linux fork() process - # Fixes `Zygote could not fork` - runtimeDependencies = [ systemd ]; - - desktopItems = [ - (makeDesktopItem { - type = "Application"; - name = "nextcloud-talk-desktop"; - desktopName = "Nextcloud Talk"; - comment = finalAttrs.meta.description; - exec = finalAttrs.meta.mainProgram; - icon = "nextcloud-talk-desktop"; - categories = [ "Chat" ]; - }) - ]; - - preInstall = '' - mkdir -p $out/bin - mkdir -p $out/opt - - cp -r $src/* $out/opt/ - ''; - - installPhase = '' - runHook preInstall - - # Link the application in $out/bin away from contents of `preInstall` - ln -s "$out/opt/Nextcloud Talk-linux-x64/Nextcloud Talk" $out/bin/nextcloud-talk-desktop - mkdir -p $out/share/icons/hicolor/512x512/apps - cp $icon $out/share/icons/hicolor/512x512/apps/nextcloud-talk-desktop.png - - runHook postInstall - ''; - - passthru.updateScript = nix-update-script { }; - meta = { description = "Nextcloud Talk Desktop Client"; homepage = "https://github.com/nextcloud/talk-desktop"; - changelog = "https://github.com/nextcloud/talk-desktop/blob/${finalAttrs.version}/CHANGELOG.md"; + changelog = "https://github.com/nextcloud/talk-desktop/blob/${version}/CHANGELOG.md"; license = lib.licenses.agpl3Only; maintainers = with lib.maintainers; [ kashw2 ]; - mainProgram = "nextcloud-talk-desktop"; sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; - platforms = [ "x86_64-linux" ]; + mainProgram = "nextcloud-talk-desktop"; }; -}) + + linux = stdenv.mkDerivation (finalAttrs: { + inherit pname version; + + src = sources.linux; + + icon = fetchurl { + url = "https://raw.githubusercontent.com/nextcloud/talk-desktop/refs/tags/v${version}/img/icons/icon.png"; + hash = "sha256-DteSSuxIs0ukIJrvUO/3Mrh5F2GG5UAVvGRZUuZonkg="; + }; + + nativeBuildInputs = [ + autoPatchelfHook + copyDesktopItems + ]; + + buildInputs = [ + nss + cairo + alsa-lib + at-spi2-core + pango + libdrm + libxkbcommon + gtk3 + vivaldi-ffmpeg-codecs + libgbm + libGL + libglvnd + ] + ++ (with xorg; [ + libX11 + libXcomposite + libXdamage + libXrandr + libXfixes + libXcursor + ]); + + # Required to launch the application and proceed past the zygote_linux fork() process + # Fixes `Zygote could not fork` + runtimeDependencies = [ systemd ]; + + desktopItems = [ + (makeDesktopItem { + type = "Application"; + name = "nextcloud-talk-desktop"; + desktopName = "Nextcloud Talk"; + comment = finalAttrs.meta.description; + exec = finalAttrs.meta.mainProgram; + icon = "nextcloud-talk-desktop"; + categories = [ "Chat" ]; + }) + ]; + + preInstall = '' + mkdir -p $out/bin + mkdir -p $out/opt + + cp -r $src/* $out/opt/ + ''; + + installPhase = '' + runHook preInstall + + # Link the application in $out/bin away from contents of `preInstall` + ln -s "$out/opt/Nextcloud Talk-linux-x64/Nextcloud Talk" $out/bin/nextcloud-talk-desktop + mkdir -p $out/share/icons/hicolor/512x512/apps + cp $icon $out/share/icons/hicolor/512x512/apps/nextcloud-talk-desktop.png + + runHook postInstall + ''; + + passthru.updateScript = nix-update-script { }; + + meta = meta // { + platforms = lib.intersectLists lib.platforms.linux lib.platforms.x86_64; + }; + }); + + darwin = stdenv.mkDerivation (finalAttrs: { + inherit pname version; + + src = sources.darwin; + + nativeBuildInputs = [ + undmg + makeWrapper + ]; + + sourceRoot = "."; + + installPhase = '' + runHook preInstall + + mkdir -p $out/{Applications,bin} + mv Nextcloud\ Talk.app/Contents $out/Applications/ + + makeWrapper $out/Applications/Contents/MacOS/Nextcloud\ Talk $out/bin/nextcloud-talk-desktop + + runHook postInstall + ''; + + meta = meta // { + platforms = lib.platforms.darwin; + }; + }); +in +if stdenv.hostPlatform.isDarwin then darwin else linux From f445e6b07be021b286fdba7fca2a7923b2443a37 Mon Sep 17 00:00:00 2001 From: kashw2 Date: Sat, 29 Nov 2025 19:38:06 +1000 Subject: [PATCH 2/6] nextcloud-talk-desktop: fix missing libEGL.so.1 (cherry picked from commit 5ee47c1586442cc340cc1d5965759f6bf88940b8) --- pkgs/by-name/ne/nextcloud-talk-desktop/package.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix b/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix index 327d698d5368b..ae163564915b4 100644 --- a/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix +++ b/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix @@ -20,6 +20,7 @@ libGL, libglvnd, systemd, + patchelf, nix-update-script, undmg, makeWrapper, @@ -125,6 +126,11 @@ let runHook postInstall ''; + postFixup = '' + patchelf --add-needed libGL.so.1 --add-needed libEGL.so.1 \ + "$out/opt/Nextcloud Talk-linux-x64/Nextcloud Talk" + ''; + passthru.updateScript = nix-update-script { }; meta = meta // { From b9a0a6124bfaae450d2c1b0b14764a4ef646af47 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 30 Nov 2025 00:13:29 +0000 Subject: [PATCH 3/6] nextcloud-talk-desktop: 2.0.3 -> 2.0.4 (cherry picked from commit a25a1eb067fd9a7ae32af6f6c9d2707f7eca9d39) --- pkgs/by-name/ne/nextcloud-talk-desktop/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix b/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix index ae163564915b4..4cbd26a180350 100644 --- a/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix +++ b/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix @@ -27,7 +27,7 @@ }: let pname = "nextcloud-talk-desktop"; - version = "2.0.3"; + version = "2.0.4"; # Only x86_64-linux is supported with Darwin support being universal sources = { @@ -35,7 +35,7 @@ let # See https://github.com/nextcloud/talk-desktop?tab=readme-ov-file#%EF%B8%8F-prerequisites linux = fetchzip { url = "https://github.com/nextcloud-releases/talk-desktop/releases/download/v${version}/Nextcloud.Talk-linux-x64.zip"; - hash = "sha256-QKbg5vHLuxLpngrHom/odWw9RK43jhZsEg7Df5c7db0="; + hash = "sha256-Nky3ws1UV0F4qjbBog53BjXkZ/ttTER/32NlB2ONJaE="; stripRoot = false; }; darwin = fetchurl { From 20f91f6298ffeaab679a6f5707525a0d473d4b0b Mon Sep 17 00:00:00 2001 From: Michael Daniels Date: Sat, 6 Dec 2025 14:38:12 -0500 Subject: [PATCH 4/6] nextcloud-talk-desktop: actually use the patchelf that is passed as an argument (cherry picked from commit 14a3ca323e16a51ac260f40cd3dc8ac01e40f086) --- pkgs/by-name/ne/nextcloud-talk-desktop/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix b/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix index 4cbd26a180350..52a6e6f0d247e 100644 --- a/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix +++ b/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix @@ -127,7 +127,7 @@ let ''; postFixup = '' - patchelf --add-needed libGL.so.1 --add-needed libEGL.so.1 \ + ${lib.getExe patchelf} --add-needed libGL.so.1 --add-needed libEGL.so.1 \ "$out/opt/Nextcloud Talk-linux-x64/Nextcloud Talk" ''; From 8732de28e13a92e23f7296957a20549b60ab26d6 Mon Sep 17 00:00:00 2001 From: Michael Daniels Date: Sat, 6 Dec 2025 14:43:12 -0500 Subject: [PATCH 5/6] nextcloud-talk-desktop: use custom updateScript (cherry picked from commit 8db6f9f827987a7adcf171f9dddf00e6e2f1d756) --- .../ne/nextcloud-talk-desktop/package.nix | 23 +++++++---- .../ne/nextcloud-talk-desktop/update.py | 39 +++++++++++++++++++ 2 files changed, 54 insertions(+), 8 deletions(-) create mode 100755 pkgs/by-name/ne/nextcloud-talk-desktop/update.py diff --git a/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix b/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix index 52a6e6f0d247e..2814cfea42879 100644 --- a/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix +++ b/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix @@ -21,13 +21,17 @@ libglvnd, systemd, patchelf, - nix-update-script, undmg, makeWrapper, }: let pname = "nextcloud-talk-desktop"; - version = "2.0.4"; + version = "2.0.4"; # Ensure both hashes (Linux and Darwin) are updated! + + hashes = { + linux = "sha256-Nky3ws1UV0F4qjbBog53BjXkZ/ttTER/32NlB2ONJaE="; + darwin = "sha256-FgiUb2MNEqmbK4BphHQ7M2IeN7Vg1NQ9FR9UO4AfvNs="; + }; # Only x86_64-linux is supported with Darwin support being universal sources = { @@ -35,15 +39,20 @@ let # See https://github.com/nextcloud/talk-desktop?tab=readme-ov-file#%EF%B8%8F-prerequisites linux = fetchzip { url = "https://github.com/nextcloud-releases/talk-desktop/releases/download/v${version}/Nextcloud.Talk-linux-x64.zip"; - hash = "sha256-Nky3ws1UV0F4qjbBog53BjXkZ/ttTER/32NlB2ONJaE="; + hash = hashes.linux; stripRoot = false; }; darwin = fetchurl { url = "https://github.com/nextcloud-releases/talk-desktop/releases/download/v${version}/Nextcloud.Talk-macos-universal.dmg"; - hash = "sha256-FgiUb2MNEqmbK4BphHQ7M2IeN7Vg1NQ9FR9UO4AfvNs="; + hash = hashes.darwin; }; }; + passthru = { + inherit hashes; # needed by updateScript + updateScript = ./update.py; + }; + meta = { description = "Nextcloud Talk Desktop Client"; homepage = "https://github.com/nextcloud/talk-desktop"; @@ -55,7 +64,7 @@ let }; linux = stdenv.mkDerivation (finalAttrs: { - inherit pname version; + inherit pname version passthru; src = sources.linux; @@ -131,15 +140,13 @@ let "$out/opt/Nextcloud Talk-linux-x64/Nextcloud Talk" ''; - passthru.updateScript = nix-update-script { }; - meta = meta // { platforms = lib.intersectLists lib.platforms.linux lib.platforms.x86_64; }; }); darwin = stdenv.mkDerivation (finalAttrs: { - inherit pname version; + inherit pname version passthru; src = sources.darwin; diff --git a/pkgs/by-name/ne/nextcloud-talk-desktop/update.py b/pkgs/by-name/ne/nextcloud-talk-desktop/update.py new file mode 100755 index 0000000000000..21027bfc551db --- /dev/null +++ b/pkgs/by-name/ne/nextcloud-talk-desktop/update.py @@ -0,0 +1,39 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i python3 -p python3 bash nix-update jq + +import subprocess +from os.path import join, dirname + +# This will set the version correctly, +# and will also set the hash for x86_64-linux. +subprocess.run(["nix-update", "nextcloud-talk-desktop"]) + +# Now get the hash for Darwin. +# (It's the same for both Darwin platforms, and we don't support aarch64-linux). +newVer = subprocess.run( + ["nix-instantiate", "--eval", "--raw", "-A", "nextcloud-talk-desktop.version"], capture_output=True, encoding="locale" +).stdout + +darwinUrl = ( + f"https://github.com/nextcloud-releases/talk-desktop/releases/download/v{newVer}/Nextcloud.Talk-macos-universal.dmg" +) + +oldDarwinHash = subprocess.run( + ["nix-instantiate", "--eval", "--raw", "-A", f"nextcloud-talk-desktop.passthru.hashes.darwin"], + capture_output=True, + encoding="locale", +).stdout + +newDarwinHash = subprocess.run( + ["bash", "-c", f"nix store prefetch-file {darwinUrl} --json | jq -r '.hash'"], + capture_output=True, + encoding="locale", +).stdout.strip() # Has a newline + +with open(join(dirname(__file__), "package.nix"), "r") as f: + txt = f.read() + +txt = txt.replace(oldDarwinHash, newDarwinHash) + +with open(join(dirname(__file__), "package.nix"), "w") as f: + f.write(txt) From 39fbb7488312e084bf8dcfe86ce74ba351c5d22d Mon Sep 17 00:00:00 2001 From: Michael Daniels Date: Sat, 6 Dec 2025 15:53:26 -0500 Subject: [PATCH 6/6] nextcloud-talk-desktop: fix Darwin hash (cherry picked from commit d3045f5740690cca34d7a16e49a446f9f0412cc7) --- pkgs/by-name/ne/nextcloud-talk-desktop/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix b/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix index 2814cfea42879..410f2ed33554a 100644 --- a/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix +++ b/pkgs/by-name/ne/nextcloud-talk-desktop/package.nix @@ -30,7 +30,7 @@ let hashes = { linux = "sha256-Nky3ws1UV0F4qjbBog53BjXkZ/ttTER/32NlB2ONJaE="; - darwin = "sha256-FgiUb2MNEqmbK4BphHQ7M2IeN7Vg1NQ9FR9UO4AfvNs="; + darwin = "sha256-N/v1842rheqrjG4pAwrSDYNWhQDgWinTiZPusD1dvaM="; }; # Only x86_64-linux is supported with Darwin support being universal