My personal project and infrastructure archive
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
nomicon/infra/libkookie/nixpkgs/unstable/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix

232 lines
5.1 KiB

{ lib
, stdenv
, fetchFromGitHub
, callPackage
, pkg-config
, cmake
, ninja
, clang
, python3
, wrapQtAppsHook
, removeReferencesTo
, extra-cmake-modules
, qtbase
, qtimageformats
, qtsvg
, kwayland
, lz4
, xxHash
, ffmpeg
, openalSoft
, minizip
, libopus
, alsa-lib
, libpulseaudio
, range-v3
, tl-expected
, hunspell
, glibmm
, jemalloc
, rnnoise
, abseil-cpp
, microsoft_gsl
, 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
}:
with lib;
let
tg_owt = callPackage ./tg_owt.nix {
abseil-cpp = (abseil-cpp.override {
# abseil-cpp should use the same compiler
inherit stdenv;
cxxStandard = "20";
}).overrideAttrs (_: {
# https://github.com/NixOS/nixpkgs/issues/130963
NIX_LDFLAGS = optionalString stdenv.isDarwin "-lc++abi";
});
# 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;
};
in
stdenv.mkDerivation rec {
pname = "kotatogram-desktop";
version = "1.4.9";
src = fetchFromGitHub {
owner = "kotatogram";
repo = "kotatogram-desktop";
rev = "k${version}";
sha256 = "sha256-6bF/6fr8mJyyVg53qUykysL7chuewtJB8E22kVyxjHw=";
fetchSubmodules = true;
};
patches = [
./kf594.patch
./shortcuts-binary-path.patch
# let it build with nixpkgs 10.12 sdk
./kotato-10.12-sdk.patch
];
postPatch = optionalString stdenv.isLinux ''
substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioInputALSA.cpp \
--replace '"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"'
substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioPulse.cpp \
--replace '"libpulse.so.0"' '"${libpulseaudio}/lib/libpulse.so.0"'
'' + optionalString stdenv.isDarwin ''
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"
'';
nativeBuildInputs = [
pkg-config
cmake
ninja
python3
wrapQtAppsHook
removeReferencesTo
] ++ optionals stdenv.isLinux [
# to build bundled libdispatch
clang
extra-cmake-modules
];
buildInputs = [
qtbase
qtimageformats
qtsvg
lz4
xxHash
ffmpeg
openalSoft
minizip
libopus
range-v3
tl-expected
rnnoise
tg_owt
microsoft_gsl
] ++ optionals stdenv.isLinux [
kwayland
alsa-lib
libpulseaudio
hunspell
glibmm
jemalloc
wayland
] ++ optionals stdenv.isDarwin [
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
libicns
];
# https://github.com/NixOS/nixpkgs/issues/130963
NIX_LDFLAGS = optionalString stdenv.isDarwin "-lc++abi";
enableParallelBuilding = true;
cmakeFlags = [
"-DTDESKTOP_API_TEST=ON"
"-DDESKTOP_APP_QT6=OFF"
];
installPhase = optionalString stdenv.isDarwin ''
mkdir -p $out/Applications
cp -r Kotatogram.app $out/Applications
ln -s $out/Applications/Kotatogram.app/Contents/MacOS $out/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
'';
passthru = {
inherit tg_owt;
};
meta = {
description = "Kotatogram experimental Telegram Desktop fork";
longDescription = ''
Unofficial desktop client for the Telegram messenger, based on Telegram Desktop.
It contains some useful (or purely cosmetic) features, but they could be unstable. A detailed list is available here: https://kotatogram.github.io/changes
'';
license = licenses.gpl3;
platforms = platforms.all;
homepage = "https://kotatogram.github.io";
changelog = "https://github.com/kotatogram/kotatogram-desktop/releases/tag/k{version}";
maintainers = with maintainers; [ ilya-fedin ];
};
}