33 webrtc-audio-processing,
43 networkmanager, # for libnm
45 qttools, # for translations
69 stdenv.mkDerivation rec {
71 version = "20241031.0";
73 src = fetchFromGitLab {
74 domain = "git.jami.net";
75 owner = "savoirfairelinux";
76 repo = "jami-client-qt";
77 rev = "stable/${version}";
78 hash = "sha256-LKezdzM+ltUSgW4GmTXICyufx9mI1AVbdEcwSp6tmao=";
79 fetchSubmodules = true;
82 pjsip-jami = pjsip.overrideAttrs (old: rec {
83 version = "8fc165b833eea6e3c88d67a541385424b129fd3f";
85 src = fetchFromGitHub {
86 owner = "savoirfairelinux";
89 hash = "sha256-uA6ZJYUgAu3cK4CKCGtqaI0KPM/0szExPS2pCOflz5A=";
97 "--disable-g711-codec"
100 "--disable-g722-codec"
101 "--disable-g7221-codec"
102 "--disable-speex-codec"
103 "--disable-ilbc-codec"
104 "--disable-opencore-amr"
111 "--disable-libwebrtc"
113 ] ++ lib.optionals stdenv.hostPlatform.isLinux [ "--enable-epoll" ];
115 buildInputs = old.buildInputs ++ [ gnutls ];
119 (opendht.overrideAttrs {
120 src = fetchFromGitHub {
121 owner = "savoirfairelinux";
123 rev = "074e05cc3254d5d73b0d96ee772a6e01bb3113e5";
124 hash = "sha256-WuaURlC7eDDxvnM3YuyU9CNrwnE4WBQUIEw3z/0zjN8=";
128 enableProxyServerAndClient = true;
129 enablePushNotifications = true;
132 dhtnet = stdenv.mkDerivation {
134 version = "unstable-2024-07-22";
136 src = fetchFromGitLab {
137 domain = "git.jami.net";
138 owner = "savoirfairelinux";
140 rev = "8cd00200669fa5b7632faa447ba206c3847e2879";
141 hash = "sha256-SGidaCi5z7hO0ePJIZIkcWAkb+cKsZTdksVS7ldpjME=";
145 substituteInPlace dependencies/build.py \
147 "wget https://raw.githubusercontent.com/martinmoene/expected-lite/master/include/nonstd/expected.hpp -O" \
148 "cp ${expected-lite}/include/nonstd/expected.hpp"
151 nativeBuildInputs = [
172 "-DBUILD_SHARED_LIBS=Off"
173 "-DBUILD_BENCHMARKS=Off"
175 "-DBUILD_TESTING=Off"
176 "-DBUILD_DEPENDENCIES=Off"
177 "-DBUILD_EXAMPLE=Off"
181 description = "Lightweight Peer-to-Peer Communication Library";
182 license = licenses.gpl3Only;
183 platforms = platforms.linux;
184 maintainers = [ maintainers.linsui ];
188 daemon = stdenv.mkDerivation {
189 pname = "jami-daemon";
190 inherit src version meta;
191 sourceRoot = "${src.name}/daemon";
193 # Fix for libgit2 breaking changes
195 substituteInPlace src/jamidht/conversationrepository.cpp \
196 --replace-fail "git_commit* const" "const git_commit*"
199 nativeBuildInputs = [
231 webrtc-audio-processing
236 enableParallelBuilding = true;
239 qwindowkit = fetchFromGitHub {
242 rev = "79b1f3110754f9c21af2d7dacbd07b1a9dbaf6ef";
243 hash = "sha256-iZfmv3ADVjHf47HPK/FdrfeAzrXbxbjH3H5MFVg/ZWE=";
244 fetchSubmodules = true;
248 sed -i -e '/GIT_REPOSITORY/,+1c SOURCE_DIR ''${CMAKE_CURRENT_SOURCE_DIR}/qwindowkit' extras/build/cmake/contrib_tools.cmake
249 sed -i -e 's/if(DISTRO_NEEDS_QMSETUP_PATCH)/if(TRUE)/' CMakeLists.txt
250 cp -R --no-preserve=mode,ownership ${qwindowkit} qwindowkit
254 echo 'const char VERSION_STRING[] = "${version}";' > src/app/version.h
255 # Currently the daemon is still built seperately but jami expects it in CMAKE_INSTALL_PREFIX
256 # This can be removed in future versions when JAMICORE_AS_SUBDIR is on
258 ln -s ${daemon} $out/daemon
261 dontWrapGApps = true;
263 nativeBuildInputs = [
286 ] ++ lib.optionals withWebengine [ qtwebengine ];
288 cmakeFlags = lib.optionals (!withWebengine) [ "-DWITH_WEBENGINE=false" ];
291 # With wayland the titlebar is not themed and the wmclass is wrong.
292 "--set-default QT_QPA_PLATFORM xcb"
296 qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
299 passthru.updateScript = gitUpdater { rev-prefix = "stable/"; };
302 homepage = "https://jami.net/";
303 description = "Free and universal communication platform that respects the privacy and freedoms of its users";
304 mainProgram = "jami";
305 license = licenses.gpl3Plus;
306 platforms = platforms.linux;
307 maintainers = [ maintainers.linsui ];