1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 fetchpatch,
6 runtimeShell,
7 dtkwidget,
8 qt5integration,
9 qt5platform-plugins,
10 dde-qt-dbus-factory,
11 docparser,
12 dde-tray-loader,
13 cmake,
14 libsForQt5,
15 pkg-config,
16 ffmpegthumbnailer,
17 libsecret,
18 libmediainfo,
19 mediainfo,
20 libzen,
21 poppler,
22 polkit,
23 wrapGAppsHook3,
24 lucenepp,
25 boost,
26 taglib,
27 cryptsetup,
28 glib,
29 util-dfm,
30 deepin-pdfium,
31 libuuid,
32 libselinux,
33 glibmm,
34 pcre,
35 udisks2,
36 libisoburn,
37 gsettings-qt,
38}:
39
40stdenv.mkDerivation rec {
41 pname = "dde-file-manager";
42 version = "6.0.57";
43
44 src = fetchFromGitHub {
45 owner = "linuxdeepin";
46 repo = pname;
47 rev = version;
48 hash = "sha256-laM6PgNdUNbsqbzKFGWk7DPuAWR+XHo0eXKG0CDuc9c=";
49 };
50
51 nativeBuildInputs = [
52 cmake
53 libsForQt5.qttools
54 pkg-config
55 libsForQt5.wrapQtAppsHook
56 wrapGAppsHook3
57 ];
58 dontWrapGApps = true;
59
60 patches = [
61 ./patch_check_v23_interface.diff
62 (fetchpatch {
63 name = "fix-permission-to-execute-dde-file-manager.patch";
64 url = "https://github.com/linuxdeepin/dde-file-manager/commit/b78cc4bd08dd487f67c5a332a2a2f4d20b3798c7.patch";
65 hash = "sha256-Tw3iu6sU0rrsM78WGMBpBgvA9YdRTM1ObjCxyM928F4=";
66 })
67 ];
68
69 postPatch = ''
70 patchShebangs tests/*.sh \
71 assets/scripts \
72 src/*.sh \
73 src/plugins/daemon/daemonplugin-accesscontrol/help.sh \
74 src/apps/dde-file-manager/dde-property-dialog \
75 src/apps/dde-desktop/data/applications/dfm-open.sh
76
77 substituteInPlace assets/scripts/file-manager.sh \
78 --replace-fail "/usr/libexec/dde-file-manager" "$out/libexec/dde-file-manager"
79
80 substituteInPlace src/plugins/filemanager/dfmplugin-vault/utils/vaultdefine.h \
81 --replace-fail "/usr/bin/deepin-compressor" "deepin-compressor"
82
83 substituteInPlace src/plugins/filemanager/dfmplugin-avfsbrowser/utils/avfsutils.cpp \
84 --replace-fail "/usr/bin/mountavfs" "mountavfs" \
85 --replace-fail "/usr/bin/umountavfs" "umountavfs"
86
87 substituteInPlace src/plugins/common/core/dfmplugin-menu/{extendmenuscene/extendmenu/dcustomactionparser.cpp,oemmenuscene/oemmenu.cpp} \
88 --replace-fail "/usr" "$out"
89
90 substituteInPlace src/tools/upgrade/dialog/processdialog.cpp \
91 --replace-fail "/usr/bin/dde-file-manager" "dde-file-manager" \
92 --replace-fail "/usr/bin/dde-desktop" "dde-desktop"
93
94 substituteInPlace src/dfm-base/file/local/localfilehandler.cpp \
95 --replace-fail "/usr/lib/deepin-daemon" "/run/current-system/sw/lib/deepin-daemon"
96
97 substituteInPlace src/plugins/desktop/ddplugin-background/backgroundservice.cpp \
98 src/plugins/desktop/ddplugin-wallpapersetting/wallpapersettings.cpp \
99 --replace-fail "/usr/share/backgrounds" "/run/current-system/sw/share/backgrounds"
100
101 find . -type f -regex ".*\\.\\(service\\|policy\\|desktop\\)" -exec sed -i -e "s|/usr/|$out/|g" {} \;
102 '';
103
104 buildInputs = [
105 dtkwidget
106 qt5integration
107 qt5platform-plugins
108 deepin-pdfium
109 util-dfm
110 dde-qt-dbus-factory
111 glibmm
112 docparser
113 dde-tray-loader
114 libsForQt5.qtx11extras
115 libsForQt5.qtmultimedia
116 libsForQt5.kcodecs
117 ffmpegthumbnailer
118 libsecret
119 libmediainfo
120 mediainfo
121 poppler
122 libsForQt5.polkit-qt
123 polkit
124 lucenepp
125 boost
126 taglib
127 cryptsetup
128 libuuid
129 libselinux
130 pcre
131 udisks2
132 libisoburn
133 gsettings-qt
134 ];
135
136 cmakeFlags = [
137 "-DVERSION=${version}"
138 "-DNIX_DEEPIN_VERSION=23"
139 "-DSYSTEMD_USER_UNIT_DIR=${placeholder "out"}/lib/systemd/user"
140 ];
141
142 enableParallelBuilding = true;
143
144 preFixup = ''
145 qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
146 '';
147
148 meta = with lib; {
149 description = "File manager for deepin desktop environment";
150 homepage = "https://github.com/linuxdeepin/dde-file-manager";
151 license = licenses.gpl3Plus;
152 platforms = platforms.linux;
153 teams = [ teams.deepin ];
154 };
155}