1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 linkFarm,
6 cmake,
7 pkg-config,
8 libsForQt5,
9 wrapGAppsHook3,
10 dtkwidget,
11 qt5integration,
12 qt5platform-plugins,
13 deepin-pw-check,
14 gsettings-qt,
15 lightdm_qt,
16 linux-pam,
17 xorg,
18 gtest,
19 xkeyboard_config,
20 dbus,
21 dde-session-shell,
22}:
23
24stdenv.mkDerivation rec {
25 pname = "dde-session-shell";
26 version = "6.0.21";
27
28 src = fetchFromGitHub {
29 owner = "linuxdeepin";
30 # DDE 23 releases has moved to `linuxdeepin/dde-session-shell-snipe`
31 repo = "dde-session-shell-snipe";
32 rev = version;
33 hash = "sha256-v0+Bz6J77Kgf4YV1iDhCqhmcNn493GFq1IEQbXBAVUU=";
34 };
35
36 postPatch = ''
37 substituteInPlace scripts/lightdm-deepin-greeter files/wayland/lightdm-deepin-greeter-wayland \
38 --replace "/usr/lib/deepin-daemon" "/run/current-system/sw/lib/deepin-daemon"
39
40 substituteInPlace src/session-widgets/auth_module.h \
41 --replace "/usr/lib/dde-control-center" "/run/current-system/sw/lib/dde-control-center"
42
43 substituteInPlace src/global_util/modules_loader.cpp \
44 --replace "/usr/lib/dde-session-shell/modules" "/run/current-system/sw/lib/dde-session-shell/modules"
45
46 substituteInPlace src/{session-widgets/{lockcontent.cpp,userinfo.cpp},widgets/fullscreenbackground.cpp} \
47 --replace "/usr/share/backgrounds" "/run/current-system/sw/share/backgrounds"
48
49 substituteInPlace src/global_util/xkbparser.h \
50 --replace "/usr/share/X11/xkb/rules/base.xml" "${xkeyboard_config}/share/X11/xkb/rules/base.xml"
51
52 substituteInPlace files/{org.deepin.dde.ShutdownFront1.service,org.deepin.dde.LockFront1.service} \
53 --replace "/usr/bin/dbus-send" "${dbus}/bin/dbus-send" \
54 --replace "/usr/share" "$out/share"
55
56 substituteInPlace src/global_util/{public_func.cpp,constants.h} scripts/lightdm-deepin-greeter files/{dde-lock.desktop,lightdm-deepin-greeter.desktop,wayland/lightdm-deepin-greeter-wayland.desktop} \
57 --replace "/usr" "$out"
58
59 patchShebangs files/deepin-greeter
60 '';
61
62 nativeBuildInputs = [
63 cmake
64 pkg-config
65 libsForQt5.qttools
66 libsForQt5.wrapQtAppsHook
67 wrapGAppsHook3
68 ];
69 dontWrapGApps = true;
70
71 buildInputs = [
72 libsForQt5.qtbase
73 dtkwidget
74 qt5integration
75 qt5platform-plugins
76 deepin-pw-check
77 gsettings-qt
78 lightdm_qt
79 libsForQt5.qtx11extras
80 linux-pam
81 xorg.libXcursor
82 xorg.libXtst
83 xorg.libXrandr
84 xorg.libXdmcp
85 gtest
86 ];
87
88 outputs = [
89 "out"
90 "dev"
91 ];
92
93 preFixup = ''
94 qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
95 '';
96
97 passthru.xgreeters = linkFarm "deepin-greeter-xgreeters" [
98 {
99 path = "${dde-session-shell}/share/xgreeters/lightdm-deepin-greeter.desktop";
100 name = "lightdm-deepin-greeter.desktop";
101 }
102 ];
103
104 meta = with lib; {
105 description = "Deepin desktop-environment - session-shell module";
106 homepage = "https://github.com/linuxdeepin/dde-session-shell";
107 license = licenses.gpl3Plus;
108 platforms = platforms.linux;
109 teams = [ teams.deepin ];
110 };
111}