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.
232 lines
5.1 KiB
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 ];
|
|
};
|
|
}
|
|
|