Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{
2 lib,
3 gitUpdater,
4 fetchFromGitHub,
5 qt6Packages,
6 stdenv,
7 cmake,
8 extra-cmake-modules,
9 inotify-tools,
10 kdePackages,
11 libcloudproviders,
12 libp11,
13 librsvg,
14 libsecret,
15 openssl,
16 pcre,
17 pkg-config,
18 sphinx,
19 sqlite,
20 xdg-utils,
21 libsysprof-capture,
22}:
23
24stdenv.mkDerivation rec {
25 pname = "nextcloud-client";
26 version = "3.16.6";
27
28 outputs = [
29 "out"
30 "dev"
31 ];
32
33 src = fetchFromGitHub {
34 owner = "nextcloud-releases";
35 repo = "desktop";
36 tag = "v${version}";
37 hash = "sha256-f6+FwYVwuG89IjEQMOepTJEgJGXp9nmQNuAGU4proq4=";
38 };
39
40 patches = [
41 ./0001-When-creating-the-autostart-entry-do-not-use-an-abso.patch
42 ];
43
44 postPatch = ''
45 for file in src/libsync/vfs/*/CMakeLists.txt; do
46 substituteInPlace $file \
47 --replace-fail "PLUGINDIR" "KDE_INSTALL_PLUGINDIR"
48 done
49 '';
50
51 nativeBuildInputs = [
52 pkg-config
53 cmake
54 extra-cmake-modules
55 librsvg
56 sphinx
57 qt6Packages.wrapQtAppsHook
58 ];
59
60 buildInputs = [
61 inotify-tools
62 kdePackages.kio
63 libcloudproviders
64 libp11
65 libsecret
66 openssl
67 pcre
68 qt6Packages.qt5compat
69 qt6Packages.qtbase
70 qt6Packages.qtkeychain
71 qt6Packages.qtsvg
72 qt6Packages.qttools
73 qt6Packages.qtwebengine
74 qt6Packages.qtwebsockets
75 qt6Packages.qtwayland
76 sqlite
77 libsysprof-capture
78 ];
79
80 qtWrapperArgs = [
81 "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libsecret ]}"
82 # make xdg-open overridable at runtime
83 "--suffix PATH : ${lib.makeBinPath [ xdg-utils ]}"
84 ];
85
86 cmakeFlags = [
87 "-DBUILD_UPDATER=off"
88 "-DCMAKE_INSTALL_LIBDIR=lib" # expected to be prefix-relative by build code setting RPATH
89 "-DMIRALL_VERSION_SUFFIX=" # remove git suffix from version
90 ];
91
92 postBuild = ''
93 make doc-man
94 '';
95
96 passthru.updateScript = gitUpdater { rev-prefix = "v"; };
97
98 meta = {
99 changelog = "https://github.com/nextcloud/desktop/releases/tag/v${version}";
100 description = "Desktop sync client for Nextcloud";
101 homepage = "https://nextcloud.com";
102 license = lib.licenses.gpl2Plus;
103 maintainers = with lib.maintainers; [
104 kranzes
105 SuperSandro2000
106 ];
107 platforms = lib.platforms.linux;
108 mainProgram = "nextcloud";
109 };
110}