diff options
Diffstat (limited to 'pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix')
-rw-r--r-- | pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix | 124 |
1 files changed, 50 insertions, 74 deletions
diff --git a/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix index f0732ec039208..aaabf518b959d 100644 --- a/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix +++ b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix @@ -6,17 +6,18 @@ , cmake , ninja , clang +, lld , python3 , wrapQtAppsHook , removeReferencesTo -, extra-cmake-modules , qtbase , qtimageformats , qtsvg -, kwayland +, qtwayland +, kcoreaddons , lz4 , xxHash -, ffmpeg_4 +, ffmpeg , openalSoft , minizip , libopus @@ -25,94 +26,59 @@ , range-v3 , tl-expected , hunspell -, glibmm +, gobject-introspection +, glibmm_2_68 , jemalloc , rnnoise , abseil-cpp , microsoft-gsl +, boost +, fmt , wayland , libicns -, Cocoa -, CoreFoundation -, CoreServices -, CoreText -, CoreGraphics -, CoreMedia -, OpenGL -, AudioUnit -, ApplicationServices -, Foundation -, AGL -, Security -, SystemConfiguration -, Carbon -, AudioToolbox -, VideoToolbox -, VideoDecodeAcceleration -, AVFoundation -, CoreAudio -, CoreVideo -, CoreMediaIO -, QuartzCore -, AppKit -, CoreWLAN -, WebKit -, IOKit -, GSS -, MediaPlayer -, IOSurface -, Metal -, MetalKit +, darwin }: let tg_owt = callPackage ./tg_owt.nix { - abseil-cpp = abseil-cpp.override { - # abseil-cpp should use the same compiler - inherit stdenv; - cxxStandard = "20"; - }; - # tg_owt should use the same compiler inherit stdenv; - - inherit Cocoa AppKit IOKit IOSurface Foundation AVFoundation CoreMedia VideoToolbox - CoreGraphics CoreVideo OpenGL Metal MetalKit CoreFoundation ApplicationServices; }; + + mainProgram = if stdenv.isLinux then "kotatogram-desktop" else "Kotatogram"; in stdenv.mkDerivation rec { pname = "kotatogram-desktop"; - version = "1.4.9"; + version = "0-unstable-2024-07-01"; src = fetchFromGitHub { owner = "kotatogram"; repo = "kotatogram-desktop"; - rev = "k${version}"; - sha256 = "sha256-6bF/6fr8mJyyVg53qUykysL7chuewtJB8E22kVyxjHw="; + rev = "fbb22ebd3e39dfa4a036fa79a7a3f78b86b1cea2"; + sha256 = "sha256-ccfmaqapk9ct+5kvBI02xHJ7YCGmm1CcqwM+3hC1bk0="; fetchSubmodules = true; }; patches = [ - ./kf594.patch - ./shortcuts-binary-path.patch + ./macos.patch + ./macos-opengl.patch ]; postPatch = lib.optionalString stdenv.isLinux '' substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioInputALSA.cpp \ - --replace '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"' + --replace-fail '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"' substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioOutputALSA.cpp \ - --replace '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"' + --replace-fail '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"' substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioPulse.cpp \ - --replace '"libpulse.so.0"' '"${libpulseaudio}/lib/libpulse.so.0"' + --replace-fail '"libpulse.so.0"' '"${libpulseaudio}/lib/libpulse.so.0"' '' + lib.optionalString stdenv.isDarwin '' - sed -i "13i#import <CoreAudio/CoreAudio.h>" Telegram/lib_webrtc/webrtc/mac/webrtc_media_devices_mac.mm - substituteInPlace Telegram/CMakeLists.txt \ - --replace 'COMMAND iconutil' 'COMMAND png2icns' \ - --replace '--convert icns' "" \ - --replace '--output AppIcon.icns' 'AppIcon.icns' \ - --replace "\''${appicon_path}" "\''${appicon_path}/icon_16x16.png \''${appicon_path}/icon_32x32.png \''${appicon_path}/icon_128x128.png \''${appicon_path}/icon_256x256.png \''${appicon_path}/icon_512x512.png" + substituteInPlace Telegram/lib_webrtc/webrtc/platform/mac/webrtc_environment_mac.mm \ + --replace-fail kAudioObjectPropertyElementMain kAudioObjectPropertyElementMaster ''; + # Wrapping the inside of the app bundles, avoiding double-wrapping + dontWrapQtApps = stdenv.isDarwin; + nativeBuildInputs = [ pkg-config cmake @@ -123,7 +89,9 @@ stdenv.mkDerivation rec { ] ++ lib.optionals stdenv.isLinux [ # to build bundled libdispatch clang - extra-cmake-modules + gobject-introspection + ] ++ lib.optionals stdenv.isDarwin [ + lld ]; buildInputs = [ @@ -132,7 +100,7 @@ stdenv.mkDerivation rec { qtsvg lz4 xxHash - ffmpeg_4 + ffmpeg openalSoft minizip libopus @@ -141,15 +109,18 @@ stdenv.mkDerivation rec { rnnoise tg_owt microsoft-gsl + boost ] ++ lib.optionals stdenv.isLinux [ - kwayland + qtwayland + kcoreaddons alsa-lib libpulseaudio hunspell - glibmm + glibmm_2_68 jemalloc + fmt wayland - ] ++ lib.optionals stdenv.isDarwin [ + ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk_11_0.frameworks; [ Cocoa CoreFoundation CoreServices @@ -180,27 +151,34 @@ stdenv.mkDerivation rec { MediaPlayer IOSurface Metal + NaturalLanguage libicns - ]; + ]); enableParallelBuilding = true; + env = lib.optionalAttrs stdenv.isDarwin { + NIX_CFLAGS_LINK = "-fuse-ld=lld"; + }; + cmakeFlags = [ "-DTDESKTOP_API_TEST=ON" - "-DDESKTOP_APP_QT6=OFF" ]; installPhase = lib.optionalString stdenv.isDarwin '' mkdir -p $out/Applications - cp -r Kotatogram.app $out/Applications - ln -s $out/Applications/Kotatogram.app/Contents/MacOS $out/bin + cp -r ${mainProgram}.app $out/Applications + ln -s $out/{Applications/${mainProgram}.app/Contents/MacOS,bin} ''; preFixup = '' - binName=${if stdenv.isLinux then "kotatogram-desktop" else "Kotatogram"} - remove-references-to -t ${stdenv.cc.cc} $out/bin/$binName - remove-references-to -t ${microsoft-gsl} $out/bin/$binName - remove-references-to -t ${tg_owt.dev} $out/bin/$binName + remove-references-to -t ${stdenv.cc.cc} $out/bin/${mainProgram} + remove-references-to -t ${microsoft-gsl} $out/bin/${mainProgram} + remove-references-to -t ${tg_owt.dev} $out/bin/${mainProgram} + ''; + + postFixup = lib.optionalString stdenv.isDarwin '' + wrapQtApp $out/Applications/${mainProgram}.app/Contents/MacOS/${mainProgram} ''; passthru = { @@ -208,8 +186,8 @@ stdenv.mkDerivation rec { }; meta = with lib; { + inherit mainProgram; description = "Kotatogram – experimental Telegram Desktop fork"; - mainProgram = "kotatogram-desktop"; longDescription = '' Unofficial desktop client for the Telegram messenger, based on Telegram Desktop. @@ -220,7 +198,5 @@ stdenv.mkDerivation rec { homepage = "https://kotatogram.github.io"; changelog = "https://github.com/kotatogram/kotatogram-desktop/releases/tag/k{version}"; maintainers = with maintainers; [ ilya-fedin ]; - # never built on aarch64-darwin since first introduction in nixpkgs - broken = stdenv.isDarwin && stdenv.isAarch64; }; } |