nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix

155 lines
5.1 KiB
Nix
Raw Normal View History

2016-03-28 14:46:44 +01:00
{ stdenv, lib, fetchFromGitHub, fetchgit, qtbase, qtimageformats
, breakpad, ffmpeg, openalSoft, openssl, zlib, libexif, lzma, libopus
, gtk2, glib, cairo, pango, gdk_pixbuf, atk, libappindicator-gtk2
, libwebp, libunity, dee, libdbusmenu-glib, libva
2016-03-28 14:46:44 +01:00
, pkgconfig, libxcb, xcbutilwm, xcbutilimage, xcbutilkeysyms
, libxkbcommon, libpng, libjpeg, freetype, harfbuzz, pcre16
, xproto, libX11, inputproto, sqlite, dbus
}:
let
system-x86_64 = lib.elem stdenv.system lib.platforms.x86_64;
2016-06-09 19:37:24 +01:00
packagedQt = "5.6.0";
# Hacky: split "1.2.3-4" into "1.2.3" and "4"
systemQt = (builtins.parseDrvName qtbase.version).name;
2016-06-27 20:01:44 +01:00
2016-03-28 14:46:44 +01:00
in stdenv.mkDerivation rec {
name = "telegram-desktop-${version}";
2016-08-13 01:07:07 +01:00
version = "0.10.1";
2016-06-09 19:37:24 +01:00
qtVersion = lib.replaceStrings ["."] ["_"] packagedQt;
2016-03-28 14:46:44 +01:00
src = fetchFromGitHub {
owner = "telegramdesktop";
repo = "tdesktop";
rev = "v${version}";
2016-08-13 01:07:07 +01:00
sha256 = "08isxwif6zllglkpd9i7ypxm2s4bibzqris48607bafr88ylksdk";
2016-03-28 14:46:44 +01:00
};
tgaur = fetchgit {
url = "https://aur.archlinux.org/telegram-desktop.git";
2016-08-13 01:07:07 +01:00
rev = "9ce7be9efed501f988bb099956fa63729f2c25ea";
sha256 = "1wp6lqscpm2byizchm0bj48dg9bga02r9r69ns10zxk0gk0qvvdn";
2016-03-28 14:46:44 +01:00
};
buildInputs = [
breakpad ffmpeg openalSoft openssl zlib libexif lzma libopus
gtk2 glib libappindicator-gtk2 libunity cairo pango gdk_pixbuf atk
dee libdbusmenu-glib libva
2016-03-28 14:46:44 +01:00
# Qt dependencies
libxcb xcbutilwm xcbutilimage xcbutilkeysyms libxkbcommon
libpng libjpeg freetype harfbuzz pcre16 xproto libX11
inputproto sqlite dbus libwebp
2016-03-28 14:46:44 +01:00
];
nativeBuildInputs = [ pkgconfig ];
enableParallelBuilding = true;
qmakeFlags = [
"CONFIG+=release"
"DEFINES+=TDESKTOP_DISABLE_AUTOUPDATE"
"DEFINES+=TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
"INCLUDEPATH+=${breakpad}/include/breakpad"
2016-06-27 20:01:44 +01:00
"QT_TDESKTOP_VERSION=${systemQt}"
2016-03-28 14:46:44 +01:00
];
2016-06-09 19:37:24 +01:00
qtSrcs = [ qtbase.src qtimageformats.src ];
2016-03-28 14:46:44 +01:00
qtPatches = qtbase.patches;
2016-04-17 00:36:28 +01:00
buildCommand = ''
2016-03-28 14:46:44 +01:00
unpackPhase
cd "$sourceRoot"
2016-03-28 14:46:44 +01:00
patchPhase
sed -i 'Telegram/Telegram.pro' \
-e 's,CUSTOM_API_ID,,g' \
2016-03-28 14:46:44 +01:00
-e 's,/usr,/does-not-exist,g' \
-e 's, -flto,,g' \
2016-08-13 01:07:07 +01:00
-e 's,LIBS += .*libbreakpad_client.a,LIBS += ${breakpad}/lib/libbreakpad_client.a,' \
-e 's, -static-libstdc++,,g' \
-e '/LIBS += .*libxkbcommon.a/d'
2016-06-27 20:01:44 +01:00
export qmakeFlags="$qmakeFlags QT_TDESKTOP_PATH=$PWD/../qt"
2016-04-30 00:59:00 +01:00
export QMAKE=$PWD/../qt/bin/qmake
2016-03-28 14:46:44 +01:00
( mkdir -p ../Libraries
cd ../Libraries
for i in $qtSrcs; do
tar -xaf $i
done
2016-06-09 19:37:24 +01:00
cd qtbase-*
2016-06-27 20:01:44 +01:00
# This patch is outdated but the fixes doesn't feel very important
patch -p1 < ../../$sourceRoot/Telegram/Patches/qtbase_${qtVersion}.diff || true
2016-03-28 14:46:44 +01:00
for i in $qtPatches; do
patch -p1 < $i
done
${qtbase.postPatch}
2016-06-09 19:37:24 +01:00
cd ..
2016-03-28 14:46:44 +01:00
2016-06-09 19:37:24 +01:00
export configureFlags="-prefix "$PWD/../qt" -release -opensource -confirm-license -system-zlib \
2016-03-28 14:46:44 +01:00
-system-libpng -system-libjpeg -system-freetype -system-harfbuzz -system-pcre -system-xcb \
-system-xkbcommon-x11 -no-opengl -static -nomake examples -nomake tests \
2016-08-13 01:07:07 +01:00
-openssl-linked -dbus-linked -system-sqlite -verbose -no-gtkstyle \
2016-03-28 14:46:44 +01:00
${lib.optionalString (!system-x86_64) "-no-sse2"} -no-sse3 -no-ssse3 \
-no-sse4.1 -no-sse4.2 -no-avx -no-avx2 -no-mips_dsp -no-mips_dspr2"
export dontAddPrefix=1
export MAKEFLAGS=-j$NIX_BUILD_CORES
2016-03-28 14:46:44 +01:00
2016-06-09 19:37:24 +01:00
( cd qtbase-*
2016-03-28 14:46:44 +01:00
configurePhase
buildPhase
make install
)
2016-06-09 19:37:24 +01:00
( cd qtimageformats-*
$QMAKE
buildPhase
make install
2016-03-28 14:46:44 +01:00
)
)
( mkdir -p Linux/obj/codegen_style/Debug
cd Linux/obj/codegen_style/Debug
2016-06-27 20:01:44 +01:00
$QMAKE $qmakeFlags ../../../../Telegram/build/qmake/codegen_style/codegen_style.pro
buildPhase
)
( mkdir -p Linux/obj/codegen_numbers/Debug
cd Linux/obj/codegen_numbers/Debug
2016-06-27 20:01:44 +01:00
$QMAKE $qmakeFlags ../../../../Telegram/build/qmake/codegen_numbers/codegen_numbers.pro
buildPhase
)
( mkdir -p Linux/DebugIntermediateLang
cd Linux/DebugIntermediateLang
2016-06-27 20:01:44 +01:00
$QMAKE $qmakeFlags ../../Telegram/MetaLang.pro
2016-03-28 14:46:44 +01:00
buildPhase
)
( mkdir -p Linux/ReleaseIntermediate
cd Linux/ReleaseIntermediate
$QMAKE $qmakeFlags ../../Telegram/Telegram.pro
2016-03-28 14:46:44 +01:00
pattern="^PRE_TARGETDEPS +="
grep "$pattern" "../../Telegram/Telegram.pro" | sed "s/$pattern//g" | xargs make
buildPhase
)
install -Dm755 Linux/Release/Telegram $out/bin/telegram-desktop
mkdir -p $out/share/applications $out/share/kde4/services
sed "s,/usr/bin,$out/bin,g" $tgaur/telegramdesktop.desktop > $out/share/applications/telegramdesktop.desktop
sed "s,/usr/bin,$out/bin,g" $tgaur/tg.protocol > $out/share/kde4/services/tg.protocol
for icon_size in 16 32 48 64 128 256 512; do
2016-04-30 00:59:00 +01:00
install -Dm644 "Telegram/Resources/art/icon''${icon_size}.png" "$out/share/icons/hicolor/''${icon_size}x''${icon_size}/apps/telegram-desktop.png"
2016-03-28 14:46:44 +01:00
done
fixupPhase
'';
meta = with stdenv.lib; {
description = "Telegram Desktop messaging app";
license = licenses.gpl3;
platforms = platforms.linux;
homepage = "https://desktop.telegram.org/";
2016-05-25 16:43:15 +01:00
maintainers = with maintainers; [ abbradar garbas ];
2016-03-28 14:46:44 +01:00
};
}