298 lines
5.9 KiB
Nix
298 lines
5.9 KiB
Nix
{ stdenv
|
|
, lib
|
|
, pkg-config
|
|
, fetchFromGitLab
|
|
, gitUpdater
|
|
, ffmpeg_6
|
|
|
|
# for daemon
|
|
, autoreconfHook
|
|
, perl # for pod2man
|
|
, alsa-lib
|
|
, asio
|
|
, dbus
|
|
, sdbus-cpp
|
|
, fmt
|
|
, gmp
|
|
, gnutls
|
|
, http-parser
|
|
, jack
|
|
, jsoncpp
|
|
, libarchive
|
|
, libgit2
|
|
, libnatpmp
|
|
, libpulseaudio
|
|
, libupnp
|
|
, yaml-cpp
|
|
, msgpack-cxx
|
|
, openssl
|
|
, restinio
|
|
, secp256k1
|
|
, speex
|
|
, udev
|
|
, webrtc-audio-processing
|
|
, zlib
|
|
|
|
# for client
|
|
, cmake
|
|
, git
|
|
, networkmanager # for libnm
|
|
, python3
|
|
, qttools # for translations
|
|
, wrapQtAppsHook
|
|
, libnotify
|
|
, qt5compat
|
|
, qtbase
|
|
, qtdeclarative
|
|
, qrencode
|
|
, qtmultimedia
|
|
, qtnetworkauth
|
|
, qtpositioning
|
|
, qtsvg
|
|
, qtwebengine
|
|
, qtwebchannel
|
|
, wrapGAppsHook3
|
|
, withWebengine ? true
|
|
|
|
# for pjsip
|
|
, fetchFromGitHub
|
|
, pjsip
|
|
|
|
# for opendht
|
|
, opendht
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "jami";
|
|
version = "20240430.0";
|
|
|
|
src = fetchFromGitLab {
|
|
domain = "git.jami.net";
|
|
owner = "savoirfairelinux";
|
|
repo = "jami-client-qt";
|
|
rev = "stable/${version}";
|
|
hash = "sha256-v7558m2h3RqvLLhf3BdYO9LKCFKuMTtPIXgH6OXiiY4=";
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
pjsip-jami = pjsip.overrideAttrs (old: rec {
|
|
version = "797f1a38cc1066acc4adc9561aa1288afabe72d5";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "savoirfairelinux";
|
|
repo = "pjproject";
|
|
rev = version;
|
|
hash = "sha256-lTDbJF09R2G+EIkMj1YyKa4XokH9LlcIG+RhRJhzUes=";
|
|
};
|
|
|
|
configureFlags = [
|
|
"--disable-sound"
|
|
"--enable-video"
|
|
"--enable-ext-sound"
|
|
"--disable-speex-aec"
|
|
"--disable-g711-codec"
|
|
"--disable-l16-codec"
|
|
"--disable-gsm-codec"
|
|
"--disable-g722-codec"
|
|
"--disable-g7221-codec"
|
|
"--disable-speex-codec"
|
|
"--disable-ilbc-codec"
|
|
"--disable-opencore-amr"
|
|
"--disable-silk"
|
|
"--disable-sdl"
|
|
"--disable-ffmpeg"
|
|
"--disable-v4l2"
|
|
"--disable-openh264"
|
|
"--disable-resample"
|
|
"--disable-libwebrtc"
|
|
"--with-gnutls=yes"
|
|
]
|
|
++ lib.optionals stdenv.isLinux [
|
|
"--enable-epoll"
|
|
];
|
|
|
|
buildInputs = old.buildInputs ++ [ gnutls ];
|
|
});
|
|
|
|
opendht-jami = (opendht.overrideAttrs {
|
|
src = fetchFromGitHub {
|
|
owner = "savoirfairelinux";
|
|
repo = "opendht";
|
|
rev = "f2cee8e9ce24746caa7dee1847829c526d340284";
|
|
hash = "sha256-ZnIrlybF3MCiXxxv80tRzCJ5CJ54S42prGUjq1suJNA=";
|
|
};
|
|
}).override {
|
|
enableProxyServerAndClient = true;
|
|
enablePushNotifications = true;
|
|
};
|
|
|
|
dhtnet = stdenv.mkDerivation {
|
|
pname = "dhtnet";
|
|
version = "unstable-2022-04-26";
|
|
|
|
src = fetchFromGitLab {
|
|
domain = "git.jami.net";
|
|
owner = "savoirfairelinux";
|
|
repo = "dhtnet";
|
|
rev = "d7976982d24867c6faaf8103504ec8a10d932fa0";
|
|
hash = "sha256-vazFDMIu/3AWeOz0LZhZD9NFO8cd5AK41zBpqpQrqnc=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
pkg-config
|
|
];
|
|
|
|
buildInputs = [
|
|
asio
|
|
fmt
|
|
gnutls
|
|
http-parser
|
|
jsoncpp
|
|
libupnp
|
|
msgpack-cxx
|
|
opendht-jami
|
|
openssl
|
|
pjsip-jami
|
|
python3
|
|
restinio
|
|
];
|
|
|
|
cmakeFlags = [
|
|
"-DBUILD_SHARED_LIBS=Off"
|
|
"-DBUILD_BENCHMARKS=Off"
|
|
"-DBUILD_TOOLS=Off"
|
|
"-DBUILD_TESTING=Off"
|
|
];
|
|
|
|
meta = with lib; {
|
|
description = "Lightweight Peer-to-Peer Communication Library";
|
|
license = licenses.gpl3Only;
|
|
platforms = platforms.linux;
|
|
maintainers = [ maintainers.linsui ];
|
|
};
|
|
};
|
|
|
|
daemon = stdenv.mkDerivation {
|
|
pname = "jami-daemon";
|
|
inherit src version meta;
|
|
sourceRoot = "${src.name}/daemon";
|
|
|
|
nativeBuildInputs = [
|
|
autoreconfHook
|
|
pkg-config
|
|
perl
|
|
];
|
|
|
|
buildInputs = [
|
|
alsa-lib
|
|
asio
|
|
dbus
|
|
dhtnet
|
|
sdbus-cpp
|
|
fmt
|
|
ffmpeg_6
|
|
gmp
|
|
gnutls
|
|
http-parser
|
|
jack
|
|
jsoncpp
|
|
libarchive
|
|
libgit2
|
|
libnatpmp
|
|
libpulseaudio
|
|
libupnp
|
|
yaml-cpp
|
|
msgpack-cxx
|
|
opendht-jami
|
|
openssl
|
|
pjsip-jami
|
|
restinio
|
|
secp256k1
|
|
speex
|
|
udev
|
|
webrtc-audio-processing
|
|
zlib
|
|
];
|
|
|
|
enableParallelBuilding = true;
|
|
};
|
|
|
|
qwindowkit = fetchFromGitHub {
|
|
owner = "stdware";
|
|
repo = "qwindowkit";
|
|
rev = "79b1f3110754f9c21af2d7dacbd07b1a9dbaf6ef";
|
|
hash = "sha256-iZfmv3ADVjHf47HPK/FdrfeAzrXbxbjH3H5MFVg/ZWE=";
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
postPatch = ''
|
|
sed -i -e '/GIT_REPOSITORY/,+1c SOURCE_DIR ''${CMAKE_CURRENT_SOURCE_DIR}/qwindowkit' extras/build/cmake/contrib_tools.cmake
|
|
sed -i -e 's/if(DISTRO_NEEDS_QMSETUP_PATCH)/if(TRUE)/' CMakeLists.txt
|
|
cp -R --no-preserve=mode,ownership ${qwindowkit} qwindowkit
|
|
'';
|
|
|
|
preConfigure = ''
|
|
echo 'const char VERSION_STRING[] = "${version}";' > src/app/version.h
|
|
# Currently the daemon is still built seperately but jami expects it in CMAKE_INSTALL_PREFIX
|
|
# This can be removed in future versions when JAMICORE_AS_SUBDIR is on
|
|
mkdir -p $out
|
|
ln -s ${daemon} $out/daemon
|
|
'';
|
|
|
|
dontWrapGApps = true;
|
|
|
|
nativeBuildInputs = [
|
|
wrapGAppsHook3
|
|
wrapQtAppsHook
|
|
pkg-config
|
|
cmake
|
|
git
|
|
python3
|
|
qttools
|
|
];
|
|
|
|
buildInputs = [
|
|
ffmpeg_6
|
|
libnotify
|
|
networkmanager
|
|
qtbase
|
|
qt5compat
|
|
qrencode
|
|
qtnetworkauth
|
|
qtdeclarative
|
|
qtmultimedia
|
|
qtpositioning
|
|
qtsvg
|
|
qtwebchannel
|
|
] ++ lib.optionals withWebengine [
|
|
qtwebengine
|
|
];
|
|
|
|
cmakeFlags = lib.optionals (!withWebengine) [
|
|
"-DWITH_WEBENGINE=false"
|
|
];
|
|
|
|
qtWrapperArgs = [
|
|
# With wayland the titlebar is not themed and the wmclass is wrong.
|
|
"--set-default QT_QPA_PLATFORM xcb"
|
|
];
|
|
|
|
preFixup = ''
|
|
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
|
'';
|
|
|
|
passthru.updateScript = gitUpdater {
|
|
rev-prefix = "stable/";
|
|
};
|
|
|
|
meta = with lib; {
|
|
homepage = "https://jami.net/";
|
|
description = "The free and universal communication platform that respects the privacy and freedoms of its users";
|
|
mainProgram = "jami";
|
|
license = licenses.gpl3Plus;
|
|
platforms = platforms.linux;
|
|
maintainers = [ maintainers.linsui ];
|
|
};
|
|
}
|