about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/deepin
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/deepin')
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-album/default.nix64
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-calculator/default.nix56
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-camera/default.nix101
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-camera/dont_use_libPath.diff24
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-clone/default.nix74
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-compressor/default.nix73
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-draw/default.nix57
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-editor/default.nix64
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-image-viewer/default.nix68
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-movie-reborn/default.nix131
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-movie-reborn/dont_use_libPath.diff108
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-music/default.nix87
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-picker/default.nix59
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-reader/0001-build-tests-with-cpp-14.patch13
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-reader/default.nix77
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-reader/use-pkg-config.diff46
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-screen-recorder/default.nix98
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-screen-recorder/dont_use_libPath.diff36
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-screensaver/default.nix69
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-shortcut-viewer/default.nix52
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-system-monitor/default.nix96
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-terminal/default.nix63
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-voice-note/default.nix86
-rw-r--r--nixpkgs/pkgs/desktops/deepin/apps/deepin-voice-note/use_v23_dbus_interface.diff13
-rw-r--r--nixpkgs/pkgs/desktops/deepin/artwork/dde-account-faces/default.nix26
-rw-r--r--nixpkgs/pkgs/desktops/deepin/artwork/deepin-desktop-theme/default.nix54
-rw-r--r--nixpkgs/pkgs/desktops/deepin/artwork/deepin-gtk-theme/default.nix31
-rw-r--r--nixpkgs/pkgs/desktops/deepin/artwork/deepin-icon-theme/default.nix46
-rw-r--r--nixpkgs/pkgs/desktops/deepin/artwork/deepin-sound-theme/default.nix26
-rw-r--r--nixpkgs/pkgs/desktops/deepin/artwork/deepin-wallpapers/default.nix43
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-app-services/default.nix71
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-appearance/default.nix82
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-appearance/fix-custom-wallpapers-path.diff68
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-application-manager/default.nix64
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-calendar/default.nix70
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-calendar/fix-wrapped-name-not-in-whitelist.diff13
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-clipboard/default.nix58
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-control-center/default.nix97
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-dock/default.nix89
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-file-manager/default.nix156
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-file-manager/use_v23_dbus_interface.diff13
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-gsettings-schemas/default.nix50
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-launchpad/default.nix58
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-network-core/default.nix62
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-polkit-agent/default.nix57
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-session-shell/default.nix111
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-session-ui/default.nix84
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-session/default.nix69
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dde-widgets/default.nix48
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/deepin-kwin/0001-hardcode-fallback-background.diff15
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/deepin-kwin/default.nix117
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/deepin-service-manager/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/deepin/core/dpa-ext-gnomekeyring/default.nix53
-rw-r--r--nixpkgs/pkgs/desktops/deepin/default.nix98
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/dde-api/default.nix115
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0001-dont-set-PATH.diff15
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0002-fix-custom-wallpapers-path.diff25
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0003-aviod-use-hardcode-path.diff116
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0004-fix-build-with-ddcutil-2.patch17
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/default.nix154
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/deepin-desktop-schemas/default.nix56
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/deepin-pw-check/default.nix70
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/go-dbus-factory/default.nix26
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/go-gir-generator/default.nix43
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/go-lib/default.nix42
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/startdde/0001-avoid-use-hardcode-path.patch61
-rw-r--r--nixpkgs/pkgs/desktops/deepin/go-package/startdde/default.nix86
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dde-qt-dbus-factory/default.nix53
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/deepin-ocr-plugin-manager/default.nix60
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/deepin-pdfium/default.nix42
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/deepin-wayland-protocols/default.nix31
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/disomaster/default.nix40
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/docparser/default.nix40
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkcommon/default.nix31
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkcore/default.nix83
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkcore/fix-pkgconfig-path.patch14
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkcore/fix-pri-path.patch17
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkdeclarative/default.nix72
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkdeclarative/fix-pkgconfig-path.patch14
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkdeclarative/fix-pri-path.patch15
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkgui/default.nix81
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkgui/fix-pkgconfig-path.patch16
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkgui/fix-pri-path.patch17
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkwidget/default.nix87
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkwidget/fix-pkgconfig-path.patch14
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dtkwidget/fix-pri-path.patch17
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/dwayland/default.nix53
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/gio-qt/default.nix51
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/image-editor/default.nix54
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/qt5integration/default.nix56
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/qt5platform-plugins/default.nix70
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/udisks2-qt5/default.nix34
-rw-r--r--nixpkgs/pkgs/desktops/deepin/library/util-dfm/default.nix53
-rw-r--r--nixpkgs/pkgs/desktops/deepin/misc/deepin-desktop-base/default.nix46
-rw-r--r--nixpkgs/pkgs/desktops/deepin/misc/deepin-desktop-base/distribution_logo_transparent.svg243
-rw-r--r--nixpkgs/pkgs/desktops/deepin/misc/deepin-turbo/default.nix42
-rw-r--r--nixpkgs/pkgs/desktops/deepin/tools/dde-device-formatter/default.nix63
-rw-r--r--nixpkgs/pkgs/desktops/deepin/tools/deepin-gettext-tools/default.nix50
98 files changed, 5868 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-album/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-album/default.nix
new file mode 100644
index 000000000000..59fa2c8c7bdf
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-album/default.nix
@@ -0,0 +1,64 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qttools
+, wrapQtAppsHook
+, dtkwidget
+, dtkdeclarative
+, qt5integration
+, qt5platform-plugins
+, qtbase
+, qtsvg
+, udisks2-qt5
+, gio-qt
+, freeimage
+, ffmpeg
+, ffmpegthumbnailer
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-album";
+  version = "6.0.2";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-kRQiH6LvXDpQOgBQiFHM+YQzQFSupOj98aEPbcUumZ8=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    dtkdeclarative
+    qt5integration
+    qt5platform-plugins
+    qtbase
+    qtsvg
+    udisks2-qt5
+    gio-qt
+    freeimage
+    ffmpeg
+    ffmpegthumbnailer
+  ];
+
+  strictDeps = true;
+
+  cmakeFlags = [ "-DVERSION=${version}" ];
+
+  meta = with lib; {
+    description = "A fashion photo manager for viewing and organizing pictures";
+    homepage = "https://github.com/linuxdeepin/deepin-album";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-calculator/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-calculator/default.nix
new file mode 100644
index 000000000000..c8915e3f354c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-calculator/default.nix
@@ -0,0 +1,56 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, qtbase
+, qtsvg
+, dde-qt-dbus-factory
+, cmake
+, qttools
+, pkg-config
+, wrapQtAppsHook
+, gtest
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-calculator";
+  version = "5.8.24";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-Gv4X1vT3w3kd1FN6BBpUeG2VBz/e+OWLBQyBL7r3BrI=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    qt5integration
+    qt5platform-plugins
+    qtbase
+    qtsvg
+    dde-qt-dbus-factory
+    gtest
+  ];
+
+  strictDeps = true;
+
+  cmakeFlags = [ "-DVERSION=${version}" ];
+
+  meta = with lib; {
+    description = "An easy to use calculator for ordinary users";
+    homepage = "https://github.com/linuxdeepin/deepin-calculator";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-camera/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-camera/default.nix
new file mode 100644
index 000000000000..d62e8a6c91f1
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-camera/default.nix
@@ -0,0 +1,101 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qttools
+, wrapQtAppsHook
+, dtkwidget
+, wayland
+, dwayland
+, qt5integration
+, qt5platform-plugins
+, image-editor
+, qtbase
+, qtmultimedia
+, ffmpeg
+, ffmpegthumbnailer
+, libusb1
+, libpciaccess
+, portaudio
+, libv4l
+, gst_all_1
+, systemd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-camera";
+  version = "unstable-2023-09-26";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = "8ad3b6ad2a4f5f0b22a216496a0187a69a1e1bcc";
+    hash = "sha256-/8ddplHJzeu7lrRzN66KhJGkFou4FcXc+BzYFK5YVeE=";
+  };
+
+  # QLibrary and dlopen work with LD_LIBRARY_PATH
+  patches = [ ./dont_use_libPath.diff ];
+
+  postPatch = ''
+    substituteInPlace src/CMakeLists.txt \
+      --replace "/usr/share/libimagevisualresult" "${image-editor}/share/libimagevisualresult" \
+      --replace "/usr/include/libusb-1.0" "${lib.getDev libusb1}/include/libusb-1.0"
+    substituteInPlace src/com.deepin.Camera.service \
+      --replace "/usr/bin/qdbus" "${lib.getBin qttools}/bin/qdbus" \
+      --replace "/usr/share" "$out/share"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    wayland
+    dwayland
+    qt5integration
+    qt5platform-plugins
+    image-editor
+    qtbase
+    qtmultimedia
+    ffmpeg
+    ffmpegthumbnailer
+    libusb1
+    libpciaccess
+    portaudio
+    libv4l
+  ] ++ (with gst_all_1 ; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+  ]);
+
+  cmakeFlags = [ "-DVERSION=${version}" ];
+
+  strictDeps = true;
+
+  env.NIX_CFLAGS_COMPILE = toString [
+    "-I${gst_all_1.gstreamer.dev}/include/gstreamer-1.0"
+    "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0"
+  ];
+
+  qtWrapperArgs = [
+    "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ ffmpeg ffmpegthumbnailer gst_all_1.gstreamer gst_all_1.gst-plugins-base libusb1 libv4l portaudio systemd ]}"
+  ];
+
+  preFixup = ''
+    qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+  '';
+
+  meta = with lib; {
+    description = "Tool to view camera, take photo and video";
+    homepage = "https://github.com/linuxdeepin/deepin-camera";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-camera/dont_use_libPath.diff b/nixpkgs/pkgs/desktops/deepin/apps/deepin-camera/dont_use_libPath.diff
new file mode 100644
index 000000000000..f8e005f577a3
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-camera/dont_use_libPath.diff
@@ -0,0 +1,24 @@
+diff --git a/src/src/gstvideowriter.cpp b/src/src/gstvideowriter.cpp
+index c96c8b0..fcc11da 100644
+--- a/src/src/gstvideowriter.cpp
++++ b/src/src/gstvideowriter.cpp
+@@ -282,6 +282,7 @@ void GstVideoWriter::loadAppSrcCaps()
+ 
+ QString GstVideoWriter::libPath(const QString &strlib)
+ {
++    return strlib;
+     QDir  dir;
+     QString path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(path);
+diff --git a/src/src/mainwindow.cpp b/src/src/mainwindow.cpp
+index d3c6c24..6d313a6 100644
+--- a/src/src/mainwindow.cpp
++++ b/src/src/mainwindow.cpp
+@@ -784,6 +784,7 @@ void CMainWindow::slotPopupSettingsDialog()
+ 
+ QString CMainWindow::libPath(const QString &strlib)
+ {
++    return strlib;
+     QDir  dir;
+     QString path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(path);
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-clone/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-clone/default.nix
new file mode 100644
index 000000000000..0f6cc03e48db
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-clone/default.nix
@@ -0,0 +1,74 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, qttools
+, pkg-config
+, qtbase
+, wrapQtAppsHook
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, libuuid
+, parted
+, partclone
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-clone";
+  version = "5.0.15";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-yxYmRSiw/pjgHftu75S9yx0ZXrWRz0VbU8jPjl4baqQ=";
+  };
+
+  postPatch = ''
+    substituteInPlace app/{deepin-clone-ionice,deepin-clone-pkexec,com.deepin.pkexec.deepin-clone.policy.tmp} \
+      --replace "/usr" "$out"
+
+    substituteInPlace app/src/corelib/ddevicediskinfo.cpp \
+      --replace "/sbin/blkid" "${libuuid}/bin/blkid"
+
+    substituteInPlace app/src/corelib/helper.cpp \
+      --replace "/bin/lsblk" "${libuuid}/bin/lsblk" \
+      --replace "/sbin/sfdisk" "${libuuid}/bin/sfdisk" \
+      --replace "/sbin/partprobe" "${parted}/bin/partprobe" \
+      --replace "/usr/sbin" "${partclone}/bin"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    dtkwidget
+    qt5integration
+    qt5platform-plugins
+    libuuid
+    parted
+    partclone
+  ];
+
+  cmakeFlags = [
+    "-DDISABLE_DFM_PLUGIN=YES"
+  ];
+
+  strictDeps = true;
+
+  meta = with lib; {
+    description = "Disk and partition backup/restore tool";
+    homepage = "https://github.com/linuxdeepin/deepin-clone";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+    broken = true;
+  };
+}
+
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-compressor/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-compressor/default.nix
new file mode 100644
index 000000000000..393c51e4ac64
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-compressor/default.nix
@@ -0,0 +1,73 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, udisks2-qt5
+, cmake
+, qtbase
+, qttools
+, pkg-config
+, kcodecs
+, karchive
+, wrapQtAppsHook
+, minizip
+, libzip
+, libuuid
+, libarchive
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-compressor";
+  version = "5.12.23";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-8qfpNM2rci4subdodxfJZLP3OvAxXl7QRl4MHGr15nA=";
+  };
+
+  postPatch = ''
+    substituteInPlace src/source/common/pluginmanager.cpp \
+      --replace "/usr/lib/" "$out/lib/"
+    substituteInPlace src/desktop/deepin-compressor.desktop \
+      --replace "/usr" "$out"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    qt5integration
+    qt5platform-plugins
+    udisks2-qt5
+    kcodecs
+    karchive
+    minizip
+    libzip
+    libuuid
+    libarchive
+  ];
+
+  cmakeFlags = [
+    "-DVERSION=${version}"
+    "-DUSE_TEST=OFF"
+  ];
+
+  strictDeps = true;
+
+  meta = with lib; {
+    description = "A fast and lightweight application for creating and extracting archives";
+    homepage = "https://github.com/linuxdeepin/deepin-compressor";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-draw/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-draw/default.nix
new file mode 100644
index 000000000000..c07ca9e0b880
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-draw/default.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, qttools
+, pkg-config
+, wrapQtAppsHook
+, qtbase
+, qtsvg
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-draw";
+  version = "6.0.5";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-WeubXsshN4tUlIwEHTxHXv1L2dvJ2DZ6qtSPyiVtc98=";
+  };
+
+  postPatch = ''
+    substituteInPlace com.deepin.Draw.service \
+      --replace "/usr/bin/deepin-draw" "$out/bin/deepin-draw"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    qt5integration
+    qtsvg
+    dtkwidget
+    qt5platform-plugins
+  ];
+
+  cmakeFlags = [ "-DVERSION=${version}" ];
+
+  strictDeps = true;
+
+  meta = with lib; {
+    description = "Lightweight drawing tool for users to freely draw and simply edit images";
+    homepage = "https://github.com/linuxdeepin/deepin-draw";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-editor/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-editor/default.nix
new file mode 100644
index 000000000000..6c02844c0ad5
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-editor/default.nix
@@ -0,0 +1,64 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qttools
+, wrapQtAppsHook
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, qtbase
+, qtsvg
+, dde-qt-dbus-factory
+, kcodecs
+, syntax-highlighting
+, libchardet
+, libuchardet
+, libiconv
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-editor";
+  version = "6.0.15";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-17loD7FNy5PwSxIyXk313yiMxO10rOeP94q08tm76gw=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    qt5integration
+    qt5platform-plugins
+    qtbase
+    qtsvg
+    dde-qt-dbus-factory
+    kcodecs
+    syntax-highlighting
+    libchardet
+    libuchardet
+    libiconv
+  ];
+
+  strictDeps = true;
+
+  cmakeFlags = [ "-DVERSION=${version}" ];
+
+  meta = with lib; {
+    description = "A desktop text editor that supports common text editing features";
+    homepage = "https://github.com/linuxdeepin/deepin-editor";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-image-viewer/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-image-viewer/default.nix
new file mode 100644
index 000000000000..7d7df4494a3a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-image-viewer/default.nix
@@ -0,0 +1,68 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, pkg-config
+, qttools
+, wrapQtAppsHook
+, qt5platform-plugins
+, qtbase
+, dtkwidget
+, dtkdeclarative
+, deepin-ocr-plugin-manager
+, gio-qt
+, udisks2-qt5
+, image-editor
+, libraw
+, libexif
+, freeimage
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-image-viewer";
+  version = "6.0.2";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-YT3wK+ELXjgtsXbkiCjQF0zczQi89tF1kyIQtl9/mMA=";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "fix-build-with-libraw-0_21.patch";
+      url = "https://raw.githubusercontent.com/archlinux/svntogit-community/2ff11979704dd7156a7e7c3bae9b30f08894063d/trunk/libraw-0.21.patch";
+      hash = "sha256-I/w4uiANT8Z8ud/F9WCd3iRHOfplu3fpqnu8ZIs4C+w=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qt5platform-plugins
+    dtkwidget
+    dtkdeclarative
+    deepin-ocr-plugin-manager
+    libraw
+    freeimage
+  ];
+
+  strictDeps = true;
+
+  cmakeFlags = [ "-DVERSION=${version}" ];
+
+  meta = with lib; {
+    description = "An image viewing tool with fashion interface and smooth performance";
+    homepage = "https://github.com/linuxdeepin/deepin-image-viewer";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-movie-reborn/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-movie-reborn/default.nix
new file mode 100644
index 000000000000..7794d5b50d0b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-movie-reborn/default.nix
@@ -0,0 +1,131 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, pkg-config
+, wrapQtAppsHook
+, qtbase
+, qttools
+, qtx11extras
+, qtmultimedia
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, qtmpris
+, qtdbusextended
+, gsettings-qt
+, elfutils
+, ffmpeg
+, ffmpegthumbnailer
+, mpv
+, xorg
+, pcre
+, libdvdread
+, libdvdnav
+, libunwind
+, libva
+, zstd
+, glib
+, gst_all_1
+, gtest
+, libpulseaudio
+, runtimeShell
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-movie-reborn";
+  version = "6.0.5";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-dWN2IVVpwYwzEuLtT3JvhzKiBwaBq4lzmaEhA9S1hjE=";
+  };
+
+  patches = [
+    ./dont_use_libPath.diff
+  ];
+
+  postPatch = ''
+    # https://github.com/linuxdeepin/deepin-movie-reborn/pull/198
+    substituteInPlace src/common/diskcheckthread.cpp \
+      --replace "/usr/include/linux/cdrom.h" "linux/cdrom.h"
+    # https://github.com/linuxdeepin/deepin-movie-reborn/pull/337
+    substituteInPlace src/libdmr/playlist_model.cpp \
+      --replace "DGuiApplicationHelper" "Dtk::Gui::DGuiApplicationHelper"
+  '';
+
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    qt5integration
+    qt5platform-plugins
+    qtx11extras
+    qtmultimedia
+    qtdbusextended
+    qtmpris
+    gsettings-qt
+    elfutils
+    ffmpeg
+    ffmpegthumbnailer
+    xorg.libXtst
+    xorg.libXdmcp
+    xorg.xcbproto
+    pcre.dev
+    libdvdread
+    libdvdnav
+    libunwind
+    libva
+    zstd
+    mpv
+    gtest
+    libpulseaudio
+  ] ++ (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+  ]);
+
+  propagatedBuildInputs = [
+    qtmultimedia
+    qtx11extras
+    ffmpegthumbnailer
+  ];
+
+  env.NIX_CFLAGS_COMPILE = toString [
+    "-I${gst_all_1.gstreamer.dev}/include/gstreamer-1.0"
+    "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0"
+  ];
+
+  cmakeFlags = [
+    "-DVERSION=${version}"
+  ];
+
+  strictDeps = true;
+
+  qtWrapperArgs = [
+    "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ mpv ffmpeg ffmpegthumbnailer gst_all_1.gstreamer gst_all_1.gst-plugins-base ]}"
+  ];
+
+  preFixup = ''
+    glib-compile-schemas ${glib.makeSchemaPath "$out" "${pname}-${version}"}
+    qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+  '';
+
+  meta = with lib; {
+    description = "Full-featured video player supporting playing local and streaming media in multiple video formats";
+    homepage = "https://github.com/linuxdeepin/deepin-movie-reborn";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-movie-reborn/dont_use_libPath.diff b/nixpkgs/pkgs/desktops/deepin/apps/deepin-movie-reborn/dont_use_libPath.diff
new file mode 100644
index 000000000000..7ea1f0da1b23
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-movie-reborn/dont_use_libPath.diff
@@ -0,0 +1,108 @@
+diff --git a/src/backends/mpv/mpv_proxy.h b/src/backends/mpv/mpv_proxy.h
+index 1256a06..d76d1c0 100644
+--- a/src/backends/mpv/mpv_proxy.h
++++ b/src/backends/mpv/mpv_proxy.h
+@@ -38,6 +38,7 @@ typedef void (*mpv_terminateDestroy)(mpv_handle *ctx);
+ 
+ static QString libPath(const QString &sLib)
+ {
++    return sLib;
+     QDir dir;
+     QString path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(path);
+diff --git a/src/common/hwdec_probe.cpp b/src/common/hwdec_probe.cpp
+index d70ed0c..ac2516d 100644
+--- a/src/common/hwdec_probe.cpp
++++ b/src/common/hwdec_probe.cpp
+@@ -83,6 +83,7 @@ bool HwdecProbe::isFileCanHwdec(const QUrl& url, QList<QString>& hwList)
+ 
+ static QString libPath(const QString &sLib)
+ {
++    return sLib;
+     QDir dir;
+     QString path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(path);
+diff --git a/src/common/platform/platform_thumbnail_worker.cpp b/src/common/platform/platform_thumbnail_worker.cpp
+index 17b2bdd..82db2b9 100644
+--- a/src/common/platform/platform_thumbnail_worker.cpp
++++ b/src/common/platform/platform_thumbnail_worker.cpp
+@@ -88,6 +88,7 @@ Platform_ThumbnailWorker::Platform_ThumbnailWorker()
+ 
+ QString Platform_ThumbnailWorker::libPath(const QString &strlib)
+ {
++    return strlib;
+     QDir  dir;
+     QString lib_path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(lib_path);
+diff --git a/src/common/thumbnail_worker.cpp b/src/common/thumbnail_worker.cpp
+index 2ba2888..c34841e 100644
+--- a/src/common/thumbnail_worker.cpp
++++ b/src/common/thumbnail_worker.cpp
+@@ -88,6 +88,7 @@ ThumbnailWorker::ThumbnailWorker()
+ 
+ QString ThumbnailWorker::libPath(const QString &strlib)
+ {
++    return strlib;
+     QDir  dir;
+     QString lib_path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(lib_path);
+diff --git a/src/libdmr/compositing_manager.cpp b/src/libdmr/compositing_manager.cpp
+index 9b117fc..28a11ec 100644
+--- a/src/libdmr/compositing_manager.cpp
++++ b/src/libdmr/compositing_manager.cpp
+@@ -237,6 +237,7 @@ bool CompositingManager::isCanHwdec()
+ 
+ QString  CompositingManager::libPath(const QString &sLib)
+ {
++    return sLib;
+     QDir dir;
+     QString path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(path);
+diff --git a/src/libdmr/filefilter.cpp b/src/libdmr/filefilter.cpp
+index 6691df0..b620a62 100644
+--- a/src/libdmr/filefilter.cpp
++++ b/src/libdmr/filefilter.cpp
+@@ -72,6 +72,7 @@ FileFilter::FileFilter()
+ 
+ QString FileFilter::libPath(const QString &strlib)
+ {
++    return strlib;
+     QDir  dir;
+     QString path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(path);
+diff --git a/src/libdmr/playlist_model.cpp b/src/libdmr/playlist_model.cpp
+index 18a8095..9ea4abf 100644
+--- a/src/libdmr/playlist_model.cpp
++++ b/src/libdmr/playlist_model.cpp
+@@ -449,6 +449,7 @@ PlaylistModel::PlaylistModel(PlayerEngine *e)
+ 
+ QString PlaylistModel::libPath(const QString &strlib)
+ {
++    return strlib;
+     QDir  dir;
+     QString path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(path);
+diff --git a/src/widgets/platform/platform_toolbox_proxy.cpp b/src/widgets/platform/platform_toolbox_proxy.cpp
+index 570acac..9da0f97 100644
+--- a/src/widgets/platform/platform_toolbox_proxy.cpp
++++ b/src/widgets/platform/platform_toolbox_proxy.cpp
+@@ -709,6 +709,7 @@ private:
+ 
+ static QString libPath(const QString &strlib)
+ {
++    return strlib;
+     QDir  dir;
+     QString path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(path);
+diff --git a/src/widgets/toolbox_proxy.cpp b/src/widgets/toolbox_proxy.cpp
+index 05cbc2c..54731bf 100644
+--- a/src/widgets/toolbox_proxy.cpp
++++ b/src/widgets/toolbox_proxy.cpp
+@@ -760,6 +760,7 @@ private:
+ 
+ static QString libPath(const QString &strlib)
+ {
++    return strlib;
+     QDir  dir;
+     QString path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(path);
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-music/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-music/default.nix
new file mode 100644
index 000000000000..64e5ee857745
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-music/default.nix
@@ -0,0 +1,87 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qttools
+, wrapQtAppsHook
+, dtkwidget
+, dtkdeclarative
+, qt5integration
+, qt5platform-plugins
+, udisks2-qt5
+, qtmpris
+, qtmultimedia
+, kcodecs
+, ffmpeg
+, libvlc
+, taglib
+, SDL2
+, qtbase
+, gst_all_1
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-music";
+  version = "7.0.3";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-MLfkSO8ru8MKiwgiQ0mPO3zGlnIeSHPc0Op5jjzJ6PE=";
+  };
+
+  patches = [
+    "${src}/patches/fix-library-path.patch"
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    dtkdeclarative
+    qt5integration
+    qt5platform-plugins
+    udisks2-qt5
+    qtmpris
+    qtmultimedia
+    kcodecs
+    ffmpeg
+    libvlc
+    taglib
+    SDL2
+  ] ++ (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+  ]);
+
+  cmakeFlags = [
+    "-DVERSION=${version}"
+  ];
+
+  env.NIX_CFLAGS_COMPILE = toString [
+    "-I${libvlc}/include/vlc/plugins"
+    "-I${libvlc}/include/vlc"
+  ];
+
+  strictDeps = true;
+
+  preFixup = ''
+    qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+  '';
+
+  meta = with lib; {
+    description = "Awesome music player with brilliant and tweakful UI Deepin-UI based";
+    homepage = "https://github.com/linuxdeepin/deepin-music";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-picker/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-picker/default.nix
new file mode 100644
index 000000000000..cafd235fc9f4
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-picker/default.nix
@@ -0,0 +1,59 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, qmake
+, qttools
+, pkg-config
+, wrapQtAppsHook
+, dtkwidget
+, qtbase
+, qtsvg
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-picker";
+  version = "6.0.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-DkSgeMALhwGeU5sDHuerpPpiN3/3m19jmwtwOjZvOVo=";
+  };
+
+  nativeBuildInputs = [
+    qmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    dtkwidget
+    qtsvg
+    xorg.libXtst
+  ];
+
+  postPatch = ''
+    substituteInPlace com.deepin.Picker.service \
+      --replace "/usr/bin/deepin-picker" "$out/bin/deepin-picker"
+  '';
+
+  qmakeFlags = [
+    "BINDIR=${placeholder "out"}/bin"
+    "ICONDIR=${placeholder "out"}/share/icons/hicolor/scalable/apps"
+    "APPDIR=${placeholder "out"}/share/applications"
+    "DSRDIR=${placeholder "out"}/share/deepin-picker"
+    "DOCDIR=${placeholder "out"}/share/dman/deepin-picker"
+  ];
+
+  meta = with lib; {
+    description = "Color picker application";
+    homepage = "https://github.com/linuxdeepin/deepin-picker";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-reader/0001-build-tests-with-cpp-14.patch b/nixpkgs/pkgs/desktops/deepin/apps/deepin-reader/0001-build-tests-with-cpp-14.patch
new file mode 100644
index 000000000000..cf88eb6db074
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-reader/0001-build-tests-with-cpp-14.patch
@@ -0,0 +1,13 @@
+diff --git a/tests/tests.pro b/tests/tests2.pro
+index 314cad227646..48f1c66ee3f7 100644
+--- a/tests/tests.pro
++++ b/tests/tests.pro
+@@ -6,7 +6,7 @@ QT += core gui sql printsupport dbus testlib widgets
+ #QMAKE_CXXFLAGS += -g -fsanitize=undefined,address -O2
+ #QMAKE_LFLAGS += -g -fsanitize=undefined,address -O2
+ 
+-CONFIG += c++11 link_pkgconfig resources_big testcase no_testcase_installs
++CONFIG += c++14 link_pkgconfig resources_big testcase no_testcase_installs
+ 
+ #访问私有方法 -fno-access-control
+ QMAKE_CXXFLAGS += -g -Wall -fprofile-arcs -ftest-coverage -fno-access-control -O0 -fno-inline
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-reader/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-reader/default.nix
new file mode 100644
index 000000000000..0d95349bf56e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-reader/default.nix
@@ -0,0 +1,77 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, qmake
+, pkg-config
+, qttools
+, wrapQtAppsHook
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, dde-qt-dbus-factory
+, qtwebengine
+, karchive
+, poppler
+, libchardet
+, libspectre
+, openjpeg
+, djvulibre
+, qtbase
+, gtest
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-reader";
+  version = "6.0.5";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-G5UZ8lBrUo5G3jMae70p/zi9kOVqHWMNCedOy45L1PA=";
+  };
+
+  patches = [ ./0001-build-tests-with-cpp-14.patch ];
+
+  # don't use vendored htmltopdf
+  postPatch = ''
+    substituteInPlace deepin_reader.pro \
+      --replace "SUBDIRS += htmltopdf" " "
+    substituteInPlace reader/document/Model.cpp \
+      --replace "/usr/lib/deepin-reader/htmltopdf" "htmltopdf"
+  '';
+
+  nativeBuildInputs = [
+    qmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    qt5integration
+    qt5platform-plugins
+    dde-qt-dbus-factory
+    qtwebengine
+    karchive
+    poppler
+    libchardet
+    libspectre
+    djvulibre
+    openjpeg
+    gtest
+  ];
+
+  qmakeFlags = [
+    "DEFINES+=VERSION=${version}"
+  ];
+
+  meta = with lib; {
+    description = "A simple memo software with texts and voice recordings";
+    homepage = "https://github.com/linuxdeepin/deepin-reader";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-reader/use-pkg-config.diff b/nixpkgs/pkgs/desktops/deepin/apps/deepin-reader/use-pkg-config.diff
new file mode 100644
index 000000000000..7993cecd30ad
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-reader/use-pkg-config.diff
@@ -0,0 +1,46 @@
+diff --git a/3rdparty/deepin-pdfium/src/3rdparty/pdfium/pdfium.pri b/3rdparty/deepin-pdfium/src/3rdparty/pdfium/pdfium.pri
+index 3e04f340..894b0ac7 100755
+--- a/3rdparty/deepin-pdfium/src/3rdparty/pdfium/pdfium.pri
++++ b/3rdparty/deepin-pdfium/src/3rdparty/pdfium/pdfium.pri
+@@ -20,13 +20,8 @@ DEFINES +=  USE_SYSTEM_LIBJPEG \
+             USE_SYSTEM_LIBOPENJPEG2 \
+             USE_SYSTEM_FREETYPE
+ 
+-INCLUDEPATH += /usr/include/openjpeg-2.3 \
+-               /usr/include/openjpeg-2.4 \
+-               /usr/include/freetype2 \
+-               /usr/include/freetype2/freetype \
+-               /usr/include/freetype2/freetype/config
+-
+-LIBS += -lopenjp2 -llcms2 -lfreetype
++CONFIG += link_pkgconfig
++PKGCONFIG += libopenjp2 lcms2 freetype2
+ 
+ #QMAKE_CXXFLAGS += "-Wc++11-narrowing"  #is_clang
+ #QMAKE_CXXFLAGS += "-Wno-inconsistent-missing-override"  #is_clang Suppress no override warning for overridden functions.
+diff --git a/3rdparty/deepin-pdfium/src/src.pro b/3rdparty/deepin-pdfium/src/src.pro
+index 196b91d3..bda71ff4 100755
+--- a/3rdparty/deepin-pdfium/src/src.pro
++++ b/3rdparty/deepin-pdfium/src/src.pro
+@@ -2,7 +2,9 @@ TARGET = $$PWD/../lib/deepin-pdfium
+ 
+ TEMPLATE = lib
+ 
+-CONFIG += c++14
++CONFIG += c++14 link_pkgconfig
++
++PKGCONFIG += chardet
+ 
+ ###安全漏洞检测
+ #QMAKE_CXX += -g -fsanitize=undefined,address -O2
+@@ -28,10 +30,6 @@ include($$PWD/3rdparty/pdfium/pdfium.pri)
+ 
+ INCLUDEPATH += $$PWD/../include
+ 
+-INCLUDEPATH += /usr/include/chardet
+-
+-LIBS += -lchardet
+-
+ public_headers += \
+     $$PWD/../include/dpdfglobal.h \
+     $$PWD/../include/dpdfdoc.h \
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-screen-recorder/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-screen-recorder/default.nix
new file mode 100644
index 000000000000..a0f83e7eb438
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-screen-recorder/default.nix
@@ -0,0 +1,98 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, qmake
+, pkg-config
+, qttools
+, wrapQtAppsHook
+, dtkwidget
+, qt5integration
+, dde-qt-dbus-factory
+, dde-dock
+, qtbase
+, qtmultimedia
+, qtx11extras
+, image-editor
+, gsettings-qt
+, xorg
+, libusb1
+, libv4l
+, ffmpeg
+, ffmpegthumbnailer
+, portaudio
+, kwayland
+, udev
+, gst_all_1
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-screen-recorder";
+  version = "unstable-2023-07-10";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = "e8ee1e8330e2f3923e22acc952a0bd01bee94ad1";
+    hash = "sha256-QHV3hSALXI4e31YBDXRSRgT8b/J8gwm024bzlPWu2FA=";
+  };
+
+  patches = [ ./dont_use_libPath.diff ];
+
+  postPatch = ''
+    (
+      shopt -s globstar
+      substituteInPlace **/*.pro **/*.service **/*.desktop \
+        --replace "/usr/" "$out/"
+    )
+  '';
+
+  nativeBuildInputs = [
+    qmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    dde-qt-dbus-factory
+    dde-dock
+    qtbase
+    qtmultimedia
+    qtx11extras
+    image-editor
+    gsettings-qt
+    xorg.libXdmcp
+    xorg.libXtst
+    xorg.libXcursor
+    libusb1
+    libv4l
+    ffmpeg
+    ffmpegthumbnailer
+    portaudio
+    kwayland
+    udev
+  ] ++ (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+  ]);
+
+  # qt5integration must be placed before qtsvg in QT_PLUGIN_PATH
+  qtWrapperArgs = [
+    "--prefix QT_PLUGIN_PATH : ${qt5integration}/${qtbase.qtPluginPrefix}"
+    "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ udev gst_all_1.gstreamer libv4l ffmpeg ffmpegthumbnailer ]}"
+  ];
+
+  preFixup = ''
+    qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+  '';
+
+  meta = with lib; {
+    description = "Screen recorder application for dde";
+    homepage = "https://github.com/linuxdeepin/deepin-screen-recorder";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-screen-recorder/dont_use_libPath.diff b/nixpkgs/pkgs/desktops/deepin/apps/deepin-screen-recorder/dont_use_libPath.diff
new file mode 100644
index 000000000000..be3ba3267cbf
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-screen-recorder/dont_use_libPath.diff
@@ -0,0 +1,36 @@
+diff --git a/src/gstrecord/gstinterface.cpp b/src/gstrecord/gstinterface.cpp
+index 165a7ce..e1574a5 100644
+--- a/src/gstrecord/gstinterface.cpp
++++ b/src/gstrecord/gstinterface.cpp
+@@ -49,6 +49,7 @@ gstInterface::gstInterface()
+ }
+ QString gstInterface::libPath(const QString &sLib)
+ {
++    return sLib;
+     qInfo() << "gstreamer lib name is " << sLib;
+     QDir dir;
+     QString path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+diff --git a/src/main_window.cpp b/src/main_window.cpp
+index e0f6bc5..757abad 100755
+--- a/src/main_window.cpp
++++ b/src/main_window.cpp
+@@ -559,6 +559,7 @@ void MainWindow::initDynamicLibPath()
+ }
+ QString MainWindow::libPath(const QString &strlib)
+ {
++    return strlib;
+     QDir  dir;
+     QString path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(path);
+diff --git a/src/waylandrecord/avlibinterface.cpp b/src/waylandrecord/avlibinterface.cpp
+index b4145fa..97a3f5c 100644
+--- a/src/waylandrecord/avlibinterface.cpp
++++ b/src/waylandrecord/avlibinterface.cpp
+@@ -105,6 +105,7 @@ avlibInterface::avlibInterface()
+ 
+ QString avlibInterface::libPath(const QString &sLib)
+ {
++    return sLib;
+     QDir dir;
+     QString path  = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+     dir.setPath(path);
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-screensaver/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-screensaver/default.nix
new file mode 100644
index 000000000000..544e8e32b249
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-screensaver/default.nix
@@ -0,0 +1,69 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, qmake
+, qttools
+, pkg-config
+, wrapQtAppsHook
+, qtbase
+, qtx11extras
+, qtdeclarative
+, dtkwidget
+, dde-qt-dbus-factory
+, xorg
+, xscreensaver
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-screensaver";
+  version = "5.0.18";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-7lyHPE/x7rmwh7FtCPkuA8JgYpy90jRXhUWoaeZpVag=";
+  };
+
+  postPatch = ''
+    patchShebangs {src,customscreensaver/deepin-custom-screensaver}/{generate_translations.sh,update_translations.sh}
+
+    substituteInPlace src/{dbusscreensaver.cpp,com.deepin.ScreenSaver.service,src.pro} \
+      customscreensaver/deepin-custom-screensaver/deepin-custom-screensaver.pro \
+      --replace "/usr" "$out" \
+      --replace "/etc" "$out/etc"
+
+    substituteInPlace tools/preview/main.cpp \
+      --replace "/usr/lib/xscreensaver" "${xscreensaver}/libexec/xscreensaver"
+  '';
+
+  nativeBuildInputs = [
+    qmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    qtx11extras
+    qtdeclarative
+    dtkwidget
+    dde-qt-dbus-factory
+    xorg.libXScrnSaver
+  ];
+
+  qmakeFlags = [
+    "XSCREENSAVER_DATA_PATH=${xscreensaver}/libexec/xscreensaver"
+    "COMPILE_ON_V23=true"
+  ];
+
+  meta = with lib; {
+    description = "A screensaver service developed by deepin";
+    homepage = "https://github.com/linuxdeepin/deepin-screensaver";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
+
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-shortcut-viewer/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-shortcut-viewer/default.nix
new file mode 100644
index 000000000000..a9e1f8d7e977
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-shortcut-viewer/default.nix
@@ -0,0 +1,52 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, qmake
+, qtbase
+, qttools
+, pkg-config
+, wrapQtAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-shortcut-viewer";
+  version = "5.0.7";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-r/ZhA9yiPnJNTrBkVOvaTqfRvGO/NTod5tiQCquG5Gw=";
+  };
+
+  nativeBuildInputs = [
+    qmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    dtkwidget
+    qt5integration
+    qt5platform-plugins
+  ];
+
+  qmakeFlags = [
+    "VERSION=${version}"
+    "PREFIX=${placeholder "out"}"
+  ];
+
+  meta = with lib; {
+    description = "Deepin Shortcut Viewer";
+    homepage = "https://github.com/linuxdeepin/deepin-shortcut-viewer";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
+
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-system-monitor/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-system-monitor/default.nix
new file mode 100644
index 000000000000..581eb1fa3580
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-system-monitor/default.nix
@@ -0,0 +1,96 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qttools
+, deepin-gettext-tools
+, wrapQtAppsHook
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, qtbase
+, qtsvg
+, qtx11extras
+, dde-qt-dbus-factory
+, dde-dock
+, gsettings-qt
+, procps
+, libpcap
+, libnl
+, util-linux
+, systemd
+, polkit
+, wayland
+, dwayland
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-system-monitor";
+  version = "6.0.9";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-ompsCTPmmF7S0UHNNU0YDQiTdvcFglpEoS4o+XMZ7jg=";
+  };
+
+  postPatch = ''
+    substituteInPlace deepin-system-monitor-main/process/process_controller.cpp \
+      deepin-system-monitor-main/process/priority_controller.cpp \
+      deepin-system-monitor-main/service/service_manager.cpp \
+      deepin-system-monitor-main/translations/policy/com.deepin.pkexec.deepin-system-monitor.policy \
+        --replace "/usr/bin/kill" "${lib.getBin util-linux}/bin/kill" \
+        --replace "/usr/bin/renice" "${lib.getBin util-linux}/bin/renice" \
+        --replace '/usr/bin/systemctl' '${lib.getBin systemd}/systemctl'
+
+    substituteInPlace deepin-system-monitor-main/{service/service_manager.cpp,process/{priority_controller.cpp,process_controller.cpp}} \
+      --replace "/usr/bin/pkexec" "${lib.getBin polkit}/bin/pkexec"
+
+    for file in $(grep -rl "/usr")
+    do
+      substituteInPlace $file \
+        --replace "/usr" "$out"
+    done
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    deepin-gettext-tools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    qt5integration
+    qt5platform-plugins
+    qtbase
+    qtsvg
+    qtx11extras
+    dde-qt-dbus-factory
+    dde-dock
+    gsettings-qt
+    procps
+    libpcap
+    libnl
+    wayland
+    dwayland
+  ];
+
+  cmakeFlags = [
+    "-DVERSION=${version}"
+  ];
+
+  strictDeps = true;
+
+  meta = with lib; {
+    description = "A more user-friendly system monitor";
+    homepage = "https://github.com/linuxdeepin/deepin-system-monitor";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-terminal/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-terminal/default.nix
new file mode 100644
index 000000000000..7356d6342c4d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-terminal/default.nix
@@ -0,0 +1,63 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, nixosTests
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, cmake
+, qtbase
+, qtsvg
+, qttools
+, qtx11extras
+, pkg-config
+, wrapQtAppsHook
+, libsecret
+, chrpath
+, lxqt
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-terminal";
+  version = "6.0.9";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-QdODR4zmbMuzSVy6eJhwJHNPXkAn6oCLHq+YZEOmtIU=";
+  };
+
+  cmakeFlags = [ "-DVERSION=${version}" ];
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+    lxqt.lxqt-build-tools
+  ];
+
+  buildInputs = [
+    qt5integration
+    qt5platform-plugins
+    qtbase
+    qtsvg
+    dtkwidget
+    qtx11extras
+    libsecret
+    chrpath
+  ];
+
+  strictDeps = true;
+
+  passthru.tests.test = nixosTests.terminal-emulators.deepin-terminal;
+
+  meta = with lib; {
+    description = "Terminal emulator with workspace, multiple windows, remote management, quake mode and other features";
+    homepage = "https://github.com/linuxdeepin/deepin-terminal";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-voice-note/default.nix b/nixpkgs/pkgs/desktops/deepin/apps/deepin-voice-note/default.nix
new file mode 100644
index 000000000000..13124f82b7aa
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-voice-note/default.nix
@@ -0,0 +1,86 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qttools
+, wrapQtAppsHook
+, qtbase
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, qtsvg
+, dde-qt-dbus-factory
+, qtmultimedia
+, qtwebengine
+, libvlc
+, gst_all_1
+, gtest
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-voice-note";
+  version = "6.0.15";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-k6LFMs2/OQQyeGI5WXBGWkAAY4GeP8LaA8hTXFwbaCM=";
+  };
+
+  patches = [
+    ./use_v23_dbus_interface.diff
+  ];
+
+  postPatch = ''
+    substituteInPlace CMakeLists.txt \
+      --replace "/usr" "$out"
+    substituteInPlace src/common/audiowatcher.cpp \
+      --replace "/usr/share" "$out/share"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    qtsvg
+    dtkwidget
+    qt5platform-plugins
+    dde-qt-dbus-factory
+    qtmultimedia
+    qtwebengine
+    libvlc
+    gtest
+  ] ++ (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+  ]);
+
+  strictDeps = true;
+
+  cmakeFlags = [ "-DVERSION=${version}" ];
+
+  # qt5integration must be placed before qtsvg in QT_PLUGIN_PATH
+  qtWrapperArgs = [
+    "--prefix QT_PLUGIN_PATH : ${qt5integration}/${qtbase.qtPluginPrefix}"
+  ];
+
+  preFixup = ''
+    qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+  '';
+
+  meta = with lib; {
+    description = "Simple memo software with texts and voice recordings";
+    homepage = "https://github.com/linuxdeepin/deepin-voice-note";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/apps/deepin-voice-note/use_v23_dbus_interface.diff b/nixpkgs/pkgs/desktops/deepin/apps/deepin-voice-note/use_v23_dbus_interface.diff
new file mode 100644
index 000000000000..213b73e36b41
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/apps/deepin-voice-note/use_v23_dbus_interface.diff
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e7bfb81..f56f11a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -103,7 +103,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -fstack-protector-all")
+ execute_process(COMMAND cat /etc/os-version OUTPUT_VARIABLE OS_INFO_STR)
+ string(REGEX MATCHALL "MajorVersion=[0-9]+" MAJOR_STR "${OS_INFO_STR}")
+ string(REGEX MATCH "[0-9]+" MAJOR_VERSION "${MAJOR_STR}")
+-if (MAJOR_VERSION MATCHES "23")
++if (TRUE)
+     message("--------------------- OS_BUILD_V23 on")
+     add_definitions(-DOS_BUILD_V23)
+ endif()
diff --git a/nixpkgs/pkgs/desktops/deepin/artwork/dde-account-faces/default.nix b/nixpkgs/pkgs/desktops/deepin/artwork/dde-account-faces/default.nix
new file mode 100644
index 000000000000..63db25d8dbc8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/artwork/dde-account-faces/default.nix
@@ -0,0 +1,26 @@
+{ stdenvNoCC
+, lib
+, fetchFromGitHub
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "dde-account-faces";
+  version = "1.0.15";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-/eTGy+9fcYmGrh09RdCIZ2Cn12gTaGtg4Tluv25n5r0=";
+  };
+
+  makeFlags = [ "PREFIX=${placeholder "out"}/var" ];
+
+  meta = with lib; {
+    description = "Account faces of deepin desktop environment";
+    homepage = "https://github.com/linuxdeepin/dde-account-faces";
+    license = with licenses; [ gpl3Plus cc0 ];
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/artwork/deepin-desktop-theme/default.nix b/nixpkgs/pkgs/desktops/deepin/artwork/deepin-desktop-theme/default.nix
new file mode 100644
index 000000000000..a8c94910ccfc
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/artwork/deepin-desktop-theme/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, gtk3
+, xcursorgen
+, papirus-icon-theme
+, breeze-icons
+, hicolor-icon-theme
+, deepin-icon-theme
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-desktop-theme";
+  version = "1.0.9";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-rhbxqKT9yrtW4JJ8jCUSpsIh0JeEIttkS414vBhD9vs=";
+  };
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  nativeBuildInputs = [
+    cmake
+    gtk3
+    xcursorgen
+  ];
+
+  propagatedBuildInputs = [
+    breeze-icons
+    papirus-icon-theme
+    hicolor-icon-theme
+    deepin-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  preFixup = ''
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+  '';
+
+  meta = with lib; {
+    description = "Provides a variety of well-designed theme resources";
+    homepage = "https://github.com/linuxdeepin/deepin-desktop-theme";
+    license = with licenses; [ gpl3Plus cc-by-sa-40 ];
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/artwork/deepin-gtk-theme/default.nix b/nixpkgs/pkgs/desktops/deepin/artwork/deepin-gtk-theme/default.nix
new file mode 100644
index 000000000000..80ec8c50449d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/artwork/deepin-gtk-theme/default.nix
@@ -0,0 +1,31 @@
+{ stdenvNoCC
+, lib
+, fetchFromGitHub
+, gtk-engine-murrine
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "deepin-gtk-theme";
+  version = "23.11.23";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = "deepin-gtk-theme";
+    rev = version;
+    hash = "sha256-2B2BtbPeg3cEbnEIgdGFzy8MjCMWlbP/Sq4jzG5cjmc=";
+  };
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  meta = with lib; {
+    description = "Deepin GTK Theme";
+    homepage = "https://github.com/linuxdeepin/deepin-gtk-theme";
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/artwork/deepin-icon-theme/default.nix b/nixpkgs/pkgs/desktops/deepin/artwork/deepin-icon-theme/default.nix
new file mode 100644
index 000000000000..95e715e4d375
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/artwork/deepin-icon-theme/default.nix
@@ -0,0 +1,46 @@
+{ stdenvNoCC
+, lib
+, fetchFromGitHub
+, gtk3
+, xcursorgen
+, papirus-icon-theme
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "deepin-icon-theme";
+  version = "2023.11.28";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-kCWJAmJa0VmhnuegE+acj82Ojl4Z5D8g7/q2PzppJwg=";
+  };
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  nativeBuildInputs = [
+    gtk3
+    xcursorgen
+  ];
+
+  propagatedBuildInputs = [
+    papirus-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  preFixup = ''
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+  '';
+
+  meta = with lib; {
+    description = "Provides the base icon themes on deepin";
+    homepage = "https://github.com/linuxdeepin/deepin-icon-theme";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/artwork/deepin-sound-theme/default.nix b/nixpkgs/pkgs/desktops/deepin/artwork/deepin-sound-theme/default.nix
new file mode 100644
index 000000000000..f311339b6be0
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/artwork/deepin-sound-theme/default.nix
@@ -0,0 +1,26 @@
+{ stdenvNoCC
+, lib
+, fetchFromGitHub
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "deepin-sound-theme";
+  version = "15.10.6";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-BvG/ygZfM6sDuDSzAqwCzDXGT/bbA6Srlpg3br117OU=";
+  };
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  meta = with lib; {
+    description = "The freedesktop sound theme for Deepin";
+    homepage = "https://github.com/linuxdeepin/deepin-sound-theme";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/artwork/deepin-wallpapers/default.nix b/nixpkgs/pkgs/desktops/deepin/artwork/deepin-wallpapers/default.nix
new file mode 100644
index 000000000000..c0aa13f16a6d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/artwork/deepin-wallpapers/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, dde-api
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-wallpapers";
+  version = "1.7.16";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-o5rg1l8N6Ch+BdBLp+HMbVBBvrTdRtn8NSgH/9AnB2Q=";
+  };
+
+  nativeBuildInputs = [ dde-api ];
+
+  postPatch = ''
+    substituteInPlace Makefile \
+      --replace /usr/lib/deepin-api/image-blur ${dde-api}/lib/deepin-api/image-blur
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/wallpapers/deepin
+    cp deepin/* $out/share/wallpapers/deepin
+    mkdir -p $out/share/wallpapers/image-blur
+    cp image-blur/* $out/share/wallpapers/image-blur
+    mkdir -p $out/share/backgrounds
+    ln -s $out/share/wallpapers/deepin/desktop.jpg  $out/share/backgrounds/default_background.jpg
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "deepin-wallpapers provides wallpapers of dde";
+    homepage = "https://github.com/linuxdeepin/deepin-wallpapers";
+    license = with licenses; [ gpl3Plus cc-by-sa-30 ];
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-app-services/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-app-services/default.nix
new file mode 100644
index 000000000000..4c27ced09d56
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-app-services/default.nix
@@ -0,0 +1,71 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, cmake
+, wrapQtAppsHook
+, qtbase
+, qttools
+, doxygen
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-app-services";
+  version = "1.0.23";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-INxbRDpG3MqPW6IMTqEagDCGo7vwxkR6D1+lcWdjO3w=";
+  };
+
+  postPatch = ''
+    substituteInPlace dconfig-center/dde-dconfig-daemon/services/org.desktopspec.ConfigManager.service \
+      --replace "/usr/bin/dde-dconfig-daemon" "$out/bin/dde-dconfig-daemon"
+    substituteInPlace dconfig-center/dde-dconfig/main.cpp \
+      --replace "/bin/dde-dconfig-editor" "dde-dconfig-editor"
+    substituteInPlace dconfig-center/CMakeLists.txt \
+      --replace 'add_subdirectory("example")' " " \
+      --replace 'add_subdirectory("tests")'   " "
+
+    substituteInPlace dconfig-center/dde-dconfig-daemon/services/dde-dconfig-daemon.service \
+      --replace "/usr/bin" "$out/bin" \
+      --replace "/usr/share" "/run/current-system/sw/share"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    doxygen
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    qt5integration
+    qt5platform-plugins
+  ];
+
+  cmakeFlags = [
+    "-DDVERSION=${version}"
+    "-DDSG_DATA_DIR=/run/current-system/sw/share/dsg"
+    "-DQCH_INSTALL_DESTINATION=${placeholder "out"}/${qtbase.qtDocPrefix}"
+  ];
+
+  preConfigure = ''
+    # qt.qpa.plugin: Could not find the Qt platform plugin "minimal"
+    # A workaround is to set QT_PLUGIN_PATH explicitly
+    export QT_PLUGIN_PATH=${qtbase.bin}/${qtbase.qtPluginPrefix}
+  '';
+
+  meta = with lib; {
+    description = "Provids dbus service for reading and writing DSG configuration";
+    homepage = "https://github.com/linuxdeepin/dde-app-services";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-appearance/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-appearance/default.nix
new file mode 100644
index 000000000000..fef56b3978f7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-appearance/default.nix
@@ -0,0 +1,82 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, wrapQtAppsHook
+, qtbase
+, dtkgui
+, gsettings-qt
+, gtk3
+, kconfig
+, kwindowsystem
+, kglobalaccel
+, xorg
+, iconv
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-appearance";
+  version = "1.1.6";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-7oRbydLXw8yRzi9L1GH/q0cjMY/DLyWbj4RUSyNpVNM=";
+  };
+
+  patches = [
+    ./fix-custom-wallpapers-path.diff
+  ];
+
+  postPatch = ''
+    substituteInPlace src/service/impl/appearancemanager.cpp \
+      src/service/modules/api/compatibleengine.cpp \
+      src/service/modules/subthemes/customtheme.cpp \
+      --replace "/usr/share" "/run/current-system/sw/share"
+
+    for file in $(grep -rl "/usr/bin/dde-appearance"); do
+      substituteInPlace $file --replace "/usr/bin/dde-appearance" "$out/bin/dde-appearance"
+    done
+
+    substituteInPlace src/service/modules/api/themethumb.cpp \
+      --replace "/usr/lib/deepin-api" "/run/current-system/sw/lib/deepin-api"
+
+    substituteInPlace src/service/dbus/deepinwmfaker.cpp \
+      --replace "/usr/lib/deepin-daemon" "/run/current-system/sw/lib/deepin-daemon"
+
+    substituteInPlace src/service/modules/api/locale.cpp \
+      --replace "/usr/share/locale/locale.alias" "${iconv}/share/locale/locale.alias"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkgui
+    gsettings-qt
+    gtk3
+    kconfig
+    kwindowsystem
+    kglobalaccel
+    xorg.libXcursor
+    xorg.xcbutilcursor
+  ];
+
+  cmakeFlags = [
+    "-DDSG_DATA_DIR=/run/current-system/sw/share/dsg"
+    "-DSYSTEMD_USER_UNIT_DIR=${placeholder "out"}/lib/systemd/user"
+  ];
+
+  meta = with lib; {
+    description = "A program used to set the theme and appearance of deepin desktop";
+    homepage = "https://github.com/linuxdeepin/dde-appearance";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-appearance/fix-custom-wallpapers-path.diff b/nixpkgs/pkgs/desktops/deepin/core/dde-appearance/fix-custom-wallpapers-path.diff
new file mode 100644
index 000000000000..14fb527c7ef4
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-appearance/fix-custom-wallpapers-path.diff
@@ -0,0 +1,68 @@
+diff --git a/misc/dconfig/org.deepin.dde.appearance.json b/misc/dconfig/org.deepin.dde.appearance.json
+index b612e6e..371f966 100644
+--- a/misc/dconfig/org.deepin.dde.appearance.json
++++ b/misc/dconfig/org.deepin.dde.appearance.json
+@@ -143,7 +143,7 @@
+             "visibility": "private"
+         },
+         "Background_Uris": {
+-            "value": ["file:///usr/share/backgrounds/default_background.jpg"],
++            "value": ["file:///run/current-system/sw/share/backgrounds/default_background.jpg"],
+             "serial": 0,
+             "flags": [],
+             "name": "Background_Uris",
+diff --git a/src/service/dbus/deepinwmfaker.cpp b/src/service/dbus/deepinwmfaker.cpp
+index 5d455fa..40ec608 100644
+--- a/src/service/dbus/deepinwmfaker.cpp
++++ b/src/service/dbus/deepinwmfaker.cpp
+@@ -54,13 +54,13 @@ Q_GLOBAL_STATIC_WITH_ARGS(QGSettings, _gsettings_dde_zone, ("com.deepin.dde.zone
+ 
+ #define KWinDBusCompositorInterface "org.kde.kwin.Compositing"
+ #define KWinDBusCompositorPath "/Compositor"
+-const char defaultFirstBackgroundUri[] = "file:///usr/share/wallpapers/deepin/desktop.jpg";
++const char defaultFirstBackgroundUri[] = "file:///run/current-system/sw/share/wallpapers/deepin/desktop.jpg";
+ const char defaultSecondBackgroundUri[] = "francesco-ungaro-1fzbUyzsHV8-unsplash";
+ 
+ //default cursor size :24
+ #define DEFAULTCURSORSIZE 24
+ 
+-const char fallback_background_name[] = "file:///usr/share/backgrounds/default_background.jpg";
++const char fallback_background_name[] = "file:///run/current-system/sw/share/backgrounds/default_background.jpg";
+ 
+ //using org::kde::KWin;
+ 
+diff --git a/src/service/impl/appearancemanager.cpp b/src/service/impl/appearancemanager.cpp
+index 360ca6f..6db93ab 100644
+--- a/src/service/impl/appearancemanager.cpp
++++ b/src/service/impl/appearancemanager.cpp
+@@ -821,7 +821,7 @@ void AppearanceManager::doUpdateWallpaperURIs()
+     }
+ 
+     // 如果是用户自己设置的桌面壁纸, 需要将主题更新为自定义
+-    if (!monitorWallpaperUris.first().startsWith("/usr/share/wallpapers/deepin")) {
++    if (!monitorWallpaperUris.first().startsWith("/run/current-system/sw/share/wallpapers/deepin")) {
+         updateCustomTheme(TYPEWALLPAPER, monitorWallpaperUris.first());
+     }
+ }
+@@ -1689,7 +1689,7 @@ QString AppearanceManager::getWallpaperUri(const QString &index, const QString &
+             const Background &bg = backgroudlist.at(QRandomGenerator::global()->generate() % backgroudlist.size());
+             wallpaper = bg.getId();
+         } else {
+-            wallpaper = "file:///usr/share/wallpapers/deepin/desktop.jpg";
++            wallpaper = "file:///run/current-system/sw/share/wallpapers/deepin/desktop.jpg";
+         }
+ 
+         PhaseWallPaper::setWallpaperUri(index, monitorName, wallpaper);
+diff --git a/src/service/modules/background/backgrounds.cpp b/src/service/modules/background/backgrounds.cpp
+index bf739a5..1076d59 100644
+--- a/src/service/modules/background/backgrounds.cpp
++++ b/src/service/modules/background/backgrounds.cpp
+@@ -11,7 +11,7 @@
+ #include <pwd.h>
+ #include <QDBusReply>
+ 
+-QStringList Backgrounds::systemWallpapersDir = { "/usr/share/wallpapers/deepin" };
++QStringList Backgrounds::systemWallpapersDir = { "/run/current-system/sw/share/wallpapers/deepin" };
+ QStringList Backgrounds::uiSupportedFormats = { "jpeg", "png", "bmp", "tiff", "gif" };
+ 
+ Backgrounds::Backgrounds(QObject *parent)
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-application-manager/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-application-manager/default.nix
new file mode 100644
index 000000000000..0949bc6e4993
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-application-manager/default.nix
@@ -0,0 +1,64 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, wrapQtAppsHook
+, qtbase
+, dtkwidget
+, dde-polkit-agent
+, gsettings-qt
+, libcap
+, jemalloc
+, xorg
+, iconv
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-application-manager";
+  version = "1.0.19";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-1P265xqlL/wML66nKdfTgkRx6MCpLwrt5rXu+CyeShU=";
+  };
+
+  # remove this patch after next release
+  postPatch = ''
+    substituteInPlace src/modules/mimeapp/mime_app.cpp src/modules/launcher/common.h src/service/main.cpp \
+      misc/dconf/com.deepin.dde.appearance.json \
+      --replace "/usr/share" "/run/current-system/sw/share"
+
+    substituteInPlace src/lib/dlocale.cpp --replace "/usr/share/locale/locale.alias" "${iconv}/share/locale/locale.alias"
+
+    for file in $(grep -rl "/usr/bin"); do
+      substituteInPlace $file --replace "/usr/bin/" "/run/current-system/sw/bin/"
+    done
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    dtkwidget
+    gsettings-qt
+    libcap
+    jemalloc
+    xorg.libXdmcp
+    xorg.libXres
+  ];
+
+  meta = with lib; {
+    description = "Application manager for DDE";
+    homepage = "https://github.com/linuxdeepin/dde-application-manager";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-calendar/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-calendar/default.nix
new file mode 100644
index 000000000000..a9a3af0adee1
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-calendar/default.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, qttools
+, pkg-config
+, wrapQtAppsHook
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, dde-qt-dbus-factory
+, qtbase
+, qtsvg
+, libical
+, sqlite
+, runtimeShell
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-calendar";
+  version = "5.11.1";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-EQcB+a0dK2c6NdvGFbyp65a8nN2PmOpZLWx61UDOTJg=";
+  };
+
+  patches = [
+    ./fix-wrapped-name-not-in-whitelist.diff
+  ];
+
+  postPatch = ''
+    for file in $(grep -rl "/bin/bash"); do
+      substituteInPlace $file --replace "/bin/bash" "${runtimeShell}"
+    done
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qt5integration
+    qt5platform-plugins
+    dtkwidget
+    qtbase
+    qtsvg
+    dde-qt-dbus-factory
+    libical
+    sqlite
+  ];
+
+  cmakeFlags = [ "-DVERSION=${version}" ];
+
+  strictDeps = true;
+
+  meta = with lib; {
+    description = "Calendar for Deepin Desktop Environment";
+    homepage = "https://github.com/linuxdeepin/dde-calendar";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
+
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-calendar/fix-wrapped-name-not-in-whitelist.diff b/nixpkgs/pkgs/desktops/deepin/core/dde-calendar/fix-wrapped-name-not-in-whitelist.diff
new file mode 100644
index 000000000000..a139c4690a89
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-calendar/fix-wrapped-name-not-in-whitelist.diff
@@ -0,0 +1,13 @@
+diff --git a/calendar-service/src/dbusservice/dservicebase.cpp b/calendar-service/src/dbusservice/dservicebase.cpp
+index ac182881..93a9c2d8 100644
+--- a/calendar-service/src/dbusservice/dservicebase.cpp
++++ b/calendar-service/src/dbusservice/dservicebase.cpp
+@@ -52,6 +52,8 @@ bool DServiceBase::clientWhite(const int index)
+             return true;
+         }
+     }
++    if (getClientName().contains("dde-calendar"))
++    	return true;
+     return false;
+ #else
+     Q_UNUSED(index)
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-clipboard/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-clipboard/default.nix
new file mode 100644
index 000000000000..78f2fd0da6a2
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-clipboard/default.nix
@@ -0,0 +1,58 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, dtkwidget
+, gio-qt
+, cmake
+, extra-cmake-modules
+, qttools
+, wayland
+, kwayland
+, dwayland
+, pkg-config
+, wrapQtAppsHook
+, glibmm
+, gtest
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-clipboard";
+  version = "6.0.7";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-6CbCor0vgVMsMt8KY2uWrNqOsBEIaz7s2nViiHz+m1g=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    gio-qt
+    wayland
+    kwayland
+    dwayland
+    glibmm
+    gtest
+  ];
+
+  cmakeFlags = [
+    "-DSYSTEMD_USER_UNIT_DIR=${placeholder "out"}/lib/systemd/user"
+  ];
+
+  meta = with lib; {
+    description = "DDE optional clipboard manager componment";
+    homepage = "https://github.com/linuxdeepin/dde-clipboard";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-control-center/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-control-center/default.nix
new file mode 100644
index 000000000000..f397e9ca2837
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-control-center/default.nix
@@ -0,0 +1,97 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qttools
+, doxygen
+, wrapQtAppsHook
+, wrapGAppsHook
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, deepin-pw-check
+, qtbase
+, qtx11extras
+, qtmultimedia
+, polkit-qt
+, libxcrypt
+, librsvg
+, runtimeShell
+, dbus
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-control-center";
+  version = "6.0.28";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-kgQ4ySiYtaklOqER56QtKD9lk1CnRSEAU4QPHycl9eI=";
+  };
+
+  postPatch = ''
+    substituteInPlace src/plugin-accounts/operation/accountsworker.cpp \
+      --replace "/bin/bash" "${runtimeShell}"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    doxygen
+    wrapQtAppsHook
+    wrapGAppsHook
+  ];
+  dontWrapGApps = true;
+
+  buildInputs = [
+    dtkwidget
+    qt5platform-plugins
+    deepin-pw-check
+    qtbase
+    qtx11extras
+    qtmultimedia
+    polkit-qt
+    libxcrypt
+    librsvg
+  ];
+
+  cmakeFlags = [
+    "-DCVERSION=${version}"
+    "-DDISABLE_AUTHENTICATION=YES"
+    "-DDISABLE_UPDATE=YES"
+    "-DDISABLE_LANGUAGE=YES"
+    "-DBUILD_DOCS=OFF"
+    "-DMODULE_READ_DIR=/run/current-system/sw/lib/dde-control-center/modules"
+    "-DLOCALSTATE_READ_DIR=/var"
+  ];
+
+  preConfigure = ''
+    # qt.qpa.plugin: Could not find the Qt platform plugin "minimal"
+    # A workaround is to set QT_PLUGIN_PATH explicitly
+    export QT_PLUGIN_PATH=${qtbase.bin}/${qtbase.qtPluginPrefix}
+  '';
+
+  # qt5integration must be placed before qtsvg in QT_PLUGIN_PATH
+  qtWrapperArgs = [
+    "--prefix QT_PLUGIN_PATH : ${qt5integration}/${qtbase.qtPluginPrefix}"
+    "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ librsvg ]}"
+  ];
+
+  preFixup = ''
+    qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  outputs = [ "out" "dev" ];
+
+  meta = with lib; {
+    description = "Control panel of Deepin Desktop Environment";
+    homepage = "https://github.com/linuxdeepin/dde-control-center";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-dock/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-dock/default.nix
new file mode 100644
index 000000000000..5ea7da4ed201
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-dock/default.nix
@@ -0,0 +1,89 @@
+{ stdenv
+, lib
+, fetchpatch
+, fetchFromGitHub
+, cmake
+, extra-cmake-modules
+, qttools
+, pkg-config
+, wrapQtAppsHook
+, wrapGAppsHook
+, qtbase
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, dwayland
+, qtx11extras
+, gsettings-qt
+, libdbusmenu
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-dock";
+  version = "6.0.22";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-fhc2faiPH35ZKw6SCoGTz+6mgxabNpCFQeY2p68Ba5w=";
+  };
+
+  postPatch = ''
+    substituteInPlace plugins/pluginmanager/pluginmanager.cpp frame/controller/quicksettingcontroller.cpp  \
+      --replace "/usr/lib/dde-dock" "/run/current-system/sw/lib/dde-dock"
+
+    substituteInPlace configs/com.deepin.dde.dock.json frame/util/common.h \
+    --replace "/usr" "/run/current-system/sw"
+
+    for file in $(grep -rl "/usr/lib/deepin-daemon"); do
+      substituteInPlace $file --replace "/usr/lib/deepin-daemon" "/run/current-system/sw/lib/deepin-daemon"
+    done
+   '';
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+    qttools
+    pkg-config
+    wrapQtAppsHook
+    wrapGAppsHook
+  ];
+  dontWrapGApps = true;
+
+  buildInputs = [
+    qtbase
+    dtkwidget
+    qt5platform-plugins
+    dwayland
+    qtx11extras
+    gsettings-qt
+    libdbusmenu
+    xorg.libXcursor
+    xorg.libXtst
+    xorg.libXdmcp
+    xorg.libXres
+  ];
+
+  outputs = [ "out" "dev" ];
+
+  cmakeFlags = [ "-DVERSION=${version}" ];
+
+  # qt5integration must be placed before qtsvg in QT_PLUGIN_PATH
+  qtWrapperArgs = [
+    "--prefix QT_PLUGIN_PATH : ${qt5integration}/${qtbase.qtPluginPrefix}"
+  ];
+
+  preFixup = ''
+    qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  meta = with lib; {
+    description = "Deepin desktop-environment - dock module";
+    homepage = "https://github.com/linuxdeepin/dde-dock";
+    platforms = platforms.linux;
+    license = licenses.lgpl3Plus;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-file-manager/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-file-manager/default.nix
new file mode 100644
index 000000000000..a197980c8d74
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-file-manager/default.nix
@@ -0,0 +1,156 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchpatch
+, runtimeShell
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, dde-qt-dbus-factory
+, docparser
+, dde-dock
+, cmake
+, qttools
+, qtx11extras
+, qtmultimedia
+, kcodecs
+, pkg-config
+, ffmpegthumbnailer
+, libsecret
+, libmediainfo
+, mediainfo
+, libzen
+, poppler
+, polkit-qt
+, polkit
+, wrapQtAppsHook
+, wrapGAppsHook
+, lucenepp
+, boost
+, taglib
+, cryptsetup
+, glib
+, qtbase
+, util-dfm
+, deepin-pdfium
+, libuuid
+, libselinux
+, glibmm
+, pcre
+, udisks2
+, libisoburn
+, gsettings-qt
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-file-manager";
+  version = "6.0.31";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-mc2HcoLrwMXKU8w34KUEh62ZfEIfbJLVzz4JGnUE5EM=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+    wrapGAppsHook
+  ];
+  dontWrapGApps = true;
+
+  patches = [
+    ./use_v23_dbus_interface.diff
+
+    (fetchpatch {
+      name = "use-pkgconfig-to-check-mount.patch";
+      url = "https://github.com/linuxdeepin/dde-file-manager/commit/b6c210057d991591df45b80607a614e7a57a9dc0.patch";
+      hash = "sha256-k0ZYlOVN3hHs1qvvRaJ3i6okOhDE+DoUKGs9AhSFBGU=";
+    })
+  ];
+
+  postPatch = ''
+    patchShebangs .
+
+    substituteInPlace src/plugins/filemanager/dfmplugin-vault/utils/vaultdefine.h \
+      --replace "/usr/bin/deepin-compressor" "deepin-compressor"
+
+    substituteInPlace src/plugins/filemanager/dfmplugin-avfsbrowser/utils/avfsutils.cpp \
+      --replace "/usr/bin/mountavfs" "mountavfs" \
+      --replace "/usr/bin/umountavfs" "umountavfs"
+
+    substituteInPlace src/plugins/common/core/dfmplugin-menu/{extendmenuscene/extendmenu/dcustomactionparser.cpp,oemmenuscene/oemmenu.cpp} \
+      --replace "/usr" "$out"
+
+    substituteInPlace src/tools/upgrade/dialog/processdialog.cpp \
+      --replace "/usr/bin/dde-file-manager" "dde-file-manager" \
+      --replace "/usr/bin/dde-desktop" "dde-desktop"
+
+    substituteInPlace src/dfm-base/file/local/localfilehandler.cpp \
+      --replace "/usr/lib/deepin-daemon" "/run/current-system/sw/lib/deepin-daemon"
+
+    substituteInPlace src/plugins/desktop/ddplugin-background/backgroundservice.cpp \
+      src/plugins/desktop/ddplugin-wallpapersetting/wallpapersettings.cpp \
+      --replace "/usr/share/backgrounds" "/run/current-system/sw/share/backgrounds"
+
+    find . -type f -regex ".*\\.\\(service\\|policy\\|desktop\\)" -exec sed -i -e "s|/usr/|$out/|g" {} \;
+  '';
+
+  buildInputs = [
+    dtkwidget
+    qt5platform-plugins
+    deepin-pdfium
+    util-dfm
+    dde-qt-dbus-factory
+    glibmm
+    docparser
+    dde-dock
+    qtx11extras
+    qtmultimedia
+    kcodecs
+    ffmpegthumbnailer
+    libsecret
+    libmediainfo
+    mediainfo
+    poppler
+    polkit-qt
+    polkit
+    lucenepp
+    boost
+    taglib
+    cryptsetup
+    libuuid
+    libselinux
+    pcre
+    udisks2
+    libisoburn
+    gsettings-qt
+  ];
+
+  cmakeFlags = [
+    "-DVERSION=${version}"
+  ];
+
+  enableParallelBuilding = true;
+
+  # qt5integration must be placed before qtsvg in QT_PLUGIN_PATH
+  qtWrapperArgs = [
+    "--prefix QT_PLUGIN_PATH : ${qt5integration}/${qtbase.qtPluginPrefix}"
+  ];
+
+  preFixup = ''
+    qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  meta = with lib; {
+    description = "File manager for deepin desktop environment";
+    homepage = "https://github.com/linuxdeepin/dde-file-manager";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
+
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-file-manager/use_v23_dbus_interface.diff b/nixpkgs/pkgs/desktops/deepin/core/dde-file-manager/use_v23_dbus_interface.diff
new file mode 100644
index 000000000000..5a42ecd4a1f5
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-file-manager/use_v23_dbus_interface.diff
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e93d3ad..94e3eca 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -30,7 +30,7 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ endif()
+ 
+ #Indentify the version
+-if (${DEEPIN_OS_VERSION} MATCHES "23")
++if (TRUE)
+     add_definitions(-DCOMPILE_ON_V23)
+     set(COMPLIE_ON_V23 TRUE)
+     message("COMPILE ON v23")
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-gsettings-schemas/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-gsettings-schemas/default.nix
new file mode 100644
index 000000000000..c1a26e100a29
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-gsettings-schemas/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, stdenv
+, runCommand
+, glib
+, gtk3
+, dde-dock
+, startdde
+, dde-session-shell
+, dde-file-manager
+, deepin-desktop-schemas
+, deepin-movie-reborn
+, deepin-system-monitor
+, gsettings-desktop-schemas
+, extraGSettingsOverrides ? ""
+, extraGSettingsOverridePackages ? [ ]
+}:
+
+let
+  gsettingsOverridePackages = [
+    dde-dock
+    startdde
+    dde-session-shell
+    dde-file-manager
+    deepin-desktop-schemas
+    deepin-movie-reborn
+    deepin-system-monitor
+    gsettings-desktop-schemas # dde-appearance need org.gnome.desktop.background
+  ] ++ extraGSettingsOverridePackages;
+
+in
+with lib;
+
+# TODO: Having https://github.com/NixOS/nixpkgs/issues/54150 would supersede this
+runCommand "nixos-gsettings-desktop-schemas" { preferLocalBuild = true; }
+''
+    data_dir="$out/share/gsettings-schemas/nixos-gsettings-overrides"
+    schema_dir="$data_dir/glib-2.0/schemas"
+
+    mkdir -p $schema_dir
+
+    ${concatMapStringsSep "\n" (pkg: "cp -rf \"${glib.getSchemaPath pkg}\"/*.xml \"$schema_dir\"") gsettingsOverridePackages}
+
+    chmod -R a+w "$data_dir"
+
+    cat - > "$schema_dir/nixos-defaults.gschema.override" <<- EOF
+    ${extraGSettingsOverrides}
+    EOF
+
+    ${glib.dev}/bin/glib-compile-schemas $schema_dir
+  ''
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-launchpad/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-launchpad/default.nix
new file mode 100644
index 000000000000..a6104d61c922
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-launchpad/default.nix
@@ -0,0 +1,58 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, qttools
+, pkg-config
+, wrapQtAppsHook
+, dtkwidget
+, dtkdeclarative
+, qtbase
+, appstream-qt
+, kitemmodels
+, qt5integration
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-launchpad";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-8m0DjQYih3hB/n2VHuJgUYBe8tpGwBU0NdkLxr1OsFc=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    dtkdeclarative
+    qtbase
+    appstream-qt
+    kitemmodels
+  ];
+
+  cmakeFlags = [
+    "-DSYSTEMD_USER_UNIT_DIR=${placeholder "out"}/lib/systemd/user"
+  ];
+
+  # qt5integration must be placed before qtsvg in QT_PLUGIN_PATH
+  qtWrapperArgs = [
+    "--prefix QT_PLUGIN_PATH : ${qt5integration}/${qtbase.qtPluginPrefix}"
+  ];
+
+  meta = with lib; {
+    description = "The 'launcher' or 'start menu' component for DDE";
+    homepage = "https://github.com/linuxdeepin/dde-launchpad";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-network-core/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-network-core/default.nix
new file mode 100644
index 000000000000..24d46698765e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-network-core/default.nix
@@ -0,0 +1,62 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, qttools
+, pkg-config
+, wrapQtAppsHook
+, qtbase
+, qtsvg
+, dtkwidget
+, dde-dock
+, dde-control-center
+, dde-session-shell
+, networkmanager-qt
+, glib
+, gtest
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-network-core";
+  version = "2.0.15";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-AMuWEz3Eyw0tG0srLWpqS7MO7Z4ZzIay4z59cZQZU0o=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    qtsvg
+    dtkwidget
+    dde-dock
+    dde-control-center
+    dde-session-shell
+    networkmanager-qt
+    glib
+    gtest
+  ];
+
+  cmakeFlags = [
+    "-DVERSION=${version}"
+  ];
+
+  strictDeps = true;
+
+  meta = with lib; {
+    description = "DDE network library framework";
+    homepage = "https://github.com/linuxdeepin/dde-network-core";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-polkit-agent/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-polkit-agent/default.nix
new file mode 100644
index 000000000000..f3f93be7f30e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-polkit-agent/default.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, dde-qt-dbus-factory
+, pkg-config
+, cmake
+, qttools
+, wrapQtAppsHook
+, polkit-qt
+, qtbase
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-polkit-agent";
+  version = "6.0.5";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-NSMwNL4ttCaqo0h0sF11bOJ20FhOB+SG27K4k8F4O/o=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    qt5platform-plugins
+    dde-qt-dbus-factory
+    polkit-qt
+  ];
+
+  # qt5integration must be placed before qtsvg in QT_PLUGIN_PATH
+  qtWrapperArgs = [
+    "--prefix QT_PLUGIN_PATH : ${qt5integration}/${qtbase.qtPluginPrefix}"
+  ];
+
+  postFixup = ''
+    wrapQtApp $out/lib/polkit-1-dde/dde-polkit-agent
+  '';
+
+  meta = with lib; {
+    description = "PolicyKit agent for Deepin Desktop Environment";
+    homepage = "https://github.com/linuxdeepin/dde-polkit-agent";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-session-shell/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-session-shell/default.nix
new file mode 100644
index 000000000000..48479c6893ea
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-session-shell/default.nix
@@ -0,0 +1,111 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, linkFarm
+, cmake
+, pkg-config
+, qttools
+, wrapQtAppsHook
+, wrapGAppsHook
+, qtbase
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, deepin-pw-check
+, gsettings-qt
+, lightdm_qt
+, qtx11extras
+, linux-pam
+, xorg
+, gtest
+, xkeyboard_config
+, dbus
+, dde-session-shell
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-session-shell";
+  version = "6.0.10";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-h4X3RZe7+CxVeFmk/7+7K4d/2D1+jhECKQaxl4TsuvM=";
+  };
+
+  postPatch = ''
+    substituteInPlace scripts/lightdm-deepin-greeter files/wayland/lightdm-deepin-greeter-wayland \
+      --replace "/usr/lib/deepin-daemon" "/run/current-system/sw/lib/deepin-daemon"
+
+    substituteInPlace src/session-widgets/auth_module.h \
+      --replace "/usr/lib/dde-control-center" "/run/current-system/sw/lib/dde-control-center"
+
+    substituteInPlace src/global_util/modules_loader.cpp \
+      --replace "/usr/lib/dde-session-shell/modules" "/run/current-system/sw/lib/dde-session-shell/modules"
+
+    substituteInPlace src/{session-widgets/{lockcontent.cpp,userinfo.cpp},widgets/fullscreenbackground.cpp} \
+      --replace "/usr/share/backgrounds" "/run/current-system/sw/share/backgrounds"
+
+    substituteInPlace src/global_util/xkbparser.h \
+      --replace "/usr/share/X11/xkb/rules/base.xml" "${xkeyboard_config}/share/X11/xkb/rules/base.xml"
+
+    substituteInPlace files/{org.deepin.dde.ShutdownFront1.service,org.deepin.dde.LockFront1.service} \
+      --replace "/usr/bin/dbus-send" "${dbus}/bin/dbus-send" \
+      --replace "/usr/share" "$out/share"
+
+    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} \
+      --replace "/usr" "$out"
+
+    patchShebangs files/deepin-greeter
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+    wrapGAppsHook
+  ];
+  dontWrapGApps = true;
+
+  buildInputs = [
+    qtbase
+    dtkwidget
+    qt5platform-plugins
+    deepin-pw-check
+    gsettings-qt
+    lightdm_qt
+    qtx11extras
+    linux-pam
+    xorg.libXcursor
+    xorg.libXtst
+    xorg.libXrandr
+    xorg.libXdmcp
+    gtest
+  ];
+
+  outputs = [ "out" "dev" ];
+
+  # qt5integration must be placed before qtsvg in QT_PLUGIN_PATH
+  qtWrapperArgs = [
+    "--prefix QT_PLUGIN_PATH : ${qt5integration}/${qtbase.qtPluginPrefix}"
+  ];
+
+  preFixup = ''
+    qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  passthru.xgreeters = linkFarm "deepin-greeter-xgreeters" [{
+    path = "${dde-session-shell}/share/xgreeters/lightdm-deepin-greeter.desktop";
+    name = "lightdm-deepin-greeter.desktop";
+  }];
+
+  meta = with lib; {
+    description = "Deepin desktop-environment - session-shell module";
+    homepage = "https://github.com/linuxdeepin/dde-session-shell";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-session-ui/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-session-ui/default.nix
new file mode 100644
index 000000000000..a732589d7ea1
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-session-ui/default.nix
@@ -0,0 +1,84 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qttools
+, wrapQtAppsHook
+, qtbase
+, dtkwidget
+, qt5integration
+, qt5platform-plugins
+, dde-dock
+, gsettings-qt
+, qtx11extras
+, gtest
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-session-ui";
+  version = "6.0.10";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-JwktVbwWdfqURhZuEFdB5oaKMsBZu5DekpZ2WGpcL4Q=";
+  };
+
+  postPatch = ''
+    substituteInPlace widgets/fullscreenbackground.cpp \
+      --replace "/usr/share/backgrounds" "/run/current-system/sw/share/backgrounds" \
+      --replace "/usr/share/wallpapers" "/run/current-system/sw/share/wallpapers"
+
+    substituteInPlace dde-warning-dialog/src/org.deepin.dde.WarningDialog1.service dde-welcome/src/org.deepin.dde.Welcome1.service \
+      --replace "/usr/lib/deepin-daemon" "/run/current-system/sw/lib/deepin-daemon"
+
+    substituteInPlace dmemory-warning-dialog/src/org.deepin.dde.MemoryWarningDialog1.service \
+      --replace "/usr" "$out"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    dtkwidget
+    qt5platform-plugins
+    dde-dock
+    gsettings-qt
+    qtx11extras
+    gtest
+  ];
+
+  cmakeFlags = [
+   "-DDISABLE_SYS_UPDATE=ON"
+  ];
+
+  # qt5integration must be placed before qtsvg in QT_PLUGIN_PATH
+  qtWrapperArgs = [
+    "--prefix QT_PLUGIN_PATH : ${qt5integration}/${qtbase.qtPluginPrefix}"
+  ];
+
+  preFixup = ''
+    qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  postFixup = ''
+    for binary in $out/lib/deepin-daemon/*; do
+      wrapProgram $binary "''${qtWrapperArgs[@]}"
+    done
+  '';
+
+  meta = with lib; {
+    description = "Deepin desktop-environment - Session UI module";
+    homepage = "https://github.com/linuxdeepin/dde-session-ui";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-session/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-session/default.nix
new file mode 100644
index 000000000000..72ae99f8c843
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-session/default.nix
@@ -0,0 +1,69 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, wrapQtAppsHook
+, qtbase
+, dtkcore
+, gsettings-qt
+, libsecret
+, xorg
+, systemd
+, dde-polkit-agent
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-session";
+  version = "1.1.9";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-CyHvvNALXe4fOMjD48By/iaU6/xNUhH9yG19Ob3bHy0=";
+  };
+
+  postPatch = ''
+    # Avoid using absolute path to distinguish applications
+    substituteInPlace src/dde-session/impl/sessionmanager.cpp \
+      --replace 'file.readAll().startsWith("/usr/bin/dde-lock")' 'file.readAll().contains("dde-lock")' \
+
+    substituteInPlace systemd/dde-session-initialized.target.wants/dde-polkit-agent.service \
+      --replace "/usr/lib/polkit-1-dde" "${dde-polkit-agent}/lib/polkit-1-dde"
+
+    for file in $(grep -rl "/usr/lib/deepin-daemon"); do
+      substituteInPlace $file --replace "/usr/lib/deepin-daemon" "/run/current-system/sw/lib/deepin-daemon"
+    done
+
+    for file in $(grep -rl "/usr/bin"); do
+      substituteInPlace $file --replace "/usr/bin/" "/run/current-system/sw/bin/"
+    done
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    dtkcore
+    gsettings-qt
+    libsecret
+    xorg.libXcursor
+    systemd
+  ];
+
+  # FIXME: dde-wayland always exits abnormally
+  passthru.providedSessions = [ "dde-x11" ];
+
+  meta = with lib; {
+    description = "New deepin session based on systemd and existing projects";
+    homepage = "https://github.com/linuxdeepin/dde-session";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dde-widgets/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dde-widgets/default.nix
new file mode 100644
index 000000000000..975cb978e7a7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dde-widgets/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, dde-qt-dbus-factory
+, wrapQtAppsHook
+, qtbase
+, qtx11extras
+, dtkwidget
+, qt5integration
+, gtest
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-widgets";
+  version = "6.0.14";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-bmhT7UhMXtC5wlRtwlVnGjoq8rUQcDSk4rGQ0Xrz9ZI=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    dde-qt-dbus-factory
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    qtx11extras
+    dtkwidget
+    qt5integration
+    gtest
+  ];
+
+  meta = with lib; {
+    description = "Desktop widgets service/implementation for DDE";
+    homepage = "https://github.com/linuxdeepin/dde-widgets";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/deepin-kwin/0001-hardcode-fallback-background.diff b/nixpkgs/pkgs/desktops/deepin/core/deepin-kwin/0001-hardcode-fallback-background.diff
new file mode 100644
index 000000000000..872fa26c5e55
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/deepin-kwin/0001-hardcode-fallback-background.diff
@@ -0,0 +1,15 @@
+diff --git a/src/effects/multitaskview/multitaskview.cpp b/src/effects/multitaskview/multitaskview.cpp
+index 268bc42..d41f7bf 100644
+--- a/src/effects/multitaskview/multitaskview.cpp
++++ b/src/effects/multitaskview/multitaskview.cpp
+@@ -50,8 +50,8 @@
+ #define SCISSOR_HOFFD 400
+ 
+ const char screen_recorder[] = "deepin-screen-recorder deepin-screen-recorder";
+-const char fallback_background_name[] = "file:///usr/share/wallpapers/deepin/desktop.jpg";
+-const char previous_default_background_name[] = "file:///usr/share/backgrounds/default_background.jpg";
++const char fallback_background_name[] = "file:///run/current-system/sw/share/wallpapers/deepin/desktop.jpg";
++const char previous_default_background_name[] = "file:///run/current-system/sw/share/backgrounds/default_background.jpg";
+ const char add_workspace_png[] = ":/effects/multitaskview/buttons/add-light.png";//":/resources/themes/add-light.svg";
+ const char delete_workspace_png[] = ":/effects/multitaskview/buttons/workspace_delete.png";
+ 
diff --git a/nixpkgs/pkgs/desktops/deepin/core/deepin-kwin/default.nix b/nixpkgs/pkgs/desktops/deepin/core/deepin-kwin/default.nix
new file mode 100644
index 000000000000..03e40357317c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/deepin-kwin/default.nix
@@ -0,0 +1,117 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, wayland
+, dwayland
+, qtbase
+, qttools
+, qtx11extras
+, wrapQtAppsHook
+, extra-cmake-modules
+, gsettings-qt
+, libepoxy
+, kconfig
+, kconfigwidgets
+, kcoreaddons
+, kcrash
+, kdbusaddons
+, kiconthemes
+, kglobalaccel
+, kidletime
+, knotifications
+, kpackage
+, plasma-framework
+, kcmutils
+, knewstuff
+, kdecoration
+, kscreenlocker
+, breeze-qt5
+, libinput
+, mesa
+, lcms2
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-kwin";
+  version = "5.25.11";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-J92T1hsRmmtkjF9OPsrikRtd7bQSEG88UOYu+BHUSx0=";
+  };
+
+  patches = [
+    ./0001-hardcode-fallback-background.diff
+  ];
+
+  # Avoid using absolute path to distinguish applications
+  postPatch = ''
+    substituteInPlace src/effects/screenshot/screenshotdbusinterface1.cpp \
+      --replace 'file.readAll().startsWith(DEFINE_DDE_DOCK_PATH"dde-dock")' 'file.readAll().contains("dde-dock")'
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    extra-cmake-modules
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    qttools
+    qtx11extras
+    wayland
+    dwayland
+    libepoxy
+    gsettings-qt
+
+    kconfig
+    kconfigwidgets
+    kcoreaddons
+    kcrash
+    kdbusaddons
+    kiconthemes
+
+    kglobalaccel
+    kidletime
+    knotifications
+    kpackage
+    plasma-framework
+    kcmutils
+    knewstuff
+    kdecoration
+    kscreenlocker
+
+    breeze-qt5
+    libinput
+    mesa
+    lcms2
+
+    xorg.libxcb
+    xorg.libXdmcp
+    xorg.libXcursor
+    xorg.xcbutilcursor
+    xorg.libXtst
+    xorg.libXScrnSaver
+  ];
+
+  cmakeFlags = [
+    "-DKWIN_BUILD_RUNNERS=OFF"
+  ];
+
+  outputs = [ "out" "dev" ];
+
+  meta = with lib; {
+    description = "Fork of kwin, an easy to use, but flexible, composited Window Manager";
+    homepage = "https://github.com/linuxdeepin/deepin-kwin";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/deepin-service-manager/default.nix b/nixpkgs/pkgs/desktops/deepin/core/deepin-service-manager/default.nix
new file mode 100644
index 000000000000..3d657ef33869
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/deepin-service-manager/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, wrapQtAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-service-manager";
+  version = "1.0.3";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-gTzyQHFPyn2+A+o+4VYySDBCZftfG2WnTXuqzeF+QhA=";
+  };
+
+  postPatch = ''
+    for file in $(grep -rl "/usr/bin/deepin-service-manager"); do
+      substituteInPlace $file --replace "/usr/bin/deepin-service-manager" "$out/bin/deepin-service-manager"
+    done
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  meta = with lib; {
+    description = "Manage DBus service on Deepin";
+    homepage = "https://github.com/linuxdeepin/deepin-service-manager";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/core/dpa-ext-gnomekeyring/default.nix b/nixpkgs/pkgs/desktops/deepin/core/dpa-ext-gnomekeyring/default.nix
new file mode 100644
index 000000000000..febfa41711e0
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/core/dpa-ext-gnomekeyring/default.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qttools
+, wrapQtAppsHook
+, dtkwidget
+, dde-polkit-agent
+, qt5integration
+, libsecret
+, libgnome-keyring
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dpa-ext-gnomekeyring";
+  version = "6.0.1";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-SyoahSdGPkWitDek4RD5M2hTR78GFpuijryteKVAx6k=";
+  };
+
+  postPatch = ''
+    substituteInPlace gnomekeyringextention.cpp \
+      --replace "/usr/share/dpa-ext-gnomekeyring" "$out/share/dpa-ext-gnomekeyring"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+    dde-polkit-agent
+    qt5integration
+    libgnome-keyring
+    libsecret
+  ];
+
+  meta = with lib; {
+    description = "GNOME keyring extension for dde-polkit-agent";
+    homepage = "https://github.com/linuxdeepin/dpa-ext-gnomekeyring";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/default.nix b/nixpkgs/pkgs/desktops/deepin/default.nix
new file mode 100644
index 000000000000..0361a13142cb
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/default.nix
@@ -0,0 +1,98 @@
+{ lib, pkgs, config, libsForQt5 }:
+let
+  packages = self:
+  let
+    inherit (self) callPackage;
+  in {
+    #### LIBRARIES
+    dtkcommon = callPackage ./library/dtkcommon { };
+    dtkcore = callPackage ./library/dtkcore { };
+    dtkgui = callPackage ./library/dtkgui { };
+    dtkwidget = callPackage ./library/dtkwidget { };
+    dtkdeclarative = callPackage ./library/dtkdeclarative { };
+    deepin-pdfium = callPackage ./library/deepin-pdfium { };
+    qt5platform-plugins = callPackage ./library/qt5platform-plugins { };
+    qt5integration = callPackage ./library/qt5integration { };
+    deepin-wayland-protocols = callPackage ./library/deepin-wayland-protocols { };
+    deepin-ocr-plugin-manager = callPackage ./library/deepin-ocr-plugin-manager { };
+    dwayland = callPackage ./library/dwayland { };
+    dde-qt-dbus-factory = callPackage ./library/dde-qt-dbus-factory { };
+    disomaster = callPackage ./library/disomaster { };
+    docparser = callPackage ./library/docparser { };
+    gio-qt = callPackage ./library/gio-qt { };
+    image-editor = callPackage ./library/image-editor { };
+    udisks2-qt5 = callPackage ./library/udisks2-qt5 { };
+    util-dfm = callPackage ./library/util-dfm { };
+
+    #### CORE
+    deepin-kwin = callPackage ./core/deepin-kwin { };
+    dde-appearance = callPackage ./core/dde-appearance { };
+    dde-app-services = callPackage ./core/dde-app-services { };
+    dde-application-manager = callPackage ./core/dde-application-manager { };
+    dde-control-center = callPackage ./core/dde-control-center { };
+    dde-calendar = callPackage ./core/dde-calendar { };
+    dde-clipboard = callPackage ./core/dde-clipboard { };
+    dde-dock = callPackage ./core/dde-dock { };
+    dde-file-manager = callPackage ./core/dde-file-manager { };
+    dde-launchpad = callPackage ./core/dde-launchpad { };
+    dde-network-core = callPackage ./core/dde-network-core { };
+    dde-session = callPackage ./core/dde-session { };
+    dde-session-shell = callPackage ./core/dde-session-shell { };
+    dde-session-ui = callPackage ./core/dde-session-ui { };
+    deepin-service-manager = callPackage ./core/deepin-service-manager { };
+    dde-polkit-agent = callPackage ./core/dde-polkit-agent { };
+    dpa-ext-gnomekeyring = callPackage ./core/dpa-ext-gnomekeyring { };
+    dde-gsettings-schemas = callPackage ./core/dde-gsettings-schemas { };
+    dde-widgets = callPackage ./core/dde-widgets { };
+
+    #### Dtk Application
+    deepin-album = callPackage ./apps/deepin-album { };
+    deepin-calculator = callPackage ./apps/deepin-calculator { };
+    deepin-camera = callPackage ./apps/deepin-camera { };
+    deepin-compressor = callPackage ./apps/deepin-compressor { };
+    deepin-clone = callPackage ./apps/deepin-clone { };
+    deepin-draw = callPackage ./apps/deepin-draw { };
+    deepin-editor = callPackage ./apps/deepin-editor { };
+    deepin-image-viewer = callPackage ./apps/deepin-image-viewer { };
+    deepin-movie-reborn = callPackage ./apps/deepin-movie-reborn { };
+    deepin-music = callPackage ./apps/deepin-music { };
+    deepin-picker = callPackage ./apps/deepin-picker { };
+    deepin-screen-recorder = callPackage ./apps/deepin-screen-recorder { };
+    deepin-shortcut-viewer = callPackage ./apps/deepin-shortcut-viewer { };
+    deepin-system-monitor = callPackage ./apps/deepin-system-monitor { };
+    deepin-terminal = callPackage ./apps/deepin-terminal { };
+    deepin-reader = callPackage ./apps/deepin-reader { };
+    deepin-voice-note = callPackage ./apps/deepin-voice-note { };
+    deepin-screensaver = callPackage ./apps/deepin-screensaver { };
+
+    #### Go Packages
+    go-lib = callPackage ./go-package/go-lib { };
+    go-gir-generator = callPackage ./go-package/go-gir-generator { };
+    go-dbus-factory = callPackage ./go-package/go-dbus-factory { };
+    dde-api = callPackage ./go-package/dde-api { };
+    dde-daemon = callPackage ./go-package/dde-daemon { };
+    deepin-pw-check = callPackage ./go-package/deepin-pw-check { };
+    deepin-desktop-schemas = callPackage ./go-package/deepin-desktop-schemas { };
+    startdde = callPackage ./go-package/startdde { };
+
+    #### TOOLS
+    dde-device-formatter = callPackage ./tools/dde-device-formatter { };
+    deepin-gettext-tools = callPackage ./tools/deepin-gettext-tools { };
+
+    #### ARTWORK
+    dde-account-faces = callPackage ./artwork/dde-account-faces { };
+    deepin-icon-theme = callPackage ./artwork/deepin-icon-theme { };
+    deepin-wallpapers = callPackage ./artwork/deepin-wallpapers { };
+    deepin-gtk-theme = callPackage ./artwork/deepin-gtk-theme { };
+    deepin-sound-theme = callPackage ./artwork/deepin-sound-theme { };
+    deepin-desktop-theme = callPackage ./artwork/deepin-desktop-theme { };
+
+    #### MISC
+    deepin-desktop-base = callPackage ./misc/deepin-desktop-base { };
+    deepin-turbo = callPackage ./misc/deepin-turbo { };
+  } // lib.optionalAttrs config.allowAliases {
+    dde-kwin = throw "The 'deepin.dde-kwin' package was removed as it is outdated and no longer relevant."; # added 2023-09-27
+    dde-launcher = throw "The 'deepin.dde-launcher' is no longer maintained. Please use 'deepin.dde-launchpad' instead."; # added 2023-11-23
+  };
+in
+lib.makeScope libsForQt5.newScope packages
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/dde-api/default.nix b/nixpkgs/pkgs/desktops/deepin/go-package/dde-api/default.nix
new file mode 100644
index 000000000000..11aa986124b2
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/dde-api/default.nix
@@ -0,0 +1,115 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchpatch
+, buildGoModule
+, pkg-config
+, deepin-gettext-tools
+, wrapQtAppsHook
+, wrapGAppsHook
+, alsa-lib
+, gtk3
+, libcanberra
+, libgudev
+, librsvg
+, poppler
+, pulseaudio
+, gdk-pixbuf-xlib
+, coreutils
+, dbus
+}:
+
+buildGoModule rec {
+  pname = "dde-api";
+  version = "6.0.7";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-kdf1CoZUyda6bOTW0WJTgaXYhocrjRU9ptj7i+k8aaQ=";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "modify_PKGBUILD_to_support_OBS.patch";
+      url = "https://github.com/linuxdeepin/dde-api/commit/1399522d032c6c649db79a33348cdb1a233bc23a.patch";
+      hash = "sha256-kSHnYaOxIvv7lAJnvxpSwyRDPyDxpAq9x+gJcBdU3T8=";
+    })
+  ];
+
+  vendorHash = "sha256-4Yscw3QjWG1rlju6sMRHGn3dSe65b1nx10B3KeyAzBM=";
+
+  postPatch = ''
+    substituteInPlace misc/systemd/system/deepin-shutdown-sound.service \
+      --replace "/usr/bin/true" "${coreutils}/bin/true"
+
+    substituteInPlace sound-theme-player/main.go \
+      --replace "/usr/sbin/alsactl" "alsactl"
+
+    substituteInPlace misc/{scripts/deepin-boot-sound.sh,systemd/system/deepin-login-sound.service} \
+     --replace "/usr/bin/dbus-send" "${dbus}/bin/dbus-send"
+
+    substituteInPlace lunar-calendar/huangli.go adjust-grub-theme/main.go \
+      --replace "/usr/share/dde-api" "$out/share/dde-api"
+
+    substituteInPlace themes/{theme.go,settings.go} \
+      --replace "/usr/share" "/run/current-system/sw/share"
+
+    for file in $(grep "/usr/lib/deepin-api" * -nR |awk -F: '{print $1}')
+    do
+      sed -i 's|/usr/lib/deepin-api|/run/current-system/sw/lib/deepin-api|g' $file
+    done
+  '';
+
+  nativeBuildInputs = [
+    pkg-config
+    deepin-gettext-tools
+    wrapQtAppsHook
+    wrapGAppsHook
+  ];
+  dontWrapGApps = true;
+
+  buildInputs = [
+    alsa-lib
+    gtk3
+    libcanberra
+    libgudev
+    librsvg
+    poppler
+    pulseaudio
+    gdk-pixbuf-xlib
+  ];
+
+  buildPhase = ''
+    runHook preBuild
+    make GOBUILD_OPTIONS="$GOFLAGS"
+    runHook postBuild
+  '';
+
+  doCheck = false;
+
+  installPhase = ''
+    runHook preInstall
+    make install DESTDIR="$out" PREFIX="/"
+    runHook postInstall
+  '';
+
+  preFixup = ''
+    qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  postFixup = ''
+    for binary in $out/lib/deepin-api/*; do
+      wrapProgram $binary "''${qtWrapperArgs[@]}"
+    done
+  '';
+
+  meta = with lib; {
+    description = "Dbus interfaces used for screen zone detecting, thumbnail generating, sound playing, etc";
+    homepage = "https://github.com/linuxdeepin/dde-api";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0001-dont-set-PATH.diff b/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0001-dont-set-PATH.diff
new file mode 100644
index 000000000000..f1d9f8017af6
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0001-dont-set-PATH.diff
@@ -0,0 +1,15 @@
+diff --git a/grub2/modify_manger.go b/grub2/modify_manger.go
+index a811770b..30e9561e 100644
+--- a/grub2/modify_manger.go
++++ b/grub2/modify_manger.go
+@@ -21,7 +21,6 @@ const (
+ )
+ 
+ func init() {
+-	_ = os.Setenv("PATH", "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")
+ }
+ 
+ type modifyManager struct {
+-- 
+2.39.2
+
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0002-fix-custom-wallpapers-path.diff b/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0002-fix-custom-wallpapers-path.diff
new file mode 100644
index 000000000000..5d4bddd08009
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0002-fix-custom-wallpapers-path.diff
@@ -0,0 +1,25 @@
+diff --git a/bin/dde-system-daemon/wallpaper.go b/bin/dde-system-daemon/wallpaper.go
+index 6ee26e27..67dc77dc 100644
+--- a/bin/dde-system-daemon/wallpaper.go
++++ b/bin/dde-system-daemon/wallpaper.go
+@@ -24,7 +24,7 @@ import (
+ 
+ const maxCount = 5
+ const maxSize = 32 * 1024 * 1024
+-const wallPaperDir = "/usr/share/wallpapers/custom-wallpapers/"
++const wallPaperDir = "/var/lib/dde-daemon/wallpapers/custom-wallpapers/"
+ 
+ func GetUserDir(username string) (string, error) {
+ 	dir := filepath.Join(wallPaperDir, username)
+@@ -136,7 +136,7 @@ func (d *Daemon) SaveCustomWallPaper(sender dbus.Sender, username string, file s
+ 		"-u",
+ 		username,
+ 		"--",
+-		"head",
++		"@coreutils@/bin/head",
+ 		"-c",
+ 		"0",
+ 		file,
+-- 
+2.40.1
+
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0003-aviod-use-hardcode-path.diff b/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0003-aviod-use-hardcode-path.diff
new file mode 100644
index 000000000000..c9505d9563a5
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0003-aviod-use-hardcode-path.diff
@@ -0,0 +1,116 @@
+diff --git a/accounts1/user.go b/accounts1/user.go
+index 8101d9c6..16c7f15f 100644
+--- a/accounts1/user.go
++++ b/accounts1/user.go
+@@ -482,7 +482,7 @@ func (u *User) checkIsControlCenter(sender dbus.Sender) bool {
+ 		return false
+ 	}
+ 
+-	if exe == controlCenterPath {
++	if strings.Contains(exe, "dde-control-center") {
+ 		return true
+ 	}
+ 
+diff --git a/accounts1/user_chpwd_union_id.go b/accounts1/user_chpwd_union_id.go
+index 61a691d9..47d2163e 100644
+--- a/accounts1/user_chpwd_union_id.go
++++ b/accounts1/user_chpwd_union_id.go
+@@ -89,14 +89,13 @@ func newCaller(service *dbusutil.Service, sender dbus.Sender) (ret *caller, err
+ 
+ 	// 只允许来自控制中心, 锁屏和 greetter 的调用
+ 	var app string
+-	switch exe {
+-	case "/usr/bin/dde-control-center":
++	if (strings.Contains(exe, "dde-control-center")) {
+ 		app = "control-center"
+-	case "/usr/bin/dde-lock":
++	} else if (strings.Contains(exe, "dde-lock")) {
+ 		app = "lock"
+-	case "/usr/bin/lightdm-deepin-greeter":
++	} else if (strings.Contains(exe, "lightdm-deepin-greeter")) {
+ 		app = "greeter"
+-	default:
++	} else {
+ 		err = fmt.Errorf("set password with Union ID called by %s, which is not allow", exe)
+ 		return
+ 	}
+diff --git a/bin/dde-authority/fprint_transaction.go b/bin/dde-authority/fprint_transaction.go
+index ca2951a0..3223ad25 100644
+--- a/bin/dde-authority/fprint_transaction.go
++++ b/bin/dde-authority/fprint_transaction.go
+@@ -461,7 +461,7 @@ func (tx *FPrintTransaction) End(sender dbus.Sender) *dbus.Error {
+ 
+ func killFPrintDaemon() {
+ 	logger.Debug("kill fprintd")
+-	err := exec.Command("pkill", "-f", "/usr/lib/fprintd/fprintd").Run()
++	err := exec.Command("pkill", "fprintd").Run()
+ 	if err != nil {
+ 		logger.Warning("failed to kill fprintd:", err)
+ 	}
+diff --git a/grub2/grub2.go b/grub2/grub2.go
+index 085b7157..10cb8256 100644
+--- a/grub2/grub2.go
++++ b/grub2/grub2.go
+@@ -603,7 +603,7 @@ func checkInvokePermission(service *dbusutil.Service, sender dbus.Sender) error
+ 	if err != nil {
+ 		return err
+ 	}
+-	if cmd == "/usr/bin/dde-control-center" {
++	if strings.Contains(cmd, "dde-control-center") {
+ 		return nil
+ 	}
+ 	uid, err := service.GetConnUID(string(sender))
+diff --git a/misc/etc/acpi/powerbtn.sh b/misc/etc/acpi/powerbtn.sh
+index 5c536b9e..39c28987 100755
+--- a/misc/etc/acpi/powerbtn.sh
++++ b/misc/etc/acpi/powerbtn.sh
+@@ -58,4 +58,4 @@ elif test "$XUSER" != "" && test -x /usr/bin/qdbus; then
+ fi
+ 
+ # If all else failed, just initiate a plain shutdown.
+-/sbin/shutdown -h now "Power button pressed"
++shutdown -h now "Power button pressed"
+diff --git a/misc/udev-rules/80-deepin-fprintd.rules b/misc/udev-rules/80-deepin-fprintd.rules
+index 7063a40c..c4c6103a 100644
+--- a/misc/udev-rules/80-deepin-fprintd.rules
++++ b/misc/udev-rules/80-deepin-fprintd.rules
+@@ -1 +1 @@
+-SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", ACTION=="add|remove", ENV{LIBFPRINT_DRIVER}!="", RUN+="/usr/bin/dbus-send --system --dest=org.deepin.dde.Fprintd1 --print-reply /org/deepin/dde/Fprintd1 org.deepin.dde.Fprintd1.TriggerUDevEvent"
++SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", ACTION=="add|remove", ENV{LIBFPRINT_DRIVER}!="", RUN+="@dbus@/bin/dbus-send --system --dest=org.deepin.dde.Fprintd1 --print-reply /org/deepin/dde/Fprintd1 org.deepin.dde.Fprintd1.TriggerUDevEvent"
+diff --git a/system/display/displaycfg.go b/system/display/displaycfg.go
+index cda69a77..e394ae07 100644
+--- a/system/display/displaycfg.go
++++ b/system/display/displaycfg.go
+@@ -255,7 +255,7 @@ func (d *Display) doDetectSupportWayland(sender dbus.Sender) (bool, error) {
+ 			return false, err
+ 		}
+ 		var cmd *exec.Cmd
+-		if execPath == "/usr/bin/lightdm-deepin-greeter" {
++		if strings.Contains(execPath, "lightdm-deepin-greeter") {
+ 			cmd = exec.Command("runuser", "-u", "lightdm", "glxinfo") // runuser -u lightdm glxinfo
+ 		} else {
+ 			cmd = exec.Command("glxinfo")
+diff --git a/system/power1/manager_lmt.go b/system/power1/manager_lmt.go
+index 87556893..f67cb5b0 100644
+--- a/system/power1/manager_lmt.go
++++ b/system/power1/manager_lmt.go
+@@ -8,6 +8,7 @@ import (
+ 	"bufio"
+ 	"io/ioutil"
+ 	"os"
++	"os/exec"
+ 	"path/filepath"
+ 	"strings"
+ 
+@@ -28,7 +29,7 @@ const (
+ const lowBatteryThreshold = 20.0
+ 
+ func isLaptopModeBinOk() bool {
+-	_, err := os.Stat(laptopModeBin)
++	_, err := exec.LookPath("laptop_mode")
+ 	return err == nil
+ }
+ 
+-- 
+2.40.1
+
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0004-fix-build-with-ddcutil-2.patch b/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0004-fix-build-with-ddcutil-2.patch
new file mode 100644
index 000000000000..76729d488b3c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/0004-fix-build-with-ddcutil-2.patch
@@ -0,0 +1,17 @@
+diff --git a/bin/backlight_helper/ddcci/ddcci.go b/bin/backlight_helper/ddcci/ddcci.go
+index 679beea3..ccbfc508 100644
+--- a/bin/backlight_helper/ddcci/ddcci.go
++++ b/bin/backlight_helper/ddcci/ddcci.go
+@@ -103,11 +103,6 @@ func newDDCCI() (*ddcci, error) {
+ 		displayHandleMap: make(map[string]*displayHandle),
+ 	}
+ 
+-	status := C.ddca_set_max_tries(C.DDCA_MULTI_PART_TRIES, 5)
+-	if status < C.int(0) {
+-		return nil, fmt.Errorf("brightness: Error setting retries: %d", status)
+-	}
+-
+ 	err := ddc.RefreshDisplays()
+ 	if err != nil {
+ 		return nil, err
+
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/default.nix b/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/default.nix
new file mode 100644
index 000000000000..0f322505be2f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/dde-daemon/default.nix
@@ -0,0 +1,154 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, substituteAll
+, buildGoModule
+, pkg-config
+, deepin-gettext-tools
+, gettext
+, python3
+, wrapGAppsHook
+, ddcutil
+, alsa-lib
+, glib
+, gtk3
+, libgudev
+, libinput
+, libnl
+, librsvg
+, linux-pam
+, libxcrypt
+, networkmanager
+, pulseaudio
+, gdk-pixbuf-xlib
+, tzdata
+, xkeyboard_config
+, runtimeShell
+, xorg
+, xdotool
+, getconf
+, dbus
+, util-linux
+, dde-session-ui
+, coreutils
+, lshw
+, dmidecode
+, systemd
+}:
+
+buildGoModule rec {
+  pname = "dde-daemon";
+  version = "6.0.22";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-D7s6wWZeZHYl/aP/0qLYNn+lZEwGJAjFNbO0whKymck=";
+  };
+
+  vendorHash = "sha256-U+G5CELpor34RgFzHpxfvJ/jBfWfE4ShjY2b2Z61BhE=";
+
+  patches = [
+    ./0001-dont-set-PATH.diff
+    (substituteAll {
+      src = ./0002-fix-custom-wallpapers-path.diff;
+      inherit coreutils;
+    })
+    (substituteAll {
+      src = ./0003-aviod-use-hardcode-path.diff;
+      inherit dbus;
+    })
+    ./0004-fix-build-with-ddcutil-2.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace session/eventlog/{app_event.go,login_event.go} \
+      --replace "/bin/bash" "${runtimeShell}"
+
+    substituteInPlace inputdevices/layout_list.go \
+      --replace "/usr/share/X11/xkb" "${xkeyboard_config}/share/X11/xkb"
+
+    substituteInPlace bin/dde-system-daemon/wallpaper.go accounts1/user.go \
+     --replace "/usr/share/wallpapers" "/run/current-system/sw/share/wallpapers"
+
+    substituteInPlace timedate1/zoneinfo/zone.go \
+     --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo"
+
+    substituteInPlace accounts1/image_blur.go grub2/modify_manger.go \
+      --replace "/usr/lib/deepin-api" "/run/current-system/sw/lib/deepin-api"
+
+    substituteInPlace accounts1/user_chpwd_union_id.go \
+      --replace "/usr/lib/dde-control-center" "/run/current-system/sw/lib/dde-control-center"
+
+    for file in $(grep "/usr/lib/deepin-daemon" * -nR |awk -F: '{print $1}')
+    do
+      sed -i 's|/usr/lib/deepin-daemon|/run/current-system/sw/lib/deepin-daemon|g' $file
+    done
+
+    patchShebangs .
+  '';
+
+  nativeBuildInputs = [
+    pkg-config
+    deepin-gettext-tools
+    gettext
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    ddcutil
+    linux-pam
+    libxcrypt
+    alsa-lib
+    glib
+    libgudev
+    gtk3
+    gdk-pixbuf-xlib
+    networkmanager
+    libinput
+    libnl
+    librsvg
+    pulseaudio
+    tzdata
+    xkeyboard_config
+  ];
+
+  buildPhase = ''
+    runHook preBuild
+    make GOBUILD_OPTIONS="$GOFLAGS"
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    make install DESTDIR="$out" PREFIX="/"
+    runHook postInstall
+  '';
+
+  doCheck = false;
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix PATH : "${lib.makeBinPath [ util-linux dde-session-ui glib lshw dmidecode systemd ]}"
+    )
+  '';
+
+  postFixup = ''
+    for binary in $out/lib/deepin-daemon/*; do
+      if [ "$binary" == "$out/lib/deepin-daemon/service-trigger" ] ; then
+        continue;
+      fi
+      wrapGApp $binary
+    done
+  '';
+
+  meta = with lib; {
+    description = "Daemon for handling the deepin session settings";
+    homepage = "https://github.com/linuxdeepin/dde-daemon";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/deepin-desktop-schemas/default.nix b/nixpkgs/pkgs/desktops/deepin/go-package/deepin-desktop-schemas/default.nix
new file mode 100644
index 000000000000..4dab20303d8c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/deepin-desktop-schemas/default.nix
@@ -0,0 +1,56 @@
+{ stdenv
+, lib
+, buildGoModule
+, fetchFromGitHub
+, glib
+}:
+
+buildGoModule rec {
+  pname = "deepin-desktop-schemas";
+  version = "6.0.5";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-lvAY0CJ+EohMK16fwIkB7Jq7gTpMhDimPYs9b/IklA4=";
+  };
+
+  vendorHash = "sha256-q6ugetchJLv2JjZ9+nevUI0ptizh2V+6SByoY/eFJJQ=";
+
+  postPatch = ''
+    # Relocate files path for backgrounds and wallpapers
+    for file in $(grep -rl "/usr/share")
+    do
+      substituteInPlace $file \
+        --replace "/usr/share" "/run/current-system/sw/share"
+    done
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+    make ARCH=${stdenv.hostPlatform.linuxArch}
+    runHook postBuild
+  '';
+
+  nativeCheckInputs = [ glib ];
+  checkPhase = ''
+    runHook preCheck
+    make test
+    runHook postCheck
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    make install DESTDIR="$out" PREFIX="/"
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "GSettings deepin desktop-wide schemas";
+    homepage = "https://github.com/linuxdeepin/deepin-desktop-schemas";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/deepin-pw-check/default.nix b/nixpkgs/pkgs/desktops/deepin/go-package/deepin-pw-check/default.nix
new file mode 100644
index 000000000000..f745c8d942be
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/deepin-pw-check/default.nix
@@ -0,0 +1,70 @@
+{ lib
+, fetchFromGitHub
+, buildGoModule
+, pkg-config
+, deepin-gettext-tools
+, gtk3
+, glib
+, libxcrypt
+, gettext
+, iniparser
+, cracklib
+, linux-pam
+}:
+
+buildGoModule rec {
+  pname = "deepin-pw-check";
+  version = "6.0.2";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-kBrkcB0IWGUV4ZrkFzwdPglRgDcnVvYDFhTXS20pKOk=";
+  };
+
+  vendorHash = "sha256-L0vUEkUN70Hrx5roIvTfaZBHbbq7mf3WpQJeFAMU5HY=";
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    deepin-gettext-tools
+  ];
+
+  buildInputs = [
+    glib
+    libxcrypt
+    gtk3
+    iniparser
+    cracklib
+    linux-pam
+  ];
+
+  postPatch = ''
+    sed -i 's|iniparser/||' */*.c
+    substituteInPlace misc/{pkgconfig/libdeepin_pw_check.pc,system-services/org.deepin.dde.PasswdConf1.service} \
+      --replace "/usr" "$out"
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+    make
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    make install PREFIX="$out" PKG_FILE_DIR=$out/lib/pkgconfig PAM_MODULE_DIR=$out/etc/pam.d
+    # https://github.com/linuxdeepin/deepin-pw-check/blob/d5597482678a489077a506a87f06d2b6c4e7e4ed/debian/rules#L21
+    ln -s $out/lib/libdeepin_pw_check.so $out/lib/libdeepin_pw_check.so.1
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Tool to verify the validity of the password";
+    homepage = "https://github.com/linuxdeepin/deepin-pw-check";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/go-dbus-factory/default.nix b/nixpkgs/pkgs/desktops/deepin/go-package/go-dbus-factory/default.nix
new file mode 100644
index 000000000000..4c12dce491d7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/go-dbus-factory/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+}:
+
+stdenv.mkDerivation rec {
+  pname = "go-dbus-factory";
+  version = "1.10.23";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-6u9Bpoa80j/K1MipncfM378/qmSSMZAlx88jE4hHYBk=";
+  };
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  meta = with lib; {
+    description = "Generate go binding of D-Bus interfaces";
+    homepage = "https://github.com/linuxdeepin/go-dbus-factory";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/go-gir-generator/default.nix b/nixpkgs/pkgs/desktops/deepin/go-package/go-gir-generator/default.nix
new file mode 100644
index 000000000000..eecdbeb990ba
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/go-gir-generator/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, go
+, pkg-config
+, libgudev
+, gobject-introspection
+}:
+
+stdenv.mkDerivation rec {
+  pname = "go-gir-generator";
+  version = "2.2.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-lFseui/M3+TyfYoa+rnS0cGhN6gdLrgpzgOwqzYcyPk=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    go
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    libgudev
+  ];
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+    "GOCACHE=$(TMPDIR)/go-cache"
+  ];
+
+  meta = with lib; {
+    description = "Generate static golang bindings for GObject";
+    homepage = "https://github.com/linuxdeepin/go-gir-generator";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/go-lib/default.nix b/nixpkgs/pkgs/desktops/deepin/go-package/go-lib/default.nix
new file mode 100644
index 000000000000..751cba56ce35
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/go-lib/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchpatch
+, runtimeShell
+}:
+
+stdenv.mkDerivation rec {
+  pname = "go-lib";
+  version = "5.8.27";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-ZV5zWu7UvNKVcVo79/iKMhF4H09rGyDCvEL61H05lZc=";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "fix_IsDir_for_symlink.patch";
+      url = "https://github.com/linuxdeepin/go-lib/commit/79239904679dc70a11e1ac8e65670afcfdd7c122.patch";
+      sha256 = "sha256-RsN9hK26i/W6P/+e1l1spCLdlgIEWTehhIW6POBOvW4=";
+    })
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/gocode/src/github.com/linuxdeepin/go-lib
+    cp -a * $out/share/gocode/src/github.com/linuxdeepin/go-lib
+    rm -r $out/share/gocode/src/github.com/linuxdeepin/go-lib/debian
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Library containing many useful go routines for things such as glib, gettext, archive, graphic, etc";
+    homepage = "https://github.com/linuxdeepin/go-lib";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/startdde/0001-avoid-use-hardcode-path.patch b/nixpkgs/pkgs/desktops/deepin/go-package/startdde/0001-avoid-use-hardcode-path.patch
new file mode 100644
index 000000000000..69e4c8aba56d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/startdde/0001-avoid-use-hardcode-path.patch
@@ -0,0 +1,61 @@
+diff --git a/misc/auto_launch/chinese.json b/misc/auto_launch/chinese.json
+index 14b8bff..2b2c412 100644
+--- a/misc/auto_launch/chinese.json
++++ b/misc/auto_launch/chinese.json
+@@ -3,7 +3,7 @@
+     "Priority": 9,
+     "Group": [
+       {
+-        "Command": "/usr/bin/dde-file-manager",
++        "Command": "dde-file-manager",
+         "Wait": false,
+         "Args": [
+           "-d"
+@@ -25,7 +25,7 @@
+     "Priority": 7,
+     "Group": [
+       {
+-        "Command": "/usr/bin/dde-shutdown",
++        "Command": "dde-shutdown",
+         "Wait": false,
+         "Args": [
+           "-d"
+diff --git a/session.go b/session.go
+index da76626..bf9a2c4 100644
+--- a/session.go
++++ b/session.go
+@@ -14,6 +14,7 @@ import (
+ 	"sync"
+ 	"syscall"
+ 	"time"
++	"strings"
+ 
+ 	"github.com/adrg/xdg"
+ 	"github.com/godbus/dbus/v5"
+@@ -85,7 +86,7 @@ type SessionManager struct {
+ }
+ 
+ const (
+-	cmdShutdown      = "/usr/bin/dde-shutdown"
++	cmdShutdown      = "dde-shutdown"
+ 	lockFrontDest    = "org.deepin.dde.LockFront1"
+ 	lockFrontIfc     = lockFrontDest
+ 	lockFrontObjPath = "/org/deepin/dde/LockFront1"
+@@ -458,7 +459,7 @@ func (m *SessionManager) SetLocked(sender dbus.Sender, value bool) *dbus.Error {
+ 		return dbusutil.ToError(err)
+ 	}
+ 
+-	if exe == "/usr/bin/dde-lock" {
++	if strings.Contains(exe, "dde-lock") {
+ 		m.setLocked(value)
+ 		return nil
+ 	}
+@@ -478,7 +479,7 @@ func (m *SessionManager) SetLocked(sender dbus.Sender, value bool) *dbus.Error {
+ 		return dbusutil.ToError(fmt.Errorf("desktop file %q is invalid", desktopFile))
+ 	}
+ 	exe = info.GetExecutable()
+-	if exe != "/usr/bin/dde-lock" {
++	if strings.Contains(exe, "dde-lock") {
+ 		return dbusutil.ToError(fmt.Errorf("exe %q of desktop file %q is invalid", exe, desktopFile))
+ 	}
+ 
diff --git a/nixpkgs/pkgs/desktops/deepin/go-package/startdde/default.nix b/nixpkgs/pkgs/desktops/deepin/go-package/startdde/default.nix
new file mode 100644
index 000000000000..8ad13e1156d7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/go-package/startdde/default.nix
@@ -0,0 +1,86 @@
+{ stdenv
+, lib
+, buildGoModule
+, fetchFromGitHub
+, gettext
+, pkg-config
+, jq
+, wrapGAppsHook
+, glib
+, libgnome-keyring
+, gtk3
+, alsa-lib
+, pulseaudio
+, libgudev
+, libsecret
+, runtimeShell
+, dbus
+}:
+
+buildGoModule rec {
+  pname = "startdde";
+  version = "6.0.10";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-B2B8QlA1Ps/ybVzionngtwDwTLd7H02RKJwcXymGlJM=";
+  };
+
+  patches = [
+    ./0001-avoid-use-hardcode-path.patch
+  ];
+
+  vendorHash = "sha256-5BEOazAygYL1N+CaGAbUwdpHZ1EiHr6yNW27/bXNdZg=";
+
+  postPatch = ''
+    substituteInPlace display/manager.go session.go \
+      --replace "/bin/bash" "${runtimeShell}"
+
+    substituteInPlace misc/systemd_task/dde-display-task-refresh-brightness.service \
+       --replace "/usr/bin/dbus-send" "${dbus}/bin/dbus-send"
+
+    substituteInPlace display/manager.go utils.go session.go \
+      --replace "/usr/lib/deepin-daemon" "/run/current-system/sw/lib/deepin-daemon"
+
+    substituteInPlace misc/lightdm.conf --replace "/usr" "$out"
+  '';
+
+  nativeBuildInputs = [
+    gettext
+    pkg-config
+    jq
+    wrapGAppsHook
+    glib
+  ];
+
+  buildInputs = [
+    libgnome-keyring
+    gtk3
+    alsa-lib
+    pulseaudio
+    libgudev
+    libsecret
+  ];
+
+  buildPhase = ''
+    runHook preBuild
+    make GO_BUILD_FLAGS="$GOFLAGS"
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    make install DESTDIR="$out" PREFIX="/"
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Starter of deepin desktop environment";
+    homepage = "https://github.com/linuxdeepin/startdde";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dde-qt-dbus-factory/default.nix b/nixpkgs/pkgs/desktops/deepin/library/dde-qt-dbus-factory/default.nix
new file mode 100644
index 000000000000..323a37cac79f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dde-qt-dbus-factory/default.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, qmake
+, qtbase
+, wrapQtAppsHook
+, python3
+, dtkcore
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-qt-dbus-factory";
+  version = "6.0.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-9r5thJJjEZAuDT0N/m1gcr0Faa8WpZOtGKDYuZEvJis=";
+  };
+
+  nativeBuildInputs = [
+    qmake
+    wrapQtAppsHook
+    python3
+  ];
+
+  buildInputs = [
+    qtbase
+    dtkcore
+  ];
+
+  qmakeFlags = [
+    "INSTALL_ROOT=${placeholder "out"}"
+    "LIB_INSTALL_DIR=${placeholder "out"}/lib"
+  ];
+
+  postPatch = ''
+    substituteInPlace libdframeworkdbus/libdframeworkdbus.pro \
+     --replace "/usr" ""
+
+    substituteInPlace libdframeworkdbus/DFrameworkdbusConfig.in \
+      --replace "/usr/include" "$out/include"
+  '';
+
+  meta = with lib; {
+    description = "Repo of auto-generated D-Bus source code which DDE used";
+    homepage = "https://github.com/linuxdeepin/dde-qt-dbus-factory";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/deepin-ocr-plugin-manager/default.nix b/nixpkgs/pkgs/desktops/deepin/library/deepin-ocr-plugin-manager/default.nix
new file mode 100644
index 000000000000..3db5f0a0bd34
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/deepin-ocr-plugin-manager/default.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, pkg-config
+, cmake
+, qttools
+, wrapQtAppsHook
+, libisoburn
+, ncnn
+, opencv
+, vulkan-headers
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-ocr-plugin-manager";
+  version = "unstable-2023-07-10";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = "9b5c9e57c83b5adde383ed404b73f9dcbf5e6a48";
+    hash = "sha256-U5lxAKTaQvvlqbqRezPIcBGg+DpF1hZ204Y1+8dt14U=";
+  };
+
+  # don't use vendored opencv
+  postPatch = ''
+    substituteInPlace src/CMakeLists.txt \
+      --replace "opencv_mobile" "opencv4"
+    substituteInPlace src/paddleocr-ncnn/paddleocr.cpp \
+      --replace "/usr" "$out"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    ncnn
+    opencv
+    vulkan-headers
+  ];
+
+  strictDeps = true;
+
+  cmakeFlags = [
+    "-DCMAKE_INSTALL_LIBDIR=lib"
+    "-DCMAKE_INSTALL_INCLUDEDIR=include"
+  ];
+
+  meta = with lib; {
+    description = "Plugin manager of optical character recognition for DDE";
+    homepage = "https://github.com/linuxdeepin/deepin-ocr-plugin-manager";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/deepin-pdfium/default.nix b/nixpkgs/pkgs/desktops/deepin/library/deepin-pdfium/default.nix
new file mode 100644
index 000000000000..a4912eabe5f3
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/deepin-pdfium/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, qmake
+, pkg-config
+, libchardet
+, lcms2
+, openjpeg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-pdfium";
+  version = "1.0.2";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-ymJSTAccwRumXrh4VjwarKYgaqadMBrtXM1rjWNfe8o=";
+  };
+
+  nativeBuildInputs = [
+    qmake
+    pkg-config
+  ];
+
+  dontWrapQtApps = true;
+
+  buildInputs = [
+    libchardet
+    lcms2
+    openjpeg
+  ];
+
+  meta = with lib; {
+    description = "development library for pdf on deepin";
+    homepage = "https://github.com/linuxdeepin/deepin-pdfium";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/deepin-wayland-protocols/default.nix b/nixpkgs/pkgs/desktops/deepin/library/deepin-wayland-protocols/default.nix
new file mode 100644
index 000000000000..ad3dce815c91
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/deepin-wayland-protocols/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, extra-cmake-modules
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-wayland-protocols";
+  version = "1.6.0-deepin.1.2";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-8Im3CueC8sYA5mwRU/Z7z8HA4mPQvVSqcTD813QCYxo=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+  ];
+
+  meta = with lib; {
+    description = "XML files of the non-standard wayland protocols use in deepin";
+    homepage = "https://github.com/linuxdeepin/deepin-wayland-protocols";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/disomaster/default.nix b/nixpkgs/pkgs/desktops/deepin/library/disomaster/default.nix
new file mode 100644
index 000000000000..3f65505e0af5
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/disomaster/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, pkg-config
+, qmake
+, qttools
+, wrapQtAppsHook
+, libisoburn
+}:
+
+stdenv.mkDerivation rec {
+  pname = "disomaster";
+  version = "5.0.8";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-wN8mhddqqzYXkT6rRWsHVCWzaG2uRcF2iiFHlZx2LfY=";
+  };
+
+  nativeBuildInputs = [
+    qmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [ libisoburn ];
+
+  qmakeFlags = [ "VERSION=${version}" ];
+
+  meta = with lib; {
+    description = "A libisoburn wrapper class for Qt";
+    homepage = "https://github.com/linuxdeepin/disomaster";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/docparser/default.nix b/nixpkgs/pkgs/desktops/deepin/library/docparser/default.nix
new file mode 100644
index 000000000000..8605a0d214b7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/docparser/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, pkg-config
+, qmake
+, qttools
+, wrapQtAppsHook
+, poppler
+}:
+
+stdenv.mkDerivation rec {
+  pname = "docparser";
+  version = "1.0.3";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-iWRWSu8fALTTLLWdQGbpunN/1tpvKxuN/ZWJg34x0mU=";
+  };
+
+  nativeBuildInputs = [
+    qmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [ poppler ];
+
+  qmakeFlags = [ "VERSION=${version}" ];
+
+  meta = with lib; {
+    description = "A document parser library ported from document2html";
+    homepage = "https://github.com/linuxdeepin/docparser";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkcommon/default.nix b/nixpkgs/pkgs/desktops/deepin/library/dtkcommon/default.nix
new file mode 100644
index 000000000000..b3aa4481c9b8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkcommon/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dtkcommon";
+  version = "5.6.17";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-mquBuF+Gzq5txxCczeS+gI8LshdKnK5WnpOCytNki+w=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+  ];
+
+  dontWrapQtApps = true;
+
+  meta = with lib; {
+    description = "A public project for building DTK Library";
+    homepage = "https://github.com/linuxdeepin/dtkcommon";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkcore/default.nix b/nixpkgs/pkgs/desktops/deepin/library/dtkcore/default.nix
new file mode 100644
index 000000000000..f13715535e09
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkcore/default.nix
@@ -0,0 +1,83 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qttools
+, doxygen
+, wrapQtAppsHook
+, qtbase
+, gsettings-qt
+, lshw
+, libuchardet
+, spdlog
+, dtkcommon
+, systemd
+, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dtkcore";
+  version = "5.6.17";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-/MGSvT8tPn+KqqlM6FY2iFsArmAkYMW5Q3Sl4g4zvH0=";
+  };
+
+  patches = [
+    ./fix-pkgconfig-path.patch
+    ./fix-pri-path.patch
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    doxygen
+    wrapQtAppsHook
+  ];
+
+  dontWrapQtApps = true;
+
+  buildInputs = [
+    qtbase
+    gsettings-qt
+    lshw
+    libuchardet
+    spdlog
+  ]
+  ++ lib.optional withSystemd systemd;
+
+  propagatedBuildInputs = [ dtkcommon ];
+
+  cmakeFlags = [
+    "-DDTK_VERSION=${version}"
+    "-DBUILD_DOCS=ON"
+    "-DBUILD_EXAMPLES=OFF"
+    "-DQCH_INSTALL_DESTINATION=${placeholder "doc"}/${qtbase.qtDocPrefix}"
+    "-DDSG_PREFIX_PATH='/run/current-system/sw'"
+    "-DMKSPECS_INSTALL_DIR=${placeholder "out"}/mkspecs/modules"
+    "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "dev"}/libexec"
+    "-DD_DSG_APP_DATA_FALLBACK=/var/dsg/appdata"
+    "-DBUILD_WITH_SYSTEMD=${if withSystemd then "ON" else "OFF"}"
+  ];
+
+  preConfigure = ''
+    # qt.qpa.plugin: Could not find the Qt platform plugin "minimal"
+    # A workaround is to set QT_PLUGIN_PATH explicitly
+    export QT_PLUGIN_PATH=${qtbase.bin}/${qtbase.qtPluginPrefix}
+  '';
+
+  outputs = [ "out" "dev" "doc" ];
+
+  meta = with lib; {
+    description = "Deepin tool kit core library";
+    homepage = "https://github.com/linuxdeepin/dtkcore";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkcore/fix-pkgconfig-path.patch b/nixpkgs/pkgs/desktops/deepin/library/dtkcore/fix-pkgconfig-path.patch
new file mode 100644
index 000000000000..570e34c06147
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkcore/fix-pkgconfig-path.patch
@@ -0,0 +1,14 @@
+diff --git a/misc/dtkcore.pc.in b/misc/dtkcore.pc.in
+index 83eecb7..da24ce8 100644
+--- a/misc/dtkcore.pc.in
++++ b/misc/dtkcore.pc.in
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=${prefix}
+-libdir=${prefix}/@LIBRARY_INSTALL_DIR@
+-includedir=${prefix}/@INCLUDE_INSTALL_DIR@
++libdir=@LIBRARY_INSTALL_DIR@
++includedir=@INCLUDE_INSTALL_DIR@
+ 
+ Name: dtk@DTK_VERSION_MAJOR@core
+ Description: Deepin Tool Kit dtkcore header files
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkcore/fix-pri-path.patch b/nixpkgs/pkgs/desktops/deepin/library/dtkcore/fix-pri-path.patch
new file mode 100644
index 000000000000..19953ed1733d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkcore/fix-pri-path.patch
@@ -0,0 +1,17 @@
+diff --git a/misc/qt_lib_dtkcore.pri.in b/misc/qt_lib_dtkcore.pri.in
+index a331f52..ce01dc0 100644
+--- a/misc/qt_lib_dtkcore.pri.in
++++ b/misc/qt_lib_dtkcore.pri.in
+@@ -4,9 +4,9 @@ QT.dtkcore.MINOR_VERSION = @PROJECT_VERSION_MINOR@
+ QT.dtkcore.PATCH_VERSION = @PROJECT_VERSION_PATCH@
+ QT.dtkcore.name = dtkcore
+ QT.dtkcore.module = dtk@DTK_VERSION_MAJOR@core
+-QT.dtkcore.tools = @CMAKE_INSTALL_PREFIX@/@TOOL_INSTALL_DIR@
+-QT.dtkcore.libs = @CMAKE_INSTALL_PREFIX@/@LIBRARY_INSTALL_DIR@
+-QT.dtkcore.includes = @CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_DIR@
++QT.dtkcore.tools = @TOOL_INSTALL_DIR@
++QT.dtkcore.libs = @LIBRARY_INSTALL_DIR@
++QT.dtkcore.includes = @INCLUDE_INSTALL_DIR@
+ QT.dtkcore.frameworks =
+ QT.dtkcore.depends = core dbus xml
+ QT.dtkcore.module_config = v2 ltcg
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkdeclarative/default.nix b/nixpkgs/pkgs/desktops/deepin/library/dtkdeclarative/default.nix
new file mode 100644
index 000000000000..511a3950842e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkdeclarative/default.nix
@@ -0,0 +1,72 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qttools
+, doxygen
+, wrapQtAppsHook
+, qtbase
+, dtkgui
+, qtdeclarative
+, qtquickcontrols2
+, qtgraphicaleffects
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dtkdeclarative";
+  version = "5.6.17";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-P0F6GidGp+CkNplKnLiaYVtcxs6N66gGIx6UcplEt08=";
+  };
+
+  patches = [
+    ./fix-pkgconfig-path.patch
+    ./fix-pri-path.patch
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    doxygen
+    qttools
+    wrapQtAppsHook
+  ];
+
+  propagatedBuildInputs = [
+    dtkgui
+    qtdeclarative
+    qtquickcontrols2
+    qtgraphicaleffects
+  ];
+
+  cmakeFlags = [
+    "-DDTK_VERSION=${version}"
+    "-DBUILD_DOCS=ON"
+    "-DBUILD_EXAMPLES=ON"
+    "-DMKSPECS_INSTALL_DIR=${placeholder "dev"}/mkspecs/modules"
+    "-DQCH_INSTALL_DESTINATION=${placeholder "doc"}/${qtbase.qtDocPrefix}"
+    "-DQML_INSTALL_DIR=${placeholder "out"}/${qtbase.qtQmlPrefix}"
+  ];
+
+  preConfigure = ''
+    # qt.qpa.plugin: Could not find the Qt platform plugin "minimal"
+    # A workaround is to set QT_PLUGIN_PATH explicitly
+    export QT_PLUGIN_PATH=${qtbase.bin}/${qtbase.qtPluginPrefix}
+    export QML2_IMPORT_PATH=${qtdeclarative.bin}/${qtbase.qtQmlPrefix}
+  '';
+
+  outputs = [ "out" "dev" "doc" ];
+
+  meta = with lib; {
+    description = "A widget development toolkit based on QtQuick/QtQml";
+    homepage = "https://github.com/linuxdeepin/dtkdeclarative";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkdeclarative/fix-pkgconfig-path.patch b/nixpkgs/pkgs/desktops/deepin/library/dtkdeclarative/fix-pkgconfig-path.patch
new file mode 100644
index 000000000000..e15ee2f7a0b8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkdeclarative/fix-pkgconfig-path.patch
@@ -0,0 +1,14 @@
+diff --git a/misc/dtkdeclarative.pc.in b/misc/dtkdeclarative.pc.in
+index dc3827f..fd0949e 100644
+--- a/misc/dtkdeclarative.pc.in
++++ b/misc/dtkdeclarative.pc.in
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=${prefix}
+-libdir=${prefix}/@LIB_INSTALL_DIR@
+-includedir=${prefix}/@INCLUDE_INSTALL_DIR@
++libdir=@LIB_INSTALL_DIR@
++includedir=@INCLUDE_INSTALL_DIR@
+ 
+ Name: DtkDeclarative
+ Description: Deepin Tool Kit DtkDeclarative header files
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkdeclarative/fix-pri-path.patch b/nixpkgs/pkgs/desktops/deepin/library/dtkdeclarative/fix-pri-path.patch
new file mode 100644
index 000000000000..e622809c3936
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkdeclarative/fix-pri-path.patch
@@ -0,0 +1,15 @@
+diff --git a/misc/qt_lib_dtkdeclarative.pri.in b/misc/qt_lib_dtkdeclarative.pri.in
+index 8797802..44e32a3 100644
+--- a/misc/qt_lib_dtkdeclarative.pri.in
++++ b/misc/qt_lib_dtkdeclarative.pri.in
+@@ -4,8 +4,8 @@ QT.dtkdeclarative.MINOR_VERSION = @PROJECT_VERSION_MINOR@
+ QT.dtkdeclarative.PATCH_VERSION = @PROJECT_VERSION_PATCH@
+ QT.dtkdeclarative.name = dtkdeclarative
+ QT.dtkdeclarative.module = dtk@DTK_VERSION_MAJOR@declarative
+-QT.dtkdeclarative.libs = @CMAKE_INSTALL_PREFIX@/@LIB_INSTALL_DIR@
+-QT.dtkdeclarative.includes = @CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_DIR@
++QT.dtkdeclarative.libs = @LIB_INSTALL_DIR@
++QT.dtkdeclarative.includes = @INCLUDE_INSTALL_DIR@
+ QT.dtkdeclarative.frameworks =
+ QT.dtkdeclarative.depends = core dbus xml gui dtkcore dtkgui quick quick_private
+ QT.dtkdeclarative.module_config = v2 ltcg
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkgui/default.nix b/nixpkgs/pkgs/desktops/deepin/library/dtkgui/default.nix
new file mode 100644
index 000000000000..0094f5a305f8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkgui/default.nix
@@ -0,0 +1,81 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchpatch
+, pkg-config
+, cmake
+, qttools
+, doxygen
+, wrapQtAppsHook
+, qtbase
+, dtkcore
+, qtimageformats
+, lxqt
+, librsvg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dtkgui";
+  version = "5.6.17";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-ssCVMFCE1vhucYMxXkEZV5YlFxT1JdYGqrzILhWX1XI=";
+  };
+
+  patches = [
+    ./fix-pkgconfig-path.patch
+    ./fix-pri-path.patch
+
+    (fetchpatch {
+      name = "fix_svg_with_filter_attribute_rendering_exception.patch";
+      url = "https://github.com/linuxdeepin/dtkgui/commit/f2c9327eb4989ab8ea96af7560c67d1cada794de.patch";
+      hash = "sha256-lfg09tgS4vPuYachRbHdaMYKWdZZ0lP0Hxakkr9JKGs=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    doxygen
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    lxqt.libqtxdg
+    librsvg
+  ];
+
+  propagatedBuildInputs = [
+    dtkcore
+    qtimageformats
+  ];
+
+  cmakeFlags = [
+    "-DDTK_VERSION=${version}"
+    "-DBUILD_DOCS=ON"
+    "-DMKSPECS_INSTALL_DIR=${placeholder "out"}/mkspecs/modules"
+    "-DQCH_INSTALL_DESTINATION=${placeholder "doc"}/${qtbase.qtDocPrefix}"
+    "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "dev"}/libexec"
+  ];
+
+  preConfigure = ''
+    # qt.qpa.plugin: Could not find the Qt platform plugin "minimal"
+    # A workaround is to set QT_PLUGIN_PATH explicitly
+    export QT_PLUGIN_PATH=${qtbase.bin}/${qtbase.qtPluginPrefix}
+  '';
+
+  outputs = [ "out" "dev" "doc" ];
+
+  meta = with lib; {
+    description = "Deepin Toolkit, gui module for DDE look and feel";
+    homepage = "https://github.com/linuxdeepin/dtkgui";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkgui/fix-pkgconfig-path.patch b/nixpkgs/pkgs/desktops/deepin/library/dtkgui/fix-pkgconfig-path.patch
new file mode 100644
index 000000000000..1485baccc204
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkgui/fix-pkgconfig-path.patch
@@ -0,0 +1,16 @@
+diff --git a/misc/dtkgui.pc.in b/misc/dtkgui.pc.in
+index 89fdbbf..ad817c4 100644
+--- a/misc/dtkgui.pc.in
++++ b/misc/dtkgui.pc.in
+@@ -1,8 +1,8 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=${prefix}
+-libdir=${prefix}/@LIBRARY_INSTALL_DIR@
+-includedir=${prefix}/@INCLUDE_INSTALL_DIR@
+-tooldir=${prefix}/@PACKAGE_TOOL_INSTALL_DIR@
++libdir=@LIBRARY_INSTALL_DIR@
++includedir=@INCLUDE_INSTALL_DIR@
++tooldir=@PACKAGE_TOOL_INSTALL_DIR@
+ 
+ Name: dtk@DTK_VERSION_MAJOR@gui
+ Description: Deepin Tool Kit dtkgui header files
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkgui/fix-pri-path.patch b/nixpkgs/pkgs/desktops/deepin/library/dtkgui/fix-pri-path.patch
new file mode 100644
index 000000000000..b746d34b1c79
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkgui/fix-pri-path.patch
@@ -0,0 +1,17 @@
+diff --git a/misc/qt_lib_dtkgui.pri.in b/misc/qt_lib_dtkgui.pri.in
+index 28308ee..9fb25e6 100644
+--- a/misc/qt_lib_dtkgui.pri.in
++++ b/misc/qt_lib_dtkgui.pri.in
+@@ -4,9 +4,9 @@ QT.dtkgui.MINOR_VERSION = @PROJECT_VERSION_MINOR@
+ QT.dtkgui.PATCH_VERSION = @PROJECT_VERSION_PATCH@
+ QT.dtkgui.name = dtkgui
+ QT.dtkgui.module = dtk@DTK_VERSION_MAJOR@gui
+-QT.dtkgui.tools = @CMAKE_INSTALL_PREFIX@/@TOOL_INSTALL_DIR@
+-QT.dtkgui.libs = @CMAKE_INSTALL_PREFIX@/@LIBRARY_INSTALL_DIR@
+-QT.dtkgui.includes = @CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_DIR@
++QT.dtkgui.tools = @TOOL_INSTALL_DIR@
++QT.dtkgui.libs = @LIBRARY_INSTALL_DIR@
++QT.dtkgui.includes = @INCLUDE_INSTALL_DIR@
+ QT.dtkgui.frameworks =
+ QT.dtkgui.depends = core gui dtkcore gui_private dbus network
+ QT.dtkgui.module_config = v2 internal_module ltcg
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkwidget/default.nix b/nixpkgs/pkgs/desktops/deepin/library/dtkwidget/default.nix
new file mode 100644
index 000000000000..b646baa48c3c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkwidget/default.nix
@@ -0,0 +1,87 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, pkg-config
+, qttools
+, doxygen
+, wrapQtAppsHook
+, dtkgui
+, qtbase
+, qtmultimedia
+, qtsvg
+, qtx11extras
+, cups
+, gsettings-qt
+, libstartup_notification
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dtkwidget";
+  version = "5.6.17";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-oFmM0e7ht3lCL50pwS/v/BLFmT2jymQaUZ4SmLdxvMo=";
+  };
+
+  patches = [
+    ./fix-pkgconfig-path.patch
+    ./fix-pri-path.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace src/widgets/dapplication.cpp \
+      --replace "auto dataDirs = DStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);" \
+                "auto dataDirs = DStandardPaths::standardLocations(QStandardPaths::GenericDataLocation) << \"$out/share\";"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+    doxygen
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+    qtmultimedia
+    qtsvg
+    qtx11extras
+    cups
+    gsettings-qt
+    libstartup_notification
+    xorg.libXdmcp
+  ];
+
+  propagatedBuildInputs = [ dtkgui ];
+
+  cmakeFlags = [
+    "-DDTK_VERSION=${version}"
+    "-DBUILD_DOCS=ON"
+    "-DMKSPECS_INSTALL_DIR=${placeholder "dev"}/mkspecs/modules"
+    "-DQCH_INSTALL_DESTINATION=${placeholder "doc"}/${qtbase.qtDocPrefix}"
+    "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "dev"}/libexec"
+  ];
+
+  preConfigure = ''
+    # qt.qpa.plugin: Could not find the Qt platform plugin "minimal"
+    # A workaround is to set QT_PLUGIN_PATH explicitly
+    export QT_PLUGIN_PATH=${qtbase.bin}/${qtbase.qtPluginPrefix}
+  '';
+
+  outputs = [ "out" "dev" "doc" ];
+
+  meta = with lib; {
+    description = "Deepin graphical user interface library";
+    homepage = "https://github.com/linuxdeepin/dtkwidget";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkwidget/fix-pkgconfig-path.patch b/nixpkgs/pkgs/desktops/deepin/library/dtkwidget/fix-pkgconfig-path.patch
new file mode 100644
index 000000000000..df4452259580
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkwidget/fix-pkgconfig-path.patch
@@ -0,0 +1,14 @@
+diff --git a/misc/DtkWidget.pc.in b/misc/DtkWidget.pc.in
+index 3c610669..b6ed04ca 100644
+--- a/misc/DtkWidget.pc.in
++++ b/misc/DtkWidget.pc.in
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=${prefix}
+-libdir=${prefix}/@LIBRARY_INSTALL_DIR@
+-includedir=${prefix}/@INCLUDE_INSTALL_DIR@
++libdir=@LIBRARY_INSTALL_DIR@
++includedir=@INCLUDE_INSTALL_DIR@
+ 
+ Name: dtk@DTK_VERSION_MAJOR@widget
+ Description: Deepin Tool Kit dtkwidget header files
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dtkwidget/fix-pri-path.patch b/nixpkgs/pkgs/desktops/deepin/library/dtkwidget/fix-pri-path.patch
new file mode 100644
index 000000000000..cf2faac94855
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dtkwidget/fix-pri-path.patch
@@ -0,0 +1,17 @@
+diff --git a/misc/qt_lib_DtkWidget.pri.in b/misc/qt_lib_DtkWidget.pri.in
+index 623878d3..561f5186 100644
+--- a/misc/qt_lib_DtkWidget.pri.in
++++ b/misc/qt_lib_DtkWidget.pri.in
+@@ -4,9 +4,9 @@ QT.dtkwidget.MINOR_VERSION = @PROJECT_VERSION_MINOR@
+ QT.dtkwidget.PATCH_VERSION = @PROJECT_VERSION_PATCH@
+ QT.dtkwidget.name = dtkwidget
+ QT.dtkwidget.module = dtk@DTK_VERSION_MAJOR@widget
+-QT.dtkwidget.tools = @CMAKE_INSTALL_PREFIX@/@TOOL_INSTALL_DIR@
+-QT.dtkwidget.libs = @CMAKE_INSTALL_PREFIX@/@LIBRARY_INSTALL_DIR@
+-QT.dtkwidget.includes = @CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_DIR@
++QT.dtkwidget.tools = @TOOL_INSTALL_DIR@
++QT.dtkwidget.libs = @LIBRARY_INSTALL_DIR@
++QT.dtkwidget.includes = @INCLUDE_INSTALL_DIR@
+ QT.dtkwidget.frameworks =
+ QT.dtkwidget.depends = core gui dtkcore network concurrent dtkgui printsupport printsupport_private widgets widgets_private gui_private x11extras dbus
+ QT.dtkwidget.module_config = v2 internal_module ltcg
diff --git a/nixpkgs/pkgs/desktops/deepin/library/dwayland/default.nix b/nixpkgs/pkgs/desktops/deepin/library/dwayland/default.nix
new file mode 100644
index 000000000000..7de7292a4a05
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/dwayland/default.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, qtbase
+, qtwayland
+, wayland
+, wayland-protocols
+, extra-cmake-modules
+, deepin-wayland-protocols
+, qttools
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dwayland";
+  version = "5.25.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-XZvL3lauVW5D3r3kybpS3SiitvwEScqgYe2h9c1DuCs=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+    qttools
+  ];
+
+  buildInputs = [
+    qtbase
+    qtwayland
+    wayland
+    wayland-protocols
+    deepin-wayland-protocols
+  ];
+
+  dontWrapQtApps = true;
+
+  # cmake requires that the kf5 directory must not empty
+  postInstall = ''
+     mkdir $out/include/KF5
+  '';
+
+  meta = with lib; {
+    description = "Qt-style API to interact with the wayland-client and wayland-server";
+    homepage = "https://github.com/linuxdeepin/dwayland";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/gio-qt/default.nix b/nixpkgs/pkgs/desktops/deepin/library/gio-qt/default.nix
new file mode 100644
index 000000000000..c2ee51aaade5
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/gio-qt/default.nix
@@ -0,0 +1,51 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, wrapQtAppsHook
+, glibmm
+, doxygen
+, qttools
+, qtbase
+, buildDocs ? true
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gio-qt";
+  version = "0.0.12";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-/wLaVR31T+EcT6D5Cw0QIjZasioPWC74KNmt1tckwXk=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    wrapQtAppsHook
+  ] ++ lib.optionals buildDocs [ doxygen qttools.dev ];
+
+  cmakeFlags = [
+    "-DCMAKE_INSTALL_LIBDIR=lib"
+    "-DPROJECT_VERSION=${version}"
+  ] ++ lib.optionals (!buildDocs) [ "-DBUILD_DOCS=OFF" ];
+
+  propagatedBuildInputs = [ glibmm ];
+
+  preConfigure = ''
+    # qt.qpa.plugin: Could not find the Qt platform plugin "minimal"
+    # A workaround is to set QT_PLUGIN_PATH explicitly
+    export QT_PLUGIN_PATH=${qtbase.bin}/${qtbase.qtPluginPrefix}
+  '';
+
+  meta = with lib; {
+    description = "Gio wrapper for Qt applications";
+    homepage = "https://github.com/linuxdeepin/gio-qt";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/image-editor/default.nix b/nixpkgs/pkgs/desktops/deepin/library/image-editor/default.nix
new file mode 100644
index 000000000000..e969c2137ef1
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/image-editor/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, dtkwidget
+, cmake
+, qttools
+, pkg-config
+, wrapQtAppsHook
+, opencv
+, freeimage
+, libmediainfo
+, ffmpegthumbnailer
+, pcre
+}:
+
+stdenv.mkDerivation rec {
+  pname = "image-editor";
+  version = "1.0.35";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-Xr4tueipQbRHyKLStTWeUcVbX7Baiz0YooaaVk65Y+U=";
+  };
+
+  postPatch = ''
+    substituteInPlace libimageviewer/CMakeLists.txt --replace '/usr' '$out'
+    substituteInPlace libimagevisualresult/CMakeLists.txt --replace '/usr' '$out'
+  '';
+
+  nativeBuildInputs = [ cmake pkg-config qttools wrapQtAppsHook ];
+
+  buildInputs = [
+    dtkwidget
+    opencv
+    freeimage
+    libmediainfo
+    ffmpegthumbnailer
+    pcre
+  ];
+
+  cmakeFlags = [
+    "-DCMAKE_INSTALL_LIBDIR=lib"
+  ];
+
+  meta = with lib; {
+    description = "Image editor lib for dtk";
+    homepage = "https://github.com/linuxdeepin/image-editor";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/qt5integration/default.nix b/nixpkgs/pkgs/desktops/deepin/library/qt5integration/default.nix
new file mode 100644
index 000000000000..f5962e7760e4
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/qt5integration/default.nix
@@ -0,0 +1,56 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, dtkwidget
+, cmake
+, pkg-config
+, qtbase
+, qtsvg
+, qtx11extras
+, lxqt
+, mtdev
+, xorg
+, gtest
+}:
+
+stdenv.mkDerivation rec {
+  pname = "qt5integration";
+  version = "5.6.17";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-8ag/cFkjp5u/0/71xKR6z6dXp2NGRIYNNbzzEmgsDmc=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
+
+  buildInputs = [
+    dtkwidget
+    qtbase
+    qtsvg
+    qtx11extras
+    mtdev
+    lxqt.libqtxdg
+    xorg.xcbutilrenderutil
+    gtest
+  ];
+
+  cmakeFlags = [
+    "-DPLUGIN_INSTALL_BASE_DIR=${placeholder "out"}/${qtbase.qtPluginPrefix}"
+  ];
+
+  dontWrapQtApps = true;
+
+  meta = with lib; {
+    description = "Qt platform theme integration plugins for DDE";
+    homepage = "https://github.com/linuxdeepin/qt5integration";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/qt5platform-plugins/default.nix b/nixpkgs/pkgs/desktops/deepin/library/qt5platform-plugins/default.nix
new file mode 100644
index 000000000000..87d570ac011e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/qt5platform-plugins/default.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, extra-cmake-modules
+, pkg-config
+, dtkcommon
+, qtbase
+, qtx11extras
+, mtdev
+, cairo
+, xorg
+, wayland
+, dwayland
+, qtwayland
+}:
+
+stdenv.mkDerivation rec {
+  pname = "qt5platform-plugins";
+  version = "5.6.16";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-1/biT8wR44+sdOMhBW/8KMUSBDK/UxuEqsyjTZyjBT4=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+    pkg-config
+  ];
+
+  buildInputs = [
+    dtkcommon
+    mtdev
+    cairo
+    qtbase
+    qtx11extras
+    xorg.libSM
+    wayland
+    dwayland
+    qtwayland
+  ];
+
+  patches = [
+    (fetchpatch {
+      name = "use-ECM-to-help-dwayland-find-wayland.patch";
+      url = "https://github.com/linuxdeepin/qt5platform-plugins/commit/d7f6230716a0ff5ce34fc7d292ec0af5bbac30e4.patch";
+      hash = "sha256-RY2+QBR3OjUGBX4Y9oVvIRY90IH9rTOCg8dCddkB2WE=";
+    })
+  ];
+
+  cmakeFlags = [
+    "-DINSTALL_PATH=${placeholder "out"}/${qtbase.qtPluginPrefix}/platforms"
+    "-DQT_XCB_PRIVATE_HEADERS=${qtbase.src}/src/plugins/platforms/xcb"
+  ];
+
+  dontWrapQtApps = true;
+
+  meta = with lib; {
+    description = "Qt platform plugins for DDE";
+    homepage = "https://github.com/linuxdeepin/qt5platform-plugins";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/udisks2-qt5/default.nix b/nixpkgs/pkgs/desktops/deepin/library/udisks2-qt5/default.nix
new file mode 100644
index 000000000000..84321809ebeb
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/udisks2-qt5/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, qmake
+, pkg-config
+, wrapQtAppsHook
+, udisks
+}:
+
+stdenv.mkDerivation rec {
+  pname = "udisks2-qt5";
+  version = "5.0.6";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-WS4fmqEYXi5dkn8RvyJBzy3+r+UgFcGDFFpQlbblLu4=";
+  };
+
+  nativeBuildInputs = [ qmake pkg-config wrapQtAppsHook ];
+
+  buildInputs = [ udisks ];
+
+  qmakeFlags = [ "VERSION=${version}" ];
+
+  meta = with lib; {
+    description = "UDisks2 D-Bus interfaces binding for Qt5";
+    homepage = "https://github.com/linuxdeepin/udisks2-qt5";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/library/util-dfm/default.nix b/nixpkgs/pkgs/desktops/deepin/library/util-dfm/default.nix
new file mode 100644
index 000000000000..0d9bda407861
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/library/util-dfm/default.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qtbase
+, libmediainfo
+, libsecret
+, libisoburn
+, libuuid
+, udisks
+}:
+
+stdenv.mkDerivation rec {
+  pname = "util-dfm";
+  version = "1.2.16";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-o5ubfCpgAHJXqihGyapq7Dj9eQlw2q6VoER/e37tM6w=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
+
+  dontWrapQtApps = true;
+
+  buildInputs = [
+    qtbase
+    libmediainfo
+    libsecret
+    libuuid
+    libisoburn
+    udisks
+  ];
+
+  cmakeFlags = [
+    "-DCMAKE_INSTALL_LIBDIR=lib"
+    "-DPROJECT_VERSION=${version}"
+  ];
+
+  meta = with lib; {
+    description = "A Toolkits of libdfm-io,libdfm-mount and libdfm-burn";
+    homepage = "https://github.com/linuxdeepin/util-dfm";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/misc/deepin-desktop-base/default.nix b/nixpkgs/pkgs/desktops/deepin/misc/deepin-desktop-base/default.nix
new file mode 100644
index 000000000000..50fa2c6e72e7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/misc/deepin-desktop-base/default.nix
@@ -0,0 +1,46 @@
+{ stdenvNoCC
+, lib
+, fetchFromGitHub
+, nixos-icons
+}:
+stdenvNoCC.mkDerivation rec {
+  pname = "deepin-desktop-base";
+  version = "2023.09.05";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-Gqp56TbkuTOI3aT7UmRuYBjUwRiOoIUHiRf0DaY0yew=";
+  };
+
+  makeFlags = [ "DESTDIR=${placeholder "out"}" ];
+
+  # distribution_logo_transparent.svg come form nixos-artwork(https://github.com/NixOS/nixos-artwork)/logo/nixos-white.svg under CC-BY license, used for dde-lock
+  postInstall = ''
+    rm -r $out/etc
+    rm -r $out/usr/share/python-apt
+    rm -r $out/usr/share/plymouth
+    rm -r $out/usr/share/distro-info
+    mv $out/usr/* $out/
+    rm -r $out/usr
+    install -D ${./distribution_logo_transparent.svg} $out/share/pixmaps/distribution_logo_transparent.svg
+    cat > $out/share/deepin/distribution.info <<EOF
+    [Distribution]
+    Name=NixOS
+    WebsiteName=www.nixos.org
+    Website=https://www.nixos.org
+    Logo=${nixos-icons}/share/icons/hicolor/96x96/apps/nix-snowflake.png
+    LogoLight=${nixos-icons}/share/icons/hicolor/32x32/apps/nix-snowflake.png
+    LogoTransparent=$out/share/pixmaps/distribution_logo_transparent.svg
+    EOF
+  '';
+
+  meta = with lib; {
+    description = "Base assets and definitions for Deepin Desktop Environment";
+    homepage = "https://github.com/linuxdeepin/deepin-desktop-base";
+    license = with licenses; [ gpl3Plus cc-by-40 ];
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/misc/deepin-desktop-base/distribution_logo_transparent.svg b/nixpkgs/pkgs/desktops/deepin/misc/deepin-desktop-base/distribution_logo_transparent.svg
new file mode 100644
index 000000000000..18f8d4055c39
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/misc/deepin-desktop-base/distribution_logo_transparent.svg
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="156px"
+   height="46px"
+   viewBox="0 0 156 46"
+   version="1.1"
+   id="SVGRoot"
+   sodipodi:docname="distribution_logo_transparent.svg"
+   inkscape:version="1.1 (c4e8f9e, 2021-05-24)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview12158"
+     pagecolor="#ffffff"
+     bordercolor="#ffffff"
+     borderopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:document-units="px"
+     showgrid="false"
+     inkscape:zoom="0.67972082"
+     inkscape:cx="397.22191"
+     inkscape:cy="90.478323"
+     inkscape:window-width="1920"
+     inkscape:window-height="960"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs12153" />
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g12416"
+       transform="matrix(0.10297744,0,0,0.10574712,-2.4660846,-2.6161481)">
+      <g
+         id="layer7"
+         inkscape:label="bg"
+         style="display:none">
+        <rect
+           transform="translate(-132.5822,958.04022)"
+           style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+           id="rect5389"
+           width="1543.4287"
+           height="483.7439"
+           x="132.5822"
+           y="-957.77832" />
+        <rect
+           style="fill:#000000;fill-opacity:1;stroke-width:0.529749"
+           id="rect6896"
+           width="1543.4287"
+           height="483.74393"
+           x="-9.0332054e-07"
+           y="0.26189968" />
+      </g>
+      <g
+         id="layer5"
+         inkscape:label="guide"
+         style="display:none;opacity:0.516"
+         transform="translate(-132.5822,958.04022)">
+        <rect
+           y="-957.77832"
+           x="132.5822"
+           height="483.7439"
+           width="1543.4283"
+           id="rect5350"
+           style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#d4d4d4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+        <rect
+           style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#9b9b9b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+           id="rect5346"
+           width="1496.443"
+           height="435.68069"
+           x="155.77646"
+           y="-933.38721"
+           inkscape:export-xdpi="17.971878"
+           inkscape:export-ydpi="17.971878" />
+        <rect
+           y="-851.65918"
+           x="159.02695"
+           height="272.58423"
+           width="1492.5731"
+           id="rect5348"
+           style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#848484;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+      </g>
+      <g
+         id="layer6"
+         inkscape:label="logo-guide"
+         style="display:none"
+         transform="translate(-132.5822,958.04022)">
+        <rect
+           y="-958.02759"
+           x="132.65129"
+           height="484.30399"
+           width="550.41602"
+           id="rect5379"
+           style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5c201e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+           inkscape:export-filename="/home/tim/dev/nix/homepage/logo/nix-wiki.png"
+           inkscape:export-xdpi="22.07"
+           inkscape:export-ydpi="22.07" />
+        <rect
+           style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c24a46;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+           id="rect5372"
+           width="501.94415"
+           height="434.30405"
+           x="156.12303"
+           y="-933.02759"
+           inkscape:export-filename="/home/tim/dev/nix/homepage/logo/nixos-logo-only-hires-print.png"
+           inkscape:export-xdpi="212.2"
+           inkscape:export-ydpi="212.2" />
+        <rect
+           style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#d98d8a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+           id="rect5381"
+           width="24.939611"
+           height="24.939611"
+           x="658.02826"
+           y="-958.04022" />
+      </g>
+      <g
+         style="display:inline"
+         inkscape:label="text-vegur"
+         id="g5329"
+         transform="translate(-132.5822,958.04022)">
+        <g
+           aria-label="Nix"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:395.097px;line-height:125%;font-family:Carlito;-inkscape-font-specification:Carlito;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="text5407">
+          <path
+             d="m 969.15319,-847.11833 h -30.81755 v 139.86428 c 0,19.75484 0.79019,50.96749 1.97548,85.73601 h -1.18529 c -15.40877,-28.84207 -32.79303,-56.49884 -45.04104,-75.46349 l -96.79872,-150.1368 h -42.27536 v 267.87565 h 30.81755 v -139.86427 c 0,-19.75485 -0.79019,-56.89395 -1.97548,-91.26737 h 1.18529 c 22.91561,39.90478 36.34891,62.0302 48.99201,80.99485 l 96.79872,150.13679 h 38.32439 z"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Vegur;-inkscape-font-specification:Vegur;fill:#ffffff"
+             id="path4683" />
+          <path
+             d="m 1027.8251,-579.24268 h 33.1881 v -191.22686 h -33.1881 z m 16.594,-219.27874 c 11.4578,0 20.5451,-9.08722 20.5451,-20.54503 0,-11.45781 -9.0873,-20.54504 -20.5451,-20.54504 -11.4578,0 -20.545,9.08723 -20.545,20.54504 0,11.45781 9.0872,20.54503 20.545,20.54503 z"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Vegur;-inkscape-font-specification:Vegur;fill:#ffffff"
+             id="path4685" />
+          <path
+             d="m 1267.7785,-770.46954 h -37.9293 l -46.6214,70.32723 h -1.1853 l -45.0411,-70.32723 h -41.09 l 68.3517,93.24285 v 1.18529 l -70.7223,96.79872 h 37.9293 l 49.7822,-75.85859 h 1.1853 l 49.7822,75.85859 h 41.09 l -72.3027,-98.37911 v -1.18529 z"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Vegur;-inkscape-font-specification:Vegur;fill:#ffffff"
+             id="path4687" />
+        </g>
+        <g
+           aria-label="O"
+           transform="scale(0.95067318,1.0518862)"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:367.487px;line-height:125%;font-family:Carlito;-inkscape-font-specification:Carlito;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="text5356">
+          <path
+             d="m 1468.5915,-800.79725 c -66.1477,0 -120.5358,48.14083 -120.5358,128.25306 0,80.11223 54.3881,128.25306 120.5358,128.25306 66.1477,0 120.5359,-48.14083 120.5359,-128.25306 0,-80.11223 -54.3882,-128.25306 -120.5359,-128.25306 z m 0,24.98914 c 49.2433,0 86.727,36.74872 86.727,103.26392 0,66.5152 -37.4837,103.26392 -86.727,103.26392 -49.2433,0 -86.727,-36.74872 -86.727,-103.26392 0,-66.5152 37.4837,-103.26392 86.727,-103.26392 z"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Vegur;-inkscape-font-specification:Vegur;fill:#ffffff"
+             id="path4680" />
+        </g>
+        <g
+           aria-label="S"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:386.555px;line-height:125%;font-family:Carlito;-inkscape-font-specification:Carlito;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="text5364">
+          <path
+             d="m 1523.761,-773.88643 c 0,37.10927 19.3277,57.21012 64.1681,75.37819 34.4034,13.91598 48.3193,26.28573 48.3193,51.79835 0,30.92438 -25.126,46.38657 -58.3697,46.38657 -17.395,0 -37.1093,-2.70588 -58.7564,-10.05042 l -3.479,26.67228 c 18.9412,6.95799 39.8152,9.66387 60.6891,9.66387 51.7984,0 95.0925,-26.28573 95.0925,-79.24374 0,-36.7227 -22.4202,-54.50422 -67.6471,-72.6723 -30.1512,-11.9832 -44.8403,-24.73951 -44.8403,-51.41179 0,-25.89917 22.4202,-40.2017 50.6387,-40.2017 16.6218,0 34.7899,4.2521 47.5462,9.27732 l 3.479,-26.28573 c -14.6891,-6.18488 -32.8572,-9.27732 -52.958,-9.27732 -47.5463,0 -83.8824,27.4454 -83.8824,69.96642 z"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Vegur;-inkscape-font-specification:Vegur;fill:#ffffff"
+             id="path4677" />
+        </g>
+      </g>
+      <g
+         id="layer4"
+         inkscape:label="white-logo"
+         style="display:inline">
+        <g
+           style="display:inline;fill:#ffffff;fill-opacity:1;stroke-width:11.0512"
+           transform="matrix(0.09048806,0,0,0.09048806,9.7879003,109.19458)"
+           id="g955">
+          <g
+             transform="matrix(11.047619,0,0,11.047619,-1572.2888,9377.7107)"
+             id="g869"
+             style="fill:#ffffff;fill-opacity:1">
+            <g
+               transform="rotate(-60,226.35754,-449.37199)"
+               id="g932"
+               style="fill:#ffffff;fill-opacity:1;stroke-width:11.0512">
+              <path
+                 sodipodi:nodetypes="cccccccccc"
+                 inkscape:connector-curvature="0"
+                 id="path3336-6-3"
+                 d="m 449.71876,-420.51322 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8257 z"
+                 style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:33.1535;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+            </g>
+            <path
+               sodipodi:nodetypes="cccccccccc"
+               inkscape:connector-curvature="0"
+               id="path4260-0-6"
+               d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8256 z"
+               style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:33.1535;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+            <use
+               x="0"
+               y="0"
+               xlink:href="#path3336-6-3"
+               inkscape:transform-center-x="124.43045"
+               inkscape:transform-center-y="151.59082"
+               id="use3439-6-7"
+               transform="rotate(60,728.23563,-692.24036)"
+               width="100%"
+               height="100%"
+               style="fill:#ffffff;fill-opacity:1;stroke-width:11.0512" />
+            <use
+               x="0"
+               y="0"
+               xlink:href="#path3336-6-3"
+               inkscape:transform-center-x="59.669705"
+               inkscape:transform-center-y="-139.94592"
+               id="use3449-5-5"
+               transform="rotate(180,477.5036,-570.81898)"
+               width="100%"
+               height="100%"
+               style="fill:#ffffff;fill-opacity:1;stroke-width:11.0512" />
+            <use
+               style="display:inline;fill:#ffffff;fill-opacity:1;stroke-width:11.0512"
+               x="0"
+               y="0"
+               xlink:href="#path4260-0-6"
+               id="use4354-5-3"
+               transform="rotate(120,407.33916,-716.08356)"
+               width="100%"
+               height="100%" />
+            <use
+               style="display:inline;fill:#ffffff;fill-opacity:1;stroke-width:11.0512"
+               x="0"
+               y="0"
+               xlink:href="#path4260-0-6"
+               id="use4362-2-5"
+               transform="rotate(-120,407.28823,-715.86995)"
+               width="100%"
+               height="100%" />
+          </g>
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/nixpkgs/pkgs/desktops/deepin/misc/deepin-turbo/default.nix b/nixpkgs/pkgs/desktops/deepin/misc/deepin-turbo/default.nix
new file mode 100644
index 000000000000..7eaca5768607
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/misc/deepin-turbo/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, wrapQtAppsHook
+, dtkwidget
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-turbo";
+  version = "0.0.6.3";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-t6/Ws/Q8DO0zBzrUr/liD61VkxbOv4W4x6VgMWr+Ozk=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    dtkwidget
+  ];
+
+  postPatch = ''
+    substituteInPlace src/{booster-dtkwidget/CMakeLists.txt,booster-desktop/{CMakeLists.txt,desktop.conf},booster-generic/CMakeLists.txt} --replace "/usr" "$out"
+  '';
+
+  meta = with lib; {
+    description = "A daemon that helps to launch dtk applications faster";
+    homepage = "https://github.com/linuxdeepin/deepin-turbo";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/tools/dde-device-formatter/default.nix b/nixpkgs/pkgs/desktops/deepin/tools/dde-device-formatter/default.nix
new file mode 100644
index 000000000000..7bc12672472d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/tools/dde-device-formatter/default.nix
@@ -0,0 +1,63 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, dtkwidget
+, deepin-gettext-tools
+, qt5integration
+, qmake
+, qtbase
+, qttools
+, qtx11extras
+, pkg-config
+, wrapQtAppsHook
+, udisks2-qt5
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dde-device-formatter";
+  version = "0.0.1.15";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-M0XKvo/Qph09GIlqXTdYyPWilWyQhvFAF3c9Yf1Z9m0=";
+  };
+
+  postPatch = ''
+    substituteInPlace translate_desktop2ts.sh translate_ts2desktop.sh \
+      --replace "/usr/bin/deepin-desktop-ts-convert" "deepin-desktop-ts-convert"
+    substituteInPlace dde-device-formatter.pro dde-device-formatter.desktop \
+      --replace "/usr" "$out"
+    patchShebangs *.sh
+  '';
+
+  nativeBuildInputs = [
+    qmake
+    qttools
+    pkg-config
+    wrapQtAppsHook
+    deepin-gettext-tools
+  ];
+
+  buildInputs = [
+    dtkwidget
+    udisks2-qt5
+    qtx11extras
+  ];
+
+  cmakeFlags = [ "-DVERSION=${version}" ];
+
+  # qt5integration must be placed before qtsvg in QT_PLUGIN_PATH
+  qtWrapperArgs = [
+    "--prefix QT_PLUGIN_PATH : ${qt5integration}/${qtbase.qtPluginPrefix}"
+  ];
+
+  meta = with lib; {
+    description = "A simple graphical interface for creating file system in a block device";
+    homepage = "https://github.com/linuxdeepin/dde-device-formatter";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/tools/deepin-gettext-tools/default.nix b/nixpkgs/pkgs/desktops/deepin/tools/deepin-gettext-tools/default.nix
new file mode 100644
index 000000000000..d219e6d73b16
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/tools/deepin-gettext-tools/default.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, gettext
+, python3Packages
+, perlPackages
+}:
+
+stdenv.mkDerivation rec {
+  pname = "deepin-gettext-tools";
+  version = "1.0.10";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-5Dd2QU6JYwuktusssNDfA7IHa6HbFcWo9sZf5PS7NtI=";
+  };
+
+  postPatch = ''
+    substituteInPlace src/generate_mo.py --replace "sudo cp" "cp"
+  '';
+
+  nativeBuildInputs = [ python3Packages.wrapPython ];
+
+  buildInputs = [
+    gettext
+    perlPackages.perl
+    perlPackages.ConfigTiny
+    perlPackages.XMLLibXML
+  ];
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+  ];
+
+  postFixup = ''
+    wrapPythonPrograms
+    wrapPythonProgramsIn "$out/lib/${pname}"
+    wrapProgram $out/bin/deepin-desktop-ts-convert --set PERL5LIB $PERL5LIB
+  '';
+
+  meta = with lib; {
+    description = "Translation file processing utils for DDE development";
+    homepage = "https://github.com/linuxdeepin/deepin-gettext-tools";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = teams.deepin.members;
+  };
+}