diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix index 7e932d74abc5..fff4400e0a49 100644 --- a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix +++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix @@ -1,4 +1,4 @@ -{ mkDerivation, lib, fetchurl, fetchsvn +{ mkDerivation, lib, fetchurl, callPackage , pkgconfig, cmake, ninja, python3, wrapGAppsHook, wrapQtAppsHook , qtbase, qtimageformats, gtk3, libsForQt5, enchant2, lz4, xxHash , dee, ffmpeg, openalSoft, minizip, libopus, alsaLib, libpulseaudio, range-v3 @@ -17,14 +17,17 @@ with lib; # - https://git.alpinelinux.org/aports/tree/testing/telegram-desktop/APKBUILD # - https://github.com/void-linux/void-packages/blob/master/srcpkgs/telegram-desktop/template -mkDerivation rec { +let + tg_owt = callPackage ./tg_owt.nix {}; + +in mkDerivation rec { pname = "telegram-desktop"; - version = "2.3.0"; + version = "2.4.3"; # Telegram-Desktop with submodules src = fetchurl { url = "https://github.com/telegramdesktop/tdesktop/releases/download/v${version}/tdesktop-${version}-full.tar.gz"; - sha256 = "0yga4p36jrc5m3d8q2y2g0505c2v540w5hgcscapl4xj9hyb21dw"; + sha256 = "15a8pnz4wf3464n8dvfzr9ck0vmhlx16ya1y889y3crjagm4ipjn"; }; postPatch = '' @@ -44,6 +47,7 @@ mkDerivation rec { qtbase qtimageformats gtk3 libsForQt5.libdbusmenu enchant2 lz4 xxHash dee ffmpeg openalSoft minizip libopus alsaLib libpulseaudio range-v3 tl-expected hunspell + tg_owt # TODO: Shouldn't be required: pcre xorg.libpthreadstubs xorg.libXdmcp utillinux libselinux libsepol epoxy at-spi2-core libXtst ]; @@ -60,7 +64,6 @@ mkDerivation rec { "-DDESKTOP_APP_USE_PACKAGED_GSL=OFF" "-DTDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME=ON" "-DTDESKTOP_USE_PACKAGED_TGVOIP=OFF" - "-DDESKTOP_APP_DISABLE_WEBRTC_INTEGRATION=ON" #"-DDESKTOP_APP_SPECIAL_TARGET=\"\"" # TODO: Error when set to "": Bad special target '""' "-DTDESKTOP_LAUNCHER_BASENAME=telegramdesktop" # Note: This is the default ]; @@ -82,6 +85,10 @@ mkDerivation rec { # TODO: Package mapbox-variant postFixup = '' + # Nuke refs to `tg_owt` which is introduced by `__FILE__` in headers. + sed -E "s|($NIX_STORE/)[a-z0-9]{32}(-${tg_owt.name})|\1eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\2|g" \ + --in-place $out/bin/telegram-desktop + # This is necessary to run Telegram in a pure environment. # We also use gappsWrapperArgs from wrapGAppsHook. wrapProgram $out/bin/telegram-desktop \ diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt-install.patch b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt-install.patch new file mode 100644 index 000000000000..bc8a23eb31e5 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt-install.patch @@ -0,0 +1,159 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6fbc0da..6cbff3c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1856,3 +1856,41 @@ configure_file( + "${CMAKE_CURRENT_BINARY_DIR}/tg_owtConfig.cmake" + COPYONLY + ) ++ ++install( ++TARGETS ++ tg_owt ++ libabsl ++ libopenh264 ++ libpffft ++ librnnoise ++ libsrtp ++ libusrsctp ++ libvpx ++ ${vpx_export} ++ libwebrtcbuild ++ libyuv ++ ${platform_export} ++EXPORT tg_owtTargets ++RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ++ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ++INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ++) ++ ++install( ++ DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/src/ ++ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ++ FILES_MATCHING PATTERN "*.h" ++) ++ ++install( ++ EXPORT tg_owtTargets ++ NAMESPACE tg_owt:: ++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/tg_owt ++) ++ ++install( ++ FILES ${CMAKE_CURRENT_BINARY_DIR}/tg_owtConfig.cmake ++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/tg_owt ++) +diff --git a/cmake/libabsl.cmake b/cmake/libabsl.cmake +index 2fb3b8c..4a4f85b 100644 +--- a/cmake/libabsl.cmake ++++ b/cmake/libabsl.cmake +@@ -123,5 +123,6 @@ PRIVATE + + target_include_directories(libabsl + PUBLIC +- ${libabsl_loc} ++ $ ++ $ + ) +diff --git a/cmake/libpffft.cmake b/cmake/libpffft.cmake +index a6ceb3e..435d3a3 100644 +--- a/cmake/libpffft.cmake ++++ b/cmake/libpffft.cmake +@@ -24,5 +24,6 @@ endif() + + target_include_directories(libpffft + PUBLIC +- ${libpffft_loc} ++ $ ++ $ + ) +diff --git a/cmake/libsrtp.cmake b/cmake/libsrtp.cmake +index 57c54b5..26b3466 100644 +--- a/cmake/libsrtp.cmake ++++ b/cmake/libsrtp.cmake +@@ -30,6 +30,8 @@ PRIVATE + + target_include_directories(libsrtp + PUBLIC +- ${libsrtp_loc}/include +- ${libsrtp_loc}/crypto/include ++ $ ++ $ ++ $ ++ $ + ) +diff --git a/cmake/libusrsctp.cmake b/cmake/libusrsctp.cmake +index caa0529..38d2ef6 100644 +--- a/cmake/libusrsctp.cmake ++++ b/cmake/libusrsctp.cmake +@@ -67,6 +67,8 @@ endif() + + target_include_directories(libusrsctp + PUBLIC +- ${third_party_loc}/usrsctp/usrsctplib +- ${libusrsctp_loc} ++ $ ++ $ ++ $ ++ $ + ) +diff --git a/cmake/libvpx.cmake b/cmake/libvpx.cmake +index e192e7e..78cf25b 100644 +--- a/cmake/libvpx.cmake ++++ b/cmake/libvpx.cmake +@@ -68,6 +68,11 @@ else() + set(ASM_SUFFIX ".asm.S") + endif() + ++foreach(dir ${include_directories}) ++ string(REPLACE ${libvpx_loc} include/third_party/libvpx install_include_dir ${dir}) ++ list(APPEND install_include_directories ${install_include_dir}) ++endforeach() ++ + function(add_sublibrary postfix) + add_library(libvpx_${postfix} OBJECT) + init_feature_target(libvpx_${postfix} ${postfix}) +@@ -75,6 +80,8 @@ function(add_sublibrary postfix) + target_include_directories(libvpx_${postfix} + PRIVATE + ${include_directories} ++ "$" ++ "$" + ) + set(sources_list ${ARGV}) + list(REMOVE_AT sources_list 0) +@@ -725,5 +732,6 @@ endif() + + target_include_directories(libvpx + PUBLIC +- ${include_directories} ++ "$" ++ "$" + ) +diff --git a/cmake/libwebrtcbuild.cmake b/cmake/libwebrtcbuild.cmake +index c3520b8..9b4b543 100644 +--- a/cmake/libwebrtcbuild.cmake ++++ b/cmake/libwebrtcbuild.cmake +@@ -44,5 +44,6 @@ endif() + + target_include_directories(libwebrtcbuild + INTERFACE +- ${webrtc_loc} ++ $ ++ $ + ) +diff --git a/cmake/libyuv.cmake b/cmake/libyuv.cmake +index ebfc6f0..18e70ef 100644 +--- a/cmake/libyuv.cmake ++++ b/cmake/libyuv.cmake +@@ -126,7 +126,8 @@ endif() + + target_include_directories(libyuv + PUBLIC +- ${libyuv_loc}/include ++ $ ++ $ + ) + + target_compile_definitions(libyuv diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix new file mode 100644 index 000000000000..47e9b6787e3e --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix @@ -0,0 +1,26 @@ +{ lib, stdenv, fetchFromGitHub, cmake, ninja, yasm +, pkg-config, libjpeg, openssl, libopus, ffmpeg, alsaLib, libpulseaudio +}: + +let + rev = "c73a4718cbff7048373a63db32068482e5fd11ef"; + sha256 = "0nr20mvvmmg8ii8f2rljd7iv2szplcfjn40rpy6llkmf705mwr1k"; + +in stdenv.mkDerivation { + pname = "tg_owt"; + version = "git-${rev}"; + + src = fetchFromGitHub { + owner = "desktop-app"; + repo = "tg_owt"; + inherit rev sha256; + }; + + patches = [ ./tg_owt-install.patch ]; + + nativeBuildInputs = [ pkg-config cmake ninja yasm ]; + + buildInputs = [ libjpeg openssl libopus ffmpeg alsaLib libpulseaudio ]; + + meta.license = lib.licenses.bsd3; +}