summary refs log tree commit diff
path: root/pkgs/desktops
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2019-04-05 11:37:15 +0200
committerJan Tojnar <jtojnar@gmail.com>2019-04-05 11:37:15 +0200
commitcb1a20499a8438ea1f15140dc090256e7690035e (patch)
treef0deb5149dbb73d052e6700c03cc790c0d55fd46 /pkgs/desktops
parent79b3d1b33d3dcd2e82003859cd296f4d1a82567e (diff)
parent9fa17c5957a2bf161b659f5c6cd7b160e1826e06 (diff)
downloadnixpkgs-cb1a20499a8438ea1f15140dc090256e7690035e.tar
nixpkgs-cb1a20499a8438ea1f15140dc090256e7690035e.tar.gz
nixpkgs-cb1a20499a8438ea1f15140dc090256e7690035e.tar.bz2
nixpkgs-cb1a20499a8438ea1f15140dc090256e7690035e.tar.lz
nixpkgs-cb1a20499a8438ea1f15140dc090256e7690035e.tar.xz
nixpkgs-cb1a20499a8438ea1f15140dc090256e7690035e.tar.zst
nixpkgs-cb1a20499a8438ea1f15140dc090256e7690035e.zip
Merge branch 'master' into staging
Diffstat (limited to 'pkgs/desktops')
-rw-r--r--pkgs/desktops/deepin/dbus-factory/default.nix2
-rw-r--r--pkgs/desktops/deepin/dde-api/default.nix96
-rw-r--r--pkgs/desktops/deepin/dde-api/deps.nix22
-rw-r--r--pkgs/desktops/deepin/dde-calendar/default.nix10
-rw-r--r--pkgs/desktops/deepin/dde-daemon/default.nix53
-rw-r--r--pkgs/desktops/deepin/dde-daemon/deps.nix26
-rw-r--r--pkgs/desktops/deepin/dde-polkit-agent/default.nix51
-rw-r--r--pkgs/desktops/deepin/dde-qt-dbus-factory/default.nix15
-rw-r--r--pkgs/desktops/deepin/dde-session-ui/default.nix13
-rw-r--r--pkgs/desktops/deepin/deepin-desktop-base/default.nix40
-rw-r--r--pkgs/desktops/deepin/deepin-desktop-schemas/default.nix39
-rw-r--r--pkgs/desktops/deepin/deepin-gettext-tools/default.nix2
-rw-r--r--pkgs/desktops/deepin/deepin-gtk-theme/default.nix2
-rw-r--r--pkgs/desktops/deepin/deepin-icon-theme/default.nix26
-rw-r--r--pkgs/desktops/deepin/deepin-image-viewer/default.nix11
-rw-r--r--pkgs/desktops/deepin/deepin-menu/default.nix7
-rw-r--r--pkgs/desktops/deepin/deepin-metacity/default.nix15
-rw-r--r--pkgs/desktops/deepin/deepin-movie-reborn/default.nix4
-rw-r--r--pkgs/desktops/deepin/deepin-mutter/default.nix41
-rw-r--r--pkgs/desktops/deepin/deepin-sound-theme/default.nix2
-rw-r--r--pkgs/desktops/deepin/deepin-terminal/default.nix25
-rw-r--r--pkgs/desktops/deepin/deepin-wallpapers/default.nix10
-rw-r--r--pkgs/desktops/deepin/deepin-wm/default.nix38
-rw-r--r--pkgs/desktops/deepin/default.nix5
-rw-r--r--pkgs/desktops/deepin/dpa-ext-gnomekeyring/default.nix43
-rw-r--r--pkgs/desktops/deepin/dtkcore/default.nix4
-rw-r--r--pkgs/desktops/deepin/dtkwidget/default.nix4
-rw-r--r--pkgs/desktops/deepin/go-dbus-factory/default.nix6
-rw-r--r--pkgs/desktops/deepin/go-dbus-generator/default.nix2
-rw-r--r--pkgs/desktops/deepin/go-gir-generator/default.nix14
-rw-r--r--pkgs/desktops/deepin/go-lib/default.nix14
-rw-r--r--pkgs/desktops/deepin/qt5dxcb-plugin/default.nix4
-rw-r--r--pkgs/desktops/deepin/qt5integration/default.nix4
-rwxr-xr-xpkgs/desktops/deepin/setup-hook.sh53
-rw-r--r--pkgs/desktops/deepin/update.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/mutter/3.28.nix33
-rw-r--r--pkgs/desktops/gnome-3/core/mutter/fix-paths-328.patch13
-rw-r--r--pkgs/desktops/pantheon/apps/elementary-camera/default.nix4
-rw-r--r--pkgs/desktops/pantheon/apps/elementary-files/default.nix4
-rw-r--r--pkgs/desktops/pantheon/apps/elementary-terminal/default.nix4
-rw-r--r--pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix4
-rw-r--r--pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix4
-rw-r--r--pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/calendar-exec.patch13
-rw-r--r--pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix14
-rw-r--r--pkgs/desktops/plasma-5/fetch.sh2
45 files changed, 558 insertions, 242 deletions
diff --git a/pkgs/desktops/deepin/dbus-factory/default.nix b/pkgs/desktops/deepin/dbus-factory/default.nix
index 3c99c40ee80..ee0c81d7d39 100644
--- a/pkgs/desktops/deepin/dbus-factory/default.nix
+++ b/pkgs/desktops/deepin/dbus-factory/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     go-dbus-generator
   ];
 
-  makeFlags = [ "GOPATH=$(out)/share/go" ];
+  makeFlags = [ "GOPATH=${placeholder ''out''}/share/go" ];
 
   postPatch = ''
     sed -i -e 's:/share/gocode:/share/go:' Makefile
diff --git a/pkgs/desktops/deepin/dde-api/default.nix b/pkgs/desktops/deepin/dde-api/default.nix
index 6e61a30e258..8db376e01fd 100644
--- a/pkgs/desktops/deepin/dde-api/default.nix
+++ b/pkgs/desktops/deepin/dde-api/default.nix
@@ -1,12 +1,32 @@
 { stdenv, buildGoPackage, fetchFromGitHub, pkgconfig,
-  deepin-gettext-tools, go-dbus-factory, go-gir-generator, go-lib,
-  alsaLib, glib, gtk3, libcanberra, libgudev, librsvg, poppler,
-  pulseaudio, go, deepin }:
+  alsaLib,
+  bc,
+  blur-effect,
+  coreutils,
+  dbus-factory,
+  deepin,
+  deepin-gettext-tools,
+  fontconfig,
+  glib,
+  go,
+  go-dbus-factory,
+  go-gir-generator,
+  go-lib,
+  grub2,
+  gtk3,
+  libcanberra,
+  libgudev,
+  librsvg,
+  poppler,
+  pulseaudio,
+  rfkill,
+  xcur2png
+}:
 
 buildGoPackage rec {
   name = "${pname}-${version}";
   pname = "dde-api";
-  version = "3.5.0";
+  version = "3.18.1";
 
   goPackagePath = "pkg.deepin.io/dde/api";
 
@@ -14,33 +34,62 @@ buildGoPackage rec {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "1g3s0i5wa6qyv00yksz4r4cy2vhiknq8v0yx7aribvwm3gxf7jw3";
+    sha256 = "0y8v18f6l3ycysdn4qi7c93z805q7alji8wix4j4qh9x9r35d728";
   };
 
   goDeps = ./deps.nix;
 
+  outputs = [ "out" ];
+
   nativeBuildInputs = [
     pkgconfig
-    deepin-gettext-tools
-    go-dbus-factory
-    go-gir-generator
-    go-lib
+    deepin-gettext-tools # build
+    dbus-factory         # build
+    go-dbus-factory      # needed
+    go-gir-generator     # needed
+    go-lib               # build
+    deepin.setupHook
   ];
 
   buildInputs = [
-    alsaLib
-    glib
-    gtk3
-    libcanberra
-    libgudev
-    librsvg
-    poppler
-    pulseaudio
-  ];
+    alsaLib     # needed
+    bc          # run (to adjust grub theme?)
+    blur-effect # run (is it really needed?)
+    coreutils   # run (is it really needed?)
+    fontconfig  # run (is it really needed?)
+    #glib        # ? arch
+    grub2       # run (is it really needed?)
+    gtk3        # build run
+    libcanberra # build run
+    libgudev    # needed
+    librsvg     # build run
+    poppler     # build run
+    pulseaudio  # needed
+    rfkill      # run
+    xcur2png    # run
+    #locales     # run (locale-helper needs locale-gen, which is unavailable on NixOS?)
+ ];
 
   postPatch = ''
-    patchShebangs .
-    sed -i -e "s|/var|$bin/var|" Makefile
+    searchHardCodedPaths # debugging
+
+    sed -i -e "s|/var|$out/var|" Makefile
+
+    # TODO: confirm where to install grub themes
+    sed -i -e "s|/boot/grub|$out/boot/grub|" Makefile
+
+    fixPath $out /usr/lib/deepin-api \
+      lunar-calendar/main.go \
+      misc/services/com.deepin.api.CursorHelper.service \
+      misc/services/com.deepin.api.Graphic.service \
+      misc/services/com.deepin.api.LunarCalendar.service \
+      misc/services/com.deepin.api.Pinyin.service \
+      misc/system-services/com.deepin.api.Device.service \
+      misc/system-services/com.deepin.api.LocaleHelper.service \
+      misc/system-services/com.deepin.api.SoundThemePlayer.service \
+      misc/systemd/system/deepin-shutdown-sound.service \
+      theme_thumb/gtk/gtk.go \
+      thumbnails/gtk/gtk.go
   '';
 
   buildPhase = ''
@@ -49,10 +98,9 @@ buildGoPackage rec {
   '';
 
   installPhase = ''
-    make install PREFIX="$bin" SYSTEMD_LIB_DIR="$bin/lib" -C go/src/${goPackagePath}
-    mkdir -p $out/share
-    mv $bin/share/gocode $out/share/go
-    remove-references-to -t ${go} $bin/bin/* $bin/lib/deepin-api/*
+    make install PREFIX="$out" SYSTEMD_LIB_DIR="$out/lib" -C go/src/${goPackagePath}
+    mv $out/share/gocode $out/share/go
+    remove-references-to -t ${go} $out/bin/* $out/lib/deepin-api/*
   '';
 
   passthru.updateScript = deepin.updateScript { inherit name; };
diff --git a/pkgs/desktops/deepin/dde-api/deps.nix b/pkgs/desktops/deepin/dde-api/deps.nix
index bd7a13043da..03758f0d43e 100644
--- a/pkgs/desktops/deepin/dde-api/deps.nix
+++ b/pkgs/desktops/deepin/dde-api/deps.nix
@@ -1,4 +1,4 @@
-# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
 [
   {
     goPackagePath = "github.com/alecthomas/template";
@@ -32,8 +32,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/disintegration/imaging";
-      rev = "9458da53d1e65e098d48467a4317c403327e4424";
-      sha256 = "1b0ma9if8s892qfx5b1vjinxn00ah9vsyxijs8knkilrhf5vqcx4";
+      rev = "061e8a750a4db9667cdf9e2af7f4029ba506cb3b";
+      sha256 = "13fkknwz2iby5rdzv9sgam6p27zdgxis3sxgyls9sdir5lbhjhm7";
     };
   }
   {
@@ -41,8 +41,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/fogleman/gg";
-      rev = "0e0ff3ade7039063fe954cc1b45fad6cd4ac80db";
-      sha256 = "06gvsngfwizdxin90nldix5503fqgnwqmqvxzrz0xg5hfazwfra5";
+      rev = "0403632d5b905943a1c2a5b2763aaecd568467ec";
+      sha256 = "1nkldjghbqnzj2djfaxhiv35kk341xhcrj9m2dwq65v684iqkk8n";
     };
   }
   {
@@ -59,8 +59,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/linuxdeepin/go-x11-client";
-      rev = "03541136501cab4910ad8852fe749ef8e18907ca";
-      sha256 = "1iiw8qclpklim81hz1sdjp2ajw0ljvjz19n9jly86nbw6m8x4gkp";
+      rev = "48c75d615ef634d9b1c24f8e8a30f56201b4f561";
+      sha256 = "1x2i9wg6lyskls5qi3d2r84bdhyhgi8v1d8scxx9ysjaw9di9ldl";
     };
   }
   {
@@ -77,8 +77,8 @@
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/image";
-      rev = "69cc3646b96e61de0b417f4815b86c36e65783ee";
-      sha256 = "0nkywb3r0qvwkmykpswnf0svxi463ycn293y5jjididzxv9qxdp9";
+      rev = "3fc05d484e9f77dd51816890e05f2602e4ca4d65";
+      sha256 = "0mcip8jpz2061j1z658rfskphc92wv6sapy81p95bnjdymi562k3";
     };
   }
   {
@@ -86,8 +86,8 @@
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/net";
-      rev = "c44066c5c816ec500d459a2a324a753f78531ae0";
-      sha256 = "0mgww74bl15d0jvsh4f3qr1ckjzb8icb8hn0mgs5ppa0b2fgpc4f";
+      rev = "74de082e2cca95839e88aa0aeee5aadf6ce7710f";
+      sha256 = "0a4y3y0q5bkif7wvdkyjkvgnzlbh2n4zk7wsy5j95raf0i3zlw4s";
     };
   }
   {
diff --git a/pkgs/desktops/deepin/dde-calendar/default.nix b/pkgs/desktops/deepin/dde-calendar/default.nix
index 631471527f3..0ef0da5c70b 100644
--- a/pkgs/desktops/deepin/dde-calendar/default.nix
+++ b/pkgs/desktops/deepin/dde-calendar/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
     qmake
     qttools
     deepin-gettext-tools
+    deepin.setupHook
   ];
 
   buildInputs = [
@@ -27,11 +28,14 @@ stdenv.mkDerivation rec {
   ];
 
   postPatch = ''
-    patchShebangs .
+    searchHardCodedPaths
+    patchShebangs translate_generation.sh
+    patchShebangs translate_desktop.sh
+
+    fixPath $out /usr com.deepin.Calendar.service
+
     sed -i translate_desktop.sh \
       -e "s,/usr/bin/deepin-desktop-ts-convert,deepin-desktop-ts-convert,"
-    sed -i com.deepin.Calendar.service \
-      -e "s,/usr,$out,"
   '';
 
   passthru.updateScript = deepin.updateScript { inherit name; };
diff --git a/pkgs/desktops/deepin/dde-daemon/default.nix b/pkgs/desktops/deepin/dde-daemon/default.nix
index 3678694be9e..954d0971c25 100644
--- a/pkgs/desktops/deepin/dde-daemon/default.nix
+++ b/pkgs/desktops/deepin/dde-daemon/default.nix
@@ -1,13 +1,15 @@
 { stdenv, buildGoPackage, fetchFromGitHub, fetchpatch, pkgconfig,
   dbus-factory, go-dbus-factory, go-gir-generator, go-lib,
-  deepin-gettext-tools, dde-api, alsaLib, glib, gtk3, libinput, libnl,
-  librsvg, linux-pam, networkmanager, pulseaudio, xorg, gnome3,
-  python3Packages, hicolor-icon-theme, go, deepin }:
+  deepin-gettext-tools, dde-api, deepin-desktop-schemas,
+  deepin-wallpapers, deepin-desktop-base, alsaLib, glib, gtk3,
+  libgudev, libinput, libnl, librsvg, linux-pam, networkmanager,
+  pulseaudio, xorg, python3, hicolor-icon-theme, glibc, tzdata, go,
+  deepin, makeWrapper, wrapGAppsHook }:
 
 buildGoPackage rec {
   name = "${pname}-${version}";
   pname = "dde-daemon";
-  version = "3.6.0";
+  version = "3.24.1";
 
   goPackagePath = "pkg.deepin.io/dde/daemon";
 
@@ -15,15 +17,14 @@ buildGoPackage rec {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "0gn2zp34wg79lvzdfla6yb4gs3f9ll83kj765zvig1wpx51nq1aj";
+    sha256 = "1qxj0mqnl10qj8qidpc1sv8gm4gj5965i07d003yxlxcw9cqwx7y";
   };
 
   patches = [
     # https://github.com/linuxdeepin/dde-daemon/issues/51
     (fetchpatch {
-      name = "dde-daemon_3.2.3.patch";
-      url = https://github.com/jouyouyun/tap-gesture-patches/raw/master/patches/dde-daemon_3.2.3.patch;
-      sha256 = "0a3xb15czpfl2vajpf7ycw37vr7fbw2png1a67mvjjkgx7d1k7dg";
+      url = https://github.com/jouyouyun/tap-gesture-patches/raw/master/patches/dde-daemon_3.8.0.patch;
+      sha256 = "1ampdsp9zlg263flswdw9gj10n7gxh7zi6w6z9jgh29xlai05pvh";
     })
   ];
 
@@ -38,46 +39,70 @@ buildGoPackage rec {
     go-gir-generator
     go-lib
     deepin-gettext-tools
-    dde-api
     linux-pam
     networkmanager
     networkmanager.dev
-    python3Packages.python
+    python3
+    makeWrapper
+    wrapGAppsHook
+    deepin.setupHook
   ];
 
   buildInputs = [
     alsaLib
+    dde-api
+    deepin-desktop-base
+    deepin-desktop-schemas
+    deepin-wallpapers
     glib
-    gnome3.libgudev
+    libgudev
     gtk3
     hicolor-icon-theme
     libinput
     libnl
     librsvg
     pulseaudio
+    tzdata
   ];
 
   postPatch = ''
-    patchShebangs .
+    searchHardCodedPaths
+    patchShebangs network/nm_generator/gen_nm_consts.py
 
-    sed -i network/nm_generator/Makefile -e 's,/usr/share/gir-1.0/NM-1.0.gir,${networkmanager.dev}/share/gir-1.0/NM-1.0.gir,'
+    fixPath $out /usr/share/dde/data launcher/manager.go dock/dock_manager_init.go
+    fixPath ${networkmanager.dev} /usr/share/gir-1.0/NM-1.0.gir network/nm_generator/Makefile
+    fixPath ${glibc.bin} /usr/bin/getconf systeminfo/utils.go
+    fixPath ${deepin-desktop-base} /etc/deepin-version systeminfo/version.go accounts/deepinversion.go
+    fixPath ${tzdata} /usr/share/zoneinfo timedate/zoneinfo/zone.go
+    fixPath ${dde-api} /usr/lib/deepin-api grub2/modify_manger.go accounts/image_blur.go
+    fixPath ${deepin-wallpapers} /usr/share/wallpapers appearance/background/list.go accounts/user.go
 
     sed -i -e "s|{DESTDIR}/etc|{DESTDIR}$out/etc|" Makefile
     sed -i -e "s|{DESTDIR}/var|{DESTDIR}$out/var|" Makefile
     sed -i -e "s|{DESTDIR}/lib|{DESTDIR}$out/lib|" Makefile
 
     find -type f -exec sed -i -e "s,/usr/lib/deepin-daemon,$out/lib/deepin-daemon," {} +
+
+    searchHardCodedPaths
   '';
 
   buildPhase = ''
-    make -C go/src/${goPackagePath}
     # compilation of the nm module is failing
     #make -C go/src/${goPackagePath}/network/nm_generator gen-nm-code
+    make -C go/src/${goPackagePath}
   '';
 
   installPhase = ''
     make install PREFIX="$out" -C go/src/${goPackagePath}
     remove-references-to -t ${go} $out/lib/deepin-daemon/*
+    searchHardCodedPaths $out
+  '';
+
+  postFixup = ''
+    # wrapGAppsHook does not work with binaries outside of $out/bin or $out/libexec
+    for binary in $out/lib/deepin-daemon/*; do
+      wrapProgram $binary "''${gappsWrapperArgs[@]}"
+    done
   '';
 
   passthru.updateScript = deepin.updateScript { inherit name; };
diff --git a/pkgs/desktops/deepin/dde-daemon/deps.nix b/pkgs/desktops/deepin/dde-daemon/deps.nix
index 3d241baa326..fab2f9f93b2 100644
--- a/pkgs/desktops/deepin/dde-daemon/deps.nix
+++ b/pkgs/desktops/deepin/dde-daemon/deps.nix
@@ -1,4 +1,4 @@
-# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
 [
   {
     goPackagePath = "github.com/alecthomas/template";
@@ -41,8 +41,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/linuxdeepin/go-x11-client";
-      rev = "03541136501cab4910ad8852fe749ef8e18907ca";
-      sha256 = "1iiw8qclpklim81hz1sdjp2ajw0ljvjz19n9jly86nbw6m8x4gkp";
+      rev = "48c75d615ef634d9b1c24f8e8a30f56201b4f561";
+      sha256 = "1x2i9wg6lyskls5qi3d2r84bdhyhgi8v1d8scxx9ysjaw9di9ldl";
     };
   }
   {
@@ -50,8 +50,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/msteinert/pam";
-      rev = "f4cd9f5e29232537a12db1678f48c702ad6896b7";
-      sha256 = "1vjawxswy3f23v4d72kk95y3b557580670ai9ffvrwy6wy85qync";
+      rev = "f29b9f28d6f9a1f6c4e6fd5db731999eb946574b";
+      sha256 = "1v5z51mgyz2glm7v0mg60xs1as88wx6cqhys2khc5d3khkr8q0qp";
     };
   }
   {
@@ -68,8 +68,8 @@
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/image";
-      rev = "69cc3646b96e61de0b417f4815b86c36e65783ee";
-      sha256 = "0nkywb3r0qvwkmykpswnf0svxi463ycn293y5jjididzxv9qxdp9";
+      rev = "3fc05d484e9f77dd51816890e05f2602e4ca4d65";
+      sha256 = "0mcip8jpz2061j1z658rfskphc92wv6sapy81p95bnjdymi562k3";
     };
   }
   {
@@ -77,8 +77,8 @@
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/net";
-      rev = "c44066c5c816ec500d459a2a324a753f78531ae0";
-      sha256 = "0mgww74bl15d0jvsh4f3qr1ckjzb8icb8hn0mgs5ppa0b2fgpc4f";
+      rev = "74de082e2cca95839e88aa0aeee5aadf6ce7710f";
+      sha256 = "0a4y3y0q5bkif7wvdkyjkvgnzlbh2n4zk7wsy5j95raf0i3zlw4s";
     };
   }
   {
@@ -86,8 +86,8 @@
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/text";
-      rev = "6f44c5a2ea40ee3593d98cdcc905cc1fdaa660e2";
-      sha256 = "00mwzxly5isgf0glz7k3k2dkyqkjfc4z55qxajx4lgcp3h8xn9xj";
+      rev = "e3703dcdd614d2d7488fff034c75c551ea25da95";
+      sha256 = "1xh106aslp04vbzb4hc7cc5fyg2ljwny8fwfwsp5mpbqr9ixkikv";
     };
   }
   {
@@ -104,8 +104,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/linuxdeepin/go-lib.git";
-      rev = "b199d0dc96e979398ea3985334ccf9c20236d1a7";
-      sha256 = "0g84v1adnnyqc1mv45n3wlvnivkm1fi8ywszzgwx8irl3iddfvxv";
+      rev = "3558b2348565e983c7d4a57a0a21bbe716a55b83";
+      sha256 = "0p9yrxa3x71n3jxffh03ahjgimdzvxzhny632k363lkha6glvbnc";
     };
   }
 ]
diff --git a/pkgs/desktops/deepin/dde-polkit-agent/default.nix b/pkgs/desktops/deepin/dde-polkit-agent/default.nix
new file mode 100644
index 00000000000..17b88738c36
--- /dev/null
+++ b/pkgs/desktops/deepin/dde-polkit-agent/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, pkgconfig, qmake, qttools, polkit-qt,
+  dtkcore, dtkwidget, dde-qt-dbus-factory, deepin }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "dde-polkit-agent";
+  version = "0.2.4";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "1x7mv63g8412w1bq7fijsdzi8832qjb6gnr1nykcv7imzlycq9m6";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    qmake
+    qttools
+    deepin.setupHook
+  ];
+
+  buildInputs = [
+    dde-qt-dbus-factory
+    dtkcore
+    dtkwidget
+    polkit-qt
+  ];
+
+  postPatch = ''
+    searchHardCodedPaths
+    patchShebangs translate_generation.sh
+
+    fixPath $out /usr dde-polkit-agent.pro polkit-dde-authentication-agent-1.desktop
+    fixPath /run/current-system/sw /usr/lib/polkit-1-dde/plugins pluginmanager.cpp
+  '';
+
+  postFixup = ''
+    searchHardCodedPaths $out
+  '';
+
+  passthru.updateScript = deepin.updateScript { inherit name; };
+
+  meta = with stdenv.lib; {
+    description = "PolicyKit agent for Deepin Desktop Environment";
+    homepage = https://github.com/linuxdeepin/dde-polkit-agent;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/pkgs/desktops/deepin/dde-qt-dbus-factory/default.nix b/pkgs/desktops/deepin/dde-qt-dbus-factory/default.nix
index f28d8f77b3c..1d9c13c17bb 100644
--- a/pkgs/desktops/deepin/dde-qt-dbus-factory/default.nix
+++ b/pkgs/desktops/deepin/dde-qt-dbus-factory/default.nix
@@ -1,25 +1,28 @@
-{ stdenv, fetchFromGitHub, pkgconfig, qmake, python, deepin }:
+{ stdenv, fetchFromGitHub, pkgconfig, qmake, python3, deepin }:
 
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "dde-qt-dbus-factory";
-  version = "1.0.5";
+  version = "1.1.1";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "0cz55hsbhy1ab1mndv0sp6xnqrhz2y66w7pcxy8v9k87ii32czf8";
+    sha256 = "1b2i5m6fzkga72hbl85v2rng3qq53di39p7jj2f119wmlfbyp2vg";
   };
 
   nativeBuildInputs = [
     qmake
-    python
+    python3
+    deepin.setupHook
   ];
 
   postPatch = ''
-    sed -i libdframeworkdbus/{DFrameworkdbusConfig.in,libdframeworkdbus.pro} \
-      -e "s,/usr,$out,"
+    searchHardCodedPaths
+    fixPath $out /usr \
+      libdframeworkdbus/DFrameworkdbusConfig.in \
+      libdframeworkdbus/libdframeworkdbus.pro
   '';
 
   enableParallelBuilding = true;
diff --git a/pkgs/desktops/deepin/dde-session-ui/default.nix b/pkgs/desktops/deepin/dde-session-ui/default.nix
index d3970cf8710..a61a0fdbb84 100644
--- a/pkgs/desktops/deepin/dde-session-ui/default.nix
+++ b/pkgs/desktops/deepin/dde-session-ui/default.nix
@@ -1,18 +1,18 @@
 { stdenv, fetchFromGitHub, pkgconfig, qmake, qtsvg, qttools,
   qtx11extras, xkeyboard_config, xorg, lightdm_qt, gsettings-qt,
   dde-qt-dbus-factory, deepin-gettext-tools, dtkcore, dtkwidget,
-  hicolor-icon-theme, deepin }:
+  deepin-desktop-schemas, deepin, hicolor-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "dde-session-ui";
-  version = "4.6.2";
+  version = "4.9.0";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "1fxlrj7vv7nqllwpwc8mxiv9bfqcj9b2qwkpjaq326pfmg5p5lhq";
+    sha256 = "1bh7wbkzikcnka94nzqzl87cs2m6bslrv9r2hdsvqqr3aaad5za3";
   };
 
   nativeBuildInputs = [
@@ -20,6 +20,8 @@ stdenv.mkDerivation rec {
     qmake
     qttools
     deepin-gettext-tools
+    wrapGAppsHook
+    deepin.setupHook
   ];
 
   buildInputs = [
@@ -35,10 +37,13 @@ stdenv.mkDerivation rec {
     xorg.libXtst
     xkeyboard_config
     hicolor-icon-theme
+    deepin-desktop-schemas
   ];
 
   postPatch = ''
-    patchShebangs .
+    searchHardCodedPaths
+    patchShebangs translate_generation.sh
+    patchShebangs translate_desktop.sh
     sed -i translate_desktop.sh -e "s,/usr/bin/deepin-desktop-ts-convert,deepin-desktop-ts-convert,"
     find -type f -exec sed -i -e "s,path = /etc,path = $out/etc," {} +
     find -type f -exec sed -i -e "s,path = /usr,path = $out," {} +
diff --git a/pkgs/desktops/deepin/deepin-desktop-base/default.nix b/pkgs/desktops/deepin/deepin-desktop-base/default.nix
index 80a368c5be9..b5e75c217b1 100644
--- a/pkgs/desktops/deepin/deepin-desktop-base/default.nix
+++ b/pkgs/desktops/deepin/deepin-desktop-base/default.nix
@@ -3,34 +3,40 @@
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "deepin-desktop-base";
-  version = "2018.10.29";
+  version = "2019.03.29";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "0l2zb7rpag2q36lqsgvirhjgmj7w243nsi1rywkypf2xm7g2v235";
+    sha256 = "1d016h95nsn5yay9f4c13hixfxj0q01hpxwj2x84i6qpx63dxdwq";
   };
 
+  nativeBuildInputs = [ deepin.setupHook ];
+
   buildInputs = [ deepin-wallpapers ];
 
+  # TODO: Fedora recommended dependencies:
+  #   deepin-wallpapers
+  #   plymouth-theme-deepin
+
   postPatch = ''
-    sed -i Makefile -e "s:/usr:$out:" -e "s:/etc:$out/etc:"
-  '';
+    searchHardCodedPaths
 
-  postInstall = ''
-    # Remove Deepin distro's lsb-release
-    rm $out/etc/lsb-release
+    fixPath $out /etc Makefile
+    fixPath $out /usr Makefile
 
+    # Remove Deepin distro's lsb-release
     # Don't override systemd timeouts
-    rm -r $out/etc/systemd
-
     # Remove apt-specific templates
-    rm -r $out/share/python-apt
-
-    # Remove empty backgrounds directory
-    rm -r $out/share/backgrounds
+    echo ----------------------------------------------------------------
+    echo grep --color=always -E 'lsb-release|systemd|python-apt|backgrounds' Makefile
+    grep --color=always -E 'lsb-release|systemd|python-apt|backgrounds' Makefile
+    echo ----------------------------------------------------------------
+    sed -i -E '/lsb-release|systemd|python-apt|backgrounds/d' Makefile
+  '';
 
+  postInstall = ''
     # Make a symlink for deepin-version
     ln -s ../lib/deepin/desktop-version $out/etc/deepin-version
   '';
@@ -39,6 +45,14 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Base assets and definitions for Deepin Desktop Environment";
+    # TODO: revise
+    longDescription = ''
+      This package provides some components for Deepin desktop environment.
+      - deepin logo
+      - deepin desktop version
+      - login screen background image
+      - language information
+    '';
     homepage = https://github.com/linuxdeepin/deepin-desktop-base;
     license = licenses.gpl3;
     platforms = platforms.linux;
diff --git a/pkgs/desktops/deepin/deepin-desktop-schemas/default.nix b/pkgs/desktops/deepin/deepin-desktop-schemas/default.nix
index d2b70ec4a89..f0a3d711a1d 100644
--- a/pkgs/desktops/deepin/deepin-desktop-schemas/default.nix
+++ b/pkgs/desktops/deepin/deepin-desktop-schemas/default.nix
@@ -1,21 +1,22 @@
-{ stdenv, fetchFromGitHub, python, deepin-gtk-theme,
-  deepin-icon-theme, deepin-sound-theme, deepin-wallpapers, gnome3,
-  deepin }:
+{ stdenv, fetchFromGitHub, python3, gnome3, glib, deepin-gtk-theme,
+  deepin-icon-theme, deepin-sound-theme, deepin-wallpapers, deepin }:
 
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "deepin-desktop-schemas";
-  version = "3.4.0";
+  version = "3.13.0";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "10x0rh9z925yzyp8h0vgmg4313smvran06lvr12c3931qkmkzwgq";
+    sha256 = "0bamjcpmsl8xhw3ksgl11wv5xwcdhrkl1namikfzc4an03sk1rdq";
   };
 
   nativeBuildInputs = [
-    python
+    python3
+    glib.dev
+    deepin.setupHook
   ];
 
   buildInputs = [
@@ -27,12 +28,34 @@ stdenv.mkDerivation rec {
   ];
 
   postPatch = ''
+    searchHardCodedPaths
+
     # fix default background url
-    sed -i '/picture-uri/s|/usr/share/backgrounds/default_background.jpg|$out/share/backgrounds/deepin/default.png|' \
+    sed -i -e 's,/usr/share/backgrounds/default_background.jpg,/usr/share/backgrounds/deepin/desktop.jpg,' \
+      overrides/common/com.deepin.wrap.gnome.desktop.override
+      
+    fixPath ${deepin-wallpapers} /usr/share/backgrounds \
       overrides/common/com.deepin.wrap.gnome.desktop.override
+
+    fixPath ${deepin-wallpapers} /usr/share/wallpapers/deepin \
+      schemas/com.deepin.dde.appearance.gschema.xml
+
+    # still hardcoded paths:
+    #   /etc/gnome-settings-daemon/xrandr/monitors.xml                                ? gnome3.gnome-settings-daemon
+    #   /usr/share/backgrounds/gnome/adwaita-lock.jpg                                 ? gnome3.gnome-backgrounds
+    #   /usr/share/backgrounds/gnome/adwaita-timed.xml                                gnome3.gnome-backgrounds
+    #   /usr/share/desktop-directories
   '';
 
-  makeFlags = [ "PREFIX=$(out)" ];
+  makeFlags = [ "PREFIX=${placeholder ''out''}" ];
+
+  doCheck = true;
+  checkTarget = "test";
+
+  postInstall = ''
+    glib-compile-schemas --strict $out/share/glib-2.0/schemas
+    searchHardCodedPaths $out
+  '';
 
   passthru.updateScript = deepin.updateScript { inherit name; };
 
diff --git a/pkgs/desktops/deepin/deepin-gettext-tools/default.nix b/pkgs/desktops/deepin/deepin-gettext-tools/default.nix
index 779fae6a113..d9a6f370168 100644
--- a/pkgs/desktops/deepin/deepin-gettext-tools/default.nix
+++ b/pkgs/desktops/deepin/deepin-gettext-tools/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     python3Packages.python
   ];
 
-  makeFlags = [ "PREFIX=$(out)" ];
+  makeFlags = [ "PREFIX=${placeholder ''out''}" ];
 
   postPatch = ''
     sed -e 's/sudo cp/cp/' -i src/generate_mo.py
diff --git a/pkgs/desktops/deepin/deepin-gtk-theme/default.nix b/pkgs/desktops/deepin/deepin-gtk-theme/default.nix
index 8d11ca8bf42..e0657752d10 100644
--- a/pkgs/desktops/deepin/deepin-gtk-theme/default.nix
+++ b/pkgs/desktops/deepin/deepin-gtk-theme/default.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   propagatedUserEnvPkgs = [ gtk-engine-murrine ];
 
-  makeFlags = [ "PREFIX=$(out)" ];
+  makeFlags = [ "PREFIX=${placeholder ''out''}" ];
 
   passthru.updateScript = deepin.updateScript { inherit name; };
 
diff --git a/pkgs/desktops/deepin/deepin-icon-theme/default.nix b/pkgs/desktops/deepin/deepin-icon-theme/default.nix
index ef457420601..3b6b61c1ae7 100644
--- a/pkgs/desktops/deepin/deepin-icon-theme/default.nix
+++ b/pkgs/desktops/deepin/deepin-icon-theme/default.nix
@@ -1,29 +1,39 @@
-{ stdenv, fetchFromGitHub, gtk3, papirus-icon-theme, deepin }:
+{ stdenv, fetchFromGitHub, gtk3, xcursorgen, papirus-icon-theme, deepin }:
 
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "deepin-icon-theme";
-  version = "15.12.64";
+  version = "15.12.68";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "0z1yrp6yg2hb67azrbd9ac743jjh83vxdf2j0mmv2lfpd4fqw8qc";
+    sha256 = "12jgz81s5qggmnkfg9m5f799r10p43qmh4zqxl1kjvlrqgvsc9rf";
   };
 
-  nativeBuildInputs = [ gtk3 papirus-icon-theme ];
+  nativeBuildInputs = [ gtk3 xcursorgen ];
 
-  postPatch = ''
-    patchShebangs .
+  buildInputs = [ papirus-icon-theme ];
 
-    # install in $out
-    sed -i -e "s|/usr|$out|g" Makefile tools/hicolor.links
+  postPatch = ''
+    patchShebangs tools/hicolor.links
+    patchShebangs tools/display_unused_links.sh
+    patchShebangs cursors-src/cursors/bitmaps/make.sh
+    patchShebangs cursors-src/render-cursors.sh
 
     # keep icon-theme.cache
     sed -i -e 's|\(-rm -f .*/icon-theme.cache\)|# \1|g' Makefile
   '';
 
+  buildTargets = "all hicolor-links";
+  installTargets = "install-icons install-cursors";
+  installFlags = [ "PREFIX=${placeholder ''out''}" ];
+
+  postInstall = ''
+    cp -a ./Sea ./usr/share/icons/hicolor "$out"/share/icons/
+  '';
+
   passthru.updateScript = deepin.updateScript { inherit name; };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/deepin/deepin-image-viewer/default.nix b/pkgs/desktops/deepin/deepin-image-viewer/default.nix
index 0b08f7cd39a..7e2840f0f3f 100644
--- a/pkgs/desktops/deepin/deepin-image-viewer/default.nix
+++ b/pkgs/desktops/deepin/deepin-image-viewer/default.nix
@@ -6,19 +6,20 @@
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "deepin-image-viewer";
-  version = "1.3.1";
+  version = "1.3.10";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "0dxdvm6hzj6izfxka35za8y7vacd06nksfgzx6xsv7ywzagri4k5";
+    sha256 = "0paanw9sd67ic9yrbzqhrwi4bf4lpvsk16jynx99n76j3jgyijkk";
   };
 
   nativeBuildInputs = [
     pkgconfig
     qmake
     qttools
+    deepin.setupHook
   ];
 
   buildInputs = [
@@ -33,12 +34,12 @@ stdenv.mkDerivation rec {
   ];
 
   postPatch = ''
-    patchShebangs .
+    searchHardCodedPaths
+    patchShebangs viewer/generate_translations.sh
+    fixPath $out /usr viewer/com.deepin.ImageViewer.service
     sed -i qimage-plugins/freeimage/freeimage.pro \
            qimage-plugins/libraw/libraw.pro \
       -e "s,\$\$\[QT_INSTALL_PLUGINS\],$out/$qtPluginPrefix,"
-    sed -i viewer/com.deepin.ImageViewer.service \
-      -e "s,/usr,$out,"
   '';
 
   passthru.updateScript = deepin.updateScript { inherit name; };
diff --git a/pkgs/desktops/deepin/deepin-menu/default.nix b/pkgs/desktops/deepin/deepin-menu/default.nix
index 645abfedad7..5de292805b6 100644
--- a/pkgs/desktops/deepin/deepin-menu/default.nix
+++ b/pkgs/desktops/deepin/deepin-menu/default.nix
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [
     pkgconfig
     qmake
+    deepin.setupHook
   ];
 
   buildInputs = [
@@ -25,7 +26,11 @@ stdenv.mkDerivation rec {
   ];
 
   postPatch = ''
-    sed -i deepin-menu.pro -e "s,/usr,$out,"
+    searchHardCodedPaths
+    fixPath $out /usr \
+      data/com.deepin.menu.service \
+      deepin-menu.desktop \
+      deepin-menu.pro
   '';
 
   enableParallelBuilding = true;
diff --git a/pkgs/desktops/deepin/deepin-metacity/default.nix b/pkgs/desktops/deepin/deepin-metacity/default.nix
index 28d68883d4b..fdf2c240e2c 100644
--- a/pkgs/desktops/deepin/deepin-metacity/default.nix
+++ b/pkgs/desktops/deepin/deepin-metacity/default.nix
@@ -1,25 +1,26 @@
-{ stdenv, fetchFromGitHub, pkgconfig, intltool, libtool, gnome3, gtk3, libgtop, bamf,
-  json-glib, libcanberra-gtk3, libxkbcommon, libstartup_notification,
-  deepin-wallpapers, deepin-desktop-schemas, deepin }:
+{ stdenv, fetchFromGitHub, pkgconfig, intltool, libtool, gnome3, glib,
+  gtk3, libgtop, bamf, json-glib, libcanberra-gtk3, libxkbcommon,
+  libstartup_notification, deepin-wallpapers, deepin-desktop-schemas,
+  deepin }:
 
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "deepin-metacity";
-  version = "3.22.22";
+  version = "3.22.24";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "0gr10dv8vphla6z7zqiyyg3n3ag4rrlz43c4kr7fd5xwx2bfvp3d";
+    sha256 = "1im0wz1zlxiag4kpp5d4hv0aa0ybr4bizarr3903hrqv0lp46hyx";
   };
 
   nativeBuildInputs = [
     pkgconfig
     intltool
     libtool
+    glib.dev
     gnome3.gnome-common
-    gnome3.glib.dev
   ];
 
   buildInputs = [
@@ -41,7 +42,7 @@ stdenv.mkDerivation rec {
       -e 's;/usr/share/backgrounds/default_background.jpg;${deepin-wallpapers}/share/backgrounds/deepin/desktop.jpg;'
   '';
 
-  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
 
   configureFlags = [ "--disable-themes-documentation" ];
 
diff --git a/pkgs/desktops/deepin/deepin-movie-reborn/default.nix b/pkgs/desktops/deepin/deepin-movie-reborn/default.nix
index 3d195f8f1c0..8a675ca1169 100644
--- a/pkgs/desktops/deepin/deepin-movie-reborn/default.nix
+++ b/pkgs/desktops/deepin/deepin-movie-reborn/default.nix
@@ -5,13 +5,13 @@
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "deepin-movie-reborn";
-  version = "3.2.14";
+  version = "3.2.21";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "1i9sdg2p6qp57rqzrnjbxnqj3mg1qggzyq3yykw271vs8h85a707";
+    sha256 = "09a4sirbdxnrwj9ww2v7b1s9ylsincqzpqm2zisny9zxy22fm8s9";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/deepin/deepin-mutter/default.nix b/pkgs/desktops/deepin/deepin-mutter/default.nix
index d2e29cd2cb8..fc26440a3ef 100644
--- a/pkgs/desktops/deepin/deepin-mutter/default.nix
+++ b/pkgs/desktops/deepin/deepin-mutter/default.nix
@@ -1,17 +1,19 @@
-{ stdenv, fetchFromGitHub, pkgconfig, intltool, libtool, gnome3, gtk3, xorg,
-  libcanberra-gtk3, upower, xkeyboard_config, libxkbcommon,
-  libstartup_notification, libinput, cogl, clutter, systemd, deepin }:
+{ stdenv, fetchFromGitHub, pkgconfig, intltool, libtool, gnome3, gtk3,
+  xorg, libcanberra-gtk3, upower, xkeyboard_config, libxkbcommon,
+  libstartup_notification, libinput, libgudev, cogl, clutter, systemd,
+  gsettings-desktop-schemas, deepin-desktop-schemas, wrapGAppsHook,
+  deepin }:
 
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "deepin-mutter";
-  version = "3.20.35";
+  version = "3.20.38";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "0mwk06kgw8qp8rg1j6px1zlya4x5rr9llax0qks59j56b3m9yim7";
+    sha256 = "1aq7606sgn2c6n8wfgxdryw3lprc4va0zjc0r65798w5656fdi31";
   };
 
   nativeBuildInputs = [
@@ -19,27 +21,32 @@ stdenv.mkDerivation rec {
     intltool
     libtool
     gnome3.gnome-common
+    wrapGAppsHook
+    deepin.setupHook
   ];
 
   buildInputs = [
-    gtk3
+    clutter
+    cogl
+    deepin-desktop-schemas
     gnome3.gnome-desktop
-    gnome3.gsettings-desktop-schemas
-    gnome3.libgudev
     gnome3.zenity
-    upower
-    xorg.libxkbfile
-    libxkbcommon
+    gsettings-desktop-schemas
+    gtk3
     libcanberra-gtk3
-    libstartup_notification
+    libgudev
     libinput
-    xkeyboard_config
-    cogl
-    clutter
+    libstartup_notification
+    libxkbcommon
     systemd
+    upower
+    xkeyboard_config
+    xorg.libxkbfile
   ];
 
-  enableParallelBuilding = true;
+  postPatch = ''
+    searchHardCodedPaths
+  '';
 
   configureFlags = [
     "--enable-native-backend"
@@ -50,6 +57,8 @@ stdenv.mkDerivation rec {
     NOCONFIGURE=1 ./autogen.sh
   '';
 
+  enableParallelBuilding = true;
+
   passthru.updateScript = deepin.updateScript { inherit name; };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/deepin/deepin-sound-theme/default.nix b/pkgs/desktops/deepin/deepin-sound-theme/default.nix
index bb004372497..bb752cc1ca9 100644
--- a/pkgs/desktops/deepin/deepin-sound-theme/default.nix
+++ b/pkgs/desktops/deepin/deepin-sound-theme/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     sha256 = "1sw4nrn7q7wk1hpicm05apyc0mihaw42iqm52wb8ib8gm1qiylr9";
   };
 
-  makeFlags = [ "PREFIX=$(out)" ];
+  makeFlags = [ "PREFIX=${placeholder ''out''}" ];
 
   passthru.updateScript = deepin.updateScript { inherit name; };
 
diff --git a/pkgs/desktops/deepin/deepin-terminal/default.nix b/pkgs/desktops/deepin/deepin-terminal/default.nix
index 70e15441436..74337974acc 100644
--- a/pkgs/desktops/deepin/deepin-terminal/default.nix
+++ b/pkgs/desktops/deepin/deepin-terminal/default.nix
@@ -1,19 +1,19 @@
 { stdenv, fetchurl, fetchFromGitHub, pkgconfig, cmake, ninja, vala,
-  gettext, gobject-introspection, at-spi2-core, dbus, epoxy, expect,
-  gtk3, json-glib, libXdmcp, libgee, libpthreadstubs, librsvg,
-  libsecret, libtasn1, libxcb, libxkbcommon, p11-kit, pcre, vte, wnck,
-  deepin-menu, deepin-shortcut-viewer, deepin }:
+  gettext, at-spi2-core, dbus, epoxy, expect, gtk3, json-glib,
+  libXdmcp, libgee, libpthreadstubs, librsvg, libsecret, libtasn1,
+  libxcb, libxkbcommon, p11-kit, pcre, vte, wnck, libselinux,
+  libsepol, utillinux, deepin-menu, deepin-shortcut-viewer, deepin }:
 
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "deepin-terminal";
-  version = "3.0.10.2";
+  version = "3.2.1.2";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = "deepin-terminal";
     rev = version;
-    sha256 = "0ylhp8q9kfdq9l69drawjaf0q8vcqyflb2a3zfnwbnf06dlpvkz6";
+    sha256 = "0dj386csbiw0yqz9nj6ij0s4d0ak9lpq2bmsfs17bjkgdp0ayp90";
   };
 
   nativeBuildInputs = [
@@ -22,7 +22,8 @@ stdenv.mkDerivation rec {
     ninja
     vala
     gettext
-    gobject-introspection # For setup hook
+    libselinux libsepol utillinux # required by gio
+    deepin.setupHook
   ];
 
   buildInputs = [
@@ -49,15 +50,19 @@ stdenv.mkDerivation rec {
   ];
 
   postPatch = ''
-    patchShebangs .
+    searchHardCodedPaths
   '';
 
-  enableParallelBuilding = true;
+  cmakeFlags = [
+    "-DTEST_BUILD=OFF"
+    "-DUSE_VENDOR_LIB=OFF"
+    "-DVERSION=${version}"
+  ];
 
   passthru.updateScript = deepin.updateScript { inherit name; };
 
   meta = with stdenv.lib; {
-    description = "The default terminal emulation for Deepin";
+    description = "Default terminal emulator for Deepin";
     longDescription = ''
       Deepin terminal, it sharpens your focus in the world of command line!
       It is an advanced terminal emulator with workspace, multiple
diff --git a/pkgs/desktops/deepin/deepin-wallpapers/default.nix b/pkgs/desktops/deepin/deepin-wallpapers/default.nix
index 8f04bd48218..f99974ba9c2 100644
--- a/pkgs/desktops/deepin/deepin-wallpapers/default.nix
+++ b/pkgs/desktops/deepin/deepin-wallpapers/default.nix
@@ -3,19 +3,21 @@
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "deepin-wallpapers";
-  version = "1.7.5";
+  version = "1.7.7";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = "deepin-wallpapers";
     rev = version;
-    sha256 = "0mfjkh81ci0gjwmgycrh32by7v9b73nyvyjbqd29ccpb8bpyyakn";
+    sha256 = "09cfnxbpms98ibqbi4xd51181q3az5n8rmndcdr9w12kyzniz7xv";
   };
 
-  nativeBuildInputs = [ dde-api.bin ];
+  nativeBuildInputs = [ dde-api deepin.setupHook ];
 
   postPatch = ''
-    sed -i -e "s:/usr/lib/deepin-api:${dde-api.bin}/lib/deepin-api:" Makefile
+    searchHardCodedPaths # debugging
+
+    sed -i -e "s:/usr/lib/deepin-api:${dde-api}/lib/deepin-api:" Makefile
     sed -i -e "s:/usr/share/wallpapers:$out/share/wallpapers:" Makefile
   '';
 
diff --git a/pkgs/desktops/deepin/deepin-wm/default.nix b/pkgs/desktops/deepin/deepin-wm/default.nix
index ea2f06aae60..d1ae0557aaa 100644
--- a/pkgs/desktops/deepin/deepin-wm/default.nix
+++ b/pkgs/desktops/deepin/deepin-wm/default.nix
@@ -1,49 +1,55 @@
 { stdenv, fetchFromGitHub, pkgconfig, intltool, libtool, vala, gnome3,
-  bamf, clutter-gtk, pantheon, libcanberra-gtk3, libwnck3,
-  deepin-mutter, deepin-wallpapers, deepin-desktop-schemas,
-  hicolor-icon-theme, deepin }:
+  bamf, clutter-gtk, pantheon, libgee, libcanberra-gtk3, libwnck3,
+  deepin-menu, deepin-mutter, deepin-wallpapers,
+  deepin-desktop-schemas, wrapGAppsHook, deepin }:
 
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "deepin-wm";
-  version = "1.9.34";
+  version = "1.9.37";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "13hydcalifdc6723k8l4pk905y9sxic5x1fqww0fyx7j6b3hm13f";
+    sha256 = "1xd2x0kyav2cxnk0bybl7lrmak1r2468slxz5a6anrdriw9l10gi";
   };
 
   nativeBuildInputs = [
     pkgconfig
     intltool
     libtool
-    gnome3.gnome-common
     vala
+    gnome3.gnome-common
+    wrapGAppsHook
+    deepin.setupHook
   ];
 
   buildInputs = [
-    gnome3.gnome-desktop
-    gnome3.libgee
     bamf
     clutter-gtk
-    pantheon.granite
-    libcanberra-gtk3
-    libwnck3
+    deepin-desktop-schemas
+    deepin-menu
     deepin-mutter
     deepin-wallpapers
-    deepin-desktop-schemas
-    hicolor-icon-theme
+    gnome3.gnome-desktop
+    libcanberra-gtk3
+    libgee
+    libwnck3
+    pantheon.granite
   ];
 
   postPatch = ''
-    sed -i src/Background/BackgroundSource.vala \
-      -e 's;/usr/share/backgrounds/default_background.jpg;${deepin-wallpapers}/share/backgrounds/deepin/desktop.jpg;'
+    searchHardCodedPaths
+    fixPath ${deepin-wallpapers} /usr/share/backgrounds src/Background/BackgroundSource.vala
+    # fix background path
+    sed -i 's|default_background.jpg|deepin/desktop.jpg|' src/Background/BackgroundSource.vala
   '';
 
+  NIX_CFLAGS_COMPILE = "-DWNCK_I_KNOW_THIS_IS_UNSTABLE";
+
   preConfigure = ''
-    ./autogen.sh
+    NOCONFIGURE=1 ./autogen.sh
   '';
 
   enableParallelBuilding = true;
diff --git a/pkgs/desktops/deepin/default.nix b/pkgs/desktops/deepin/default.nix
index 4fe787bc5d4..9f3613fccf0 100644
--- a/pkgs/desktops/deepin/default.nix
+++ b/pkgs/desktops/deepin/default.nix
@@ -2,12 +2,15 @@
 
 let
   packages = self: with self; {
+    setupHook = ./setup-hook.sh;
+
     updateScript = callPackage ./update.nix { };
 
     dbus-factory = callPackage ./dbus-factory { };
     dde-api = callPackage ./dde-api { };
     dde-calendar = callPackage ./dde-calendar { };
     dde-daemon = callPackage ./dde-daemon { };
+    dde-polkit-agent = callPackage ./dde-polkit-agent { };
     dde-qt-dbus-factory = callPackage ./dde-qt-dbus-factory { };
     dde-session-ui = callPackage ./dde-session-ui { };
     deepin-desktop-base = callPackage ./deepin-desktop-base { };
@@ -23,11 +26,11 @@ let
     deepin-shortcut-viewer = callPackage ./deepin-shortcut-viewer { };
     deepin-sound-theme = callPackage ./deepin-sound-theme { };
     deepin-terminal = callPackage ./deepin-terminal {
-      inherit (pkgs.gnome3) libgee;
       wnck = pkgs.libwnck3;
     };
     deepin-wallpapers = callPackage ./deepin-wallpapers { };
     deepin-wm = callPackage ./deepin-wm { };
+    dpa-ext-gnomekeyring = callPackage ./dpa-ext-gnomekeyring { };
     dtkcore = callPackage ./dtkcore { };
     dtkwm = callPackage ./dtkwm { };
     dtkwidget = callPackage ./dtkwidget { };
diff --git a/pkgs/desktops/deepin/dpa-ext-gnomekeyring/default.nix b/pkgs/desktops/deepin/dpa-ext-gnomekeyring/default.nix
new file mode 100644
index 00000000000..4baa2262cd6
--- /dev/null
+++ b/pkgs/desktops/deepin/dpa-ext-gnomekeyring/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, pkgconfig, qmake, qttools, gnome3,
+  dde-polkit-agent, deepin }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "dpa-ext-gnomekeyring";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "168j42nwyw7vcgwc0fha2pjpwwlgir70fq1hns4ia1dkdqa1nhzw";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    qmake
+    qttools
+    deepin.setupHook
+  ];
+
+  buildInputs = [
+    dde-polkit-agent
+    gnome3.libgnome-keyring
+  ];
+
+  postPatch = ''
+    searchHardCodedPaths
+    patchShebangs translate_generation.sh
+    fixPath $out /usr dpa-ext-gnomekeyring.pro gnomekeyringextention.cpp
+  '';
+
+  passthru.updateScript = deepin.updateScript { inherit name; };
+
+  meta = with stdenv.lib; {
+    description = "GNOME keyring extension for dde-polkit-agent";
+    homepage = https://github.com/linuxdeepin/dpa-ext-gnomekeyring;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/pkgs/desktops/deepin/dtkcore/default.nix b/pkgs/desktops/deepin/dtkcore/default.nix
index 9904c58128f..4081a40a96e 100644
--- a/pkgs/desktops/deepin/dtkcore/default.nix
+++ b/pkgs/desktops/deepin/dtkcore/default.nix
@@ -3,13 +3,13 @@
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "dtkcore";
-  version = "2.0.9.8";
+  version = "2.0.10";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "06jj5gpy2qbmc21nf0fnbvgw7nbjjgvzx7m2vg9byw5il8l4g22h";
+    sha256 = "0dwpq6c38gaa95mgjnwj3vjz57n0cz6jfk950xi6s9ww2f4g6kq7";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/deepin/dtkwidget/default.nix b/pkgs/desktops/deepin/dtkwidget/default.nix
index b61f31e40ee..b55a5fbc9fe 100644
--- a/pkgs/desktops/deepin/dtkwidget/default.nix
+++ b/pkgs/desktops/deepin/dtkwidget/default.nix
@@ -5,13 +5,13 @@
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "dtkwidget";
-  version = "2.0.9.10";
+  version = "2.0.10";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "0757dzy82bfv97b1gzkwa9zx3jzfbap20v3r1h7lkfcfw95410iw";
+    sha256 = "11a7yirfkcj3rq7va9av4m1pr22mq1yx1j9k18xrqv36n0rlbrr6";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/deepin/go-dbus-factory/default.nix b/pkgs/desktops/deepin/go-dbus-factory/default.nix
index 01d504eda89..ad2926fa403 100644
--- a/pkgs/desktops/deepin/go-dbus-factory/default.nix
+++ b/pkgs/desktops/deepin/go-dbus-factory/default.nix
@@ -3,16 +3,16 @@
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "go-dbus-factory";
-  version = "0.0.7.1";
+  version = "0.4.0";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "0gj2xxv45gh7wr5ry3mcsi46kdsyq9nbd7znssn34kapiv40ixcx";
+    sha256 = "1i1ymi2qpcbf4d6rnfzrbq5n2vwnn8dvbq9xlw7jls3jpr3d5r00";
   };
 
-  makeFlags = [ "PREFIX=$(out)" ];
+  makeFlags = [ "PREFIX=${placeholder ''out''}" ];
 
   postPatch = ''
     sed -i -e 's:/share/gocode:/share/go:' Makefile
diff --git a/pkgs/desktops/deepin/go-dbus-generator/default.nix b/pkgs/desktops/deepin/go-dbus-generator/default.nix
index 1e3da129a61..92cf3960c73 100644
--- a/pkgs/desktops/deepin/go-dbus-generator/default.nix
+++ b/pkgs/desktops/deepin/go-dbus-generator/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   ];
 
   makeFlags = [
-    "PREFIX=$(out)"
+    "PREFIX=${placeholder ''out''}"
     "GOCACHE=$(TMPDIR)/go-cache"
   ];
 
diff --git a/pkgs/desktops/deepin/go-gir-generator/default.nix b/pkgs/desktops/deepin/go-gir-generator/default.nix
index bd979b31784..03c906585e3 100644
--- a/pkgs/desktops/deepin/go-gir-generator/default.nix
+++ b/pkgs/desktops/deepin/go-gir-generator/default.nix
@@ -4,23 +4,15 @@
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "go-gir-generator";
-  version = "1.1.0";
+  version = "2.0.0";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "0grp4ffy3vmlknzmymnxq1spwshff2ylqsw82pj4y2v2fcvnqfvb";
+    sha256 = "0d93qzp3dlia5d1yxw0rwca76qk3jyamj9xzmk13vzig8zw0jx16";
   };
 
-  patches = [
-    # fix: dde-api build error with gobject-introspection 1.58+
-    (fetchurl {
-      url = https://github.com/linuxdeepin/go-gir-generator/commit/a7ab229201e28d1be727f5021b3588fa4a1acf5f.patch;
-      sha256 = "13ywalwkjg8wwvd0pvmc2rv1h38airyvimdn9jfb5wis9xm48401";
-    })
-  ];
-
   nativeBuildInputs = [
     pkgconfig
     go
@@ -36,7 +28,7 @@ stdenv.mkDerivation rec {
   '';
 
   makeFlags = [
-    "PREFIX=$(out)"
+    "PREFIX=${placeholder ''out''}"
     "GOCACHE=$(TMPDIR)/go-cache"
   ];
 
diff --git a/pkgs/desktops/deepin/go-lib/default.nix b/pkgs/desktops/deepin/go-lib/default.nix
index 684f1dd7f32..41315c44090 100644
--- a/pkgs/desktops/deepin/go-lib/default.nix
+++ b/pkgs/desktops/deepin/go-lib/default.nix
@@ -4,13 +4,13 @@
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "go-lib";
-  version = "1.3.0";
+  version = "1.10.0";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "0g84v1adnnyqc1mv45n3wlvnivkm1fi8ywszzgwx8irl3iddfvxv";
+    sha256 = "090l33y79gdj2xy1bhk2ksl6hvmsfhmx0bhygm4y4d0iqckf2x2m";
   };
 
   buildInputs = [
@@ -21,10 +21,12 @@ stdenv.mkDerivation rec {
     mobile-broadband-provider-info
   ];
 
-  makeFlags = [
-    "PREFIX=$(out)"
-    "GOSITE_DIR=$(out)/share/go"
-  ];
+  installPhase = ''
+    mkdir -p $out/share/go/src/pkg.deepin.io/lib
+    cp -a * $out/share/go/src/pkg.deepin.io/lib
+
+    rm -r $out/share/go/src/pkg.deepin.io/lib/debian
+  '';
 
   passthru.updateScript = deepin.updateScript { inherit name; };
 
diff --git a/pkgs/desktops/deepin/qt5dxcb-plugin/default.nix b/pkgs/desktops/deepin/qt5dxcb-plugin/default.nix
index c4ce0ca563b..7d2c8916508 100644
--- a/pkgs/desktops/deepin/qt5dxcb-plugin/default.nix
+++ b/pkgs/desktops/deepin/qt5dxcb-plugin/default.nix
@@ -4,13 +4,13 @@
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "qt5dxcb-plugin";
-  version = "1.1.13";
+  version = "1.1.25";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "12lvh3agw3qdviqf32brmzba5kscnj5al5jhc08lq69a9kmip05x";
+    sha256 = "1nadmj1hdpw4n3kpk3dlx22bmxdli66abhjl73hwrbvszmmcm9vp";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/deepin/qt5integration/default.nix b/pkgs/desktops/deepin/qt5integration/default.nix
index 80915637722..634bac5cf97 100644
--- a/pkgs/desktops/deepin/qt5integration/default.nix
+++ b/pkgs/desktops/deepin/qt5integration/default.nix
@@ -5,13 +5,13 @@
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "qt5integration";
-  version = "0.3.6";
+  version = "0.3.8";
 
   src = fetchFromGitHub {
     owner = "linuxdeepin";
     repo = pname;
     rev = version;
-    sha256 = "1v9whlqn07c5c8xnaiicdshj9n88a667gfbn8y8bk5bfylilfzcy";
+    sha256 = "12d6iv2x0q2n73rscma30q31nh7h26gmhlf665gkgl2j825hlx5n";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/deepin/setup-hook.sh b/pkgs/desktops/deepin/setup-hook.sh
new file mode 100755
index 00000000000..15fe5be1538
--- /dev/null
+++ b/pkgs/desktops/deepin/setup-hook.sh
@@ -0,0 +1,53 @@
+# Helper functions for deepin packaging
+
+searchHardCodedPaths() {
+    # looks for ocurrences of hard coded paths in given (current)
+    # directory and command invocations for the purpose of debugging a
+    # derivation
+
+    local dir=$1
+
+    echo ----------- looking for command invocations
+    grep --color=always -r -E '\<(ExecStart|Exec|startDetached|execute|exec\.(Command|LookPath))\>' $dir || true
+
+    echo ----------- looking for hard coded paths
+    grep --color=always -r -E '/(usr|bin|sbin|etc|var|opt)\>' $dir || true
+
+    echo ----------- done
+}
+
+fixPath() {
+    # Usage:
+    #
+    #   fixPath <parent dir> <path> <files>
+    #
+    # replaces occurences of <path> by <parent_dir><path> in <files>
+    # removing /usr from the start of <path> if present
+
+    local parentdir=$1
+    local path=$2
+    local newpath=$parentdir$(echo $path | sed "s,^/usr,,")
+    local files=("${@:3}")
+    echo ======= grep --color=always "${path}" "${files[@]}"
+    grep --color=always "${path}" "${files[@]}"
+    echo +++++++ sed -i -e "s,$path,$newpath,g" "${files[@]}"
+    sed -i -e "s,$path,$newpath,g" "${files[@]}"
+}
+
+searchForUnresolvedDLL() {
+    # Usage:
+    #
+    #   searchForUnresolvedDLL <dir>
+    #
+    # looks in <dir> for executables with unresolved dynamic library paths
+
+    local dir="$1"
+    echo ======= Looking for executables with unresolved dynamic library dependencies
+    echo $dir
+    for f in $(find -L "$dir" -type f -executable); do
+      if (ldd $f | grep -q "not found"); then
+        echo $f
+        ldd $f | grep --color=always "not found"
+      fi
+    done
+}
diff --git a/pkgs/desktops/deepin/update.nix b/pkgs/desktops/deepin/update.nix
index 22a6acb8ce3..089d9289827 100644
--- a/pkgs/desktops/deepin/update.nix
+++ b/pkgs/desktops/deepin/update.nix
@@ -1,5 +1,5 @@
 { stdenv, lib, writeScript, coreutils, curl, gnugrep, gnused, jq, common-updater-scripts, nix }:
-{ name, ignored-versions ? "^2014\\.|^v[0-9]+" }:
+{ name, ignored-versions ? "^2014(\\.|rc)|^v[0-9]+" }:
 
 let
   nameAndVersion = builtins.parseDrvName name;
diff --git a/pkgs/desktops/gnome-3/core/mutter/3.28.nix b/pkgs/desktops/gnome-3/core/mutter/3.28.nix
index 2988dd1b47e..30d082e07e2 100644
--- a/pkgs/desktops/gnome-3/core/mutter/3.28.nix
+++ b/pkgs/desktops/gnome-3/core/mutter/3.28.nix
@@ -1,18 +1,28 @@
-{ fetchurl, stdenv, fetchpatch, pkgconfig, gnome3, intltool, gobject-introspection, upower, cairo
+{ fetchFromGitLab, stdenv, substituteAll, pkgconfig, gnome3, intltool, gobject-introspection, upower, cairo
 , glib, gtk3, pango, cogl, clutter, libstartup_notification, zenity, libcanberra-gtk3
-, gsettings-desktop-schemas, gnome-desktop
+, gsettings-desktop-schemas, gnome-desktop, wrapGAppsHook
 , libtool, makeWrapper, xkeyboard_config, libxkbfile, libxkbcommon, libXtst, libinput
-, geocode-glib, pipewire, libgudev, libwacom, xwayland, autoreconfHook }:
+, geocode-glib, libgudev, libwacom, xwayland, autoreconfHook }:
 
 stdenv.mkDerivation rec {
-  name = "mutter-${version}";
+  pname = "mutter";
   version = "3.28.3";
 
-  src = fetchurl {
-    url = "mirror://gnome/sources/mutter/3.28/${name}.tar.xz";
-    sha256 = "0vq3rmq20d6b1mi6sf67wkzqys6hw5j7n7fd4hndcp19d5i26149";
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = pname;
+    rev = "4af8d9d4752a94612a98d619e65828f0070a7b0e"; # HEAD of https://gitlab.gnome.org/GNOME/mutter/tree/gnome-3-28
+    sha256 = "1rmc1bf80yq776xhygi1jzgia1y44j2mr2n94vlxgzqc0whamx2v";
   };
 
+  patches = [
+    (substituteAll {
+      src = ./fix-paths-328.patch;
+      inherit zenity;
+    })
+  ];
+
   configureFlags = [
     "--with-x"
     "--disable-static"
@@ -31,21 +41,16 @@ stdenv.mkDerivation rec {
     libXtst
   ];
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig intltool libtool makeWrapper ];
+  nativeBuildInputs = [ autoreconfHook pkgconfig intltool libtool wrapGAppsHook ];
 
   buildInputs = [
     glib gobject-introspection gtk3 gsettings-desktop-schemas upower
     gnome-desktop cairo pango cogl clutter zenity libstartup_notification
     geocode-glib libinput libgudev libwacom
     libcanberra-gtk3 zenity xkeyboard_config libxkbfile
-    libxkbcommon pipewire
+    libxkbcommon
   ];
 
-  preFixup = ''
-    wrapProgram "$out/bin/mutter" \
-      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
-  '';
-
   enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/core/mutter/fix-paths-328.patch b/pkgs/desktops/gnome-3/core/mutter/fix-paths-328.patch
new file mode 100644
index 00000000000..6c40624a55d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/mutter/fix-paths-328.patch
@@ -0,0 +1,13 @@
+diff --git a/src/core/util.c b/src/core/util.c
+index 5b8de18c7..546352a95 100644
+--- a/src/core/util.c
++++ b/src/core/util.c
+@@ -635,7 +635,7 @@ meta_show_dialog (const char *type,
+
+   args = g_ptr_array_new ();
+
+-  append_argument (args, "zenity");
++  append_argument (args, "@zenity@/bin/zenity");
+   append_argument (args, type);
+
+   if (display)
diff --git a/pkgs/desktops/pantheon/apps/elementary-camera/default.nix b/pkgs/desktops/pantheon/apps/elementary-camera/default.nix
index 2e90a96411a..90f326fb826 100644
--- a/pkgs/desktops/pantheon/apps/elementary-camera/default.nix
+++ b/pkgs/desktops/pantheon/apps/elementary-camera/default.nix
@@ -4,7 +4,7 @@
 
 stdenv.mkDerivation rec {
   pname = "camera";
-  version = "1.0.3";
+  version = "1.0.4";
 
   name = "elementary-${pname}-${version}";
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     owner = "elementary";
     repo = pname;
     rev = version;
-    sha256 = "05rjymflhwbkw8yc57rgi9n7lrhf4dpvfvlifdnazyqn9iiaxc46";
+    sha256 = "1p532f961cjdg7szmxw7hw3av9v342hv5rx7in3bbhlc7adxflyc";
   };
 
   passthru = {
diff --git a/pkgs/desktops/pantheon/apps/elementary-files/default.nix b/pkgs/desktops/pantheon/apps/elementary-files/default.nix
index 9855a1394e5..d224dbce789 100644
--- a/pkgs/desktops/pantheon/apps/elementary-files/default.nix
+++ b/pkgs/desktops/pantheon/apps/elementary-files/default.nix
@@ -5,7 +5,7 @@
 
 stdenv.mkDerivation rec {
   pname = "files";
-  version = "4.1.5";
+  version = "4.1.6";
 
   name = "elementary-${pname}-${version}";
 
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
     owner = "elementary";
     repo = pname;
     rev = version;
-    sha256 = "0z0pisg7py2k6i31v18z5fgpj8x64m1s5clfq4vbbjrcjwx6dcx5";
+    sha256 = "1c17d5lvpzyqd7mmzyfms80am46s566xr1r7b27rgv9w7vpzpgm0";
   };
 
   passthru = {
diff --git a/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix b/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix
index 01fe35e4a8e..19bf4ce098b 100644
--- a/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix
+++ b/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix
@@ -4,7 +4,7 @@
 
 stdenv.mkDerivation rec {
   pname = "terminal";
-  version = "5.3.3";
+  version = "5.3.4";
 
   name = "elementary-${pname}-${version}";
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     owner = "elementary";
     repo = pname;
     rev = version;
-    sha256 = "1rhqfq5dn913g551ribycid4k8add2lanxkkqpv6zzdgvah26ni8";
+    sha256 = "08vwgd385j7cbi7c8442sjygzw9qy2phsi5lva4jaxwm8l15hk86";
   };
 
   passthru = {
diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix
index e47dc4c4060..c661e4f2111 100644
--- a/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix
+++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-pantheon-shell";
-  version = "2.8.0";
+  version = "2.8.1";
 
   src = fetchFromGitHub {
     owner = "elementary";
     repo = pname;
     rev = version;
-    sha256 = "0yy821hl26jfd9hyigqi7nmaf30iww0lhg9qzcwlfzsvvfwnxagi";
+    sha256 = "1vrnzxqzl84k8gbrais4j1jyap10kvil4cr769jpr3q3bkbblwrw";
   };
 
   passthru = {
diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix
index e4d0db46923..baf5becd347 100644
--- a/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix
+++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-sound";
-  version = "2.1.3";
+  version = "2.2.0";
 
   src = fetchFromGitHub {
     owner = "elementary";
     repo = pname;
     rev = version;
-    sha256 = "0dvxmjziifffa2rm7h43ca5grhlcpih3rgik50mz808mqfxr4l1q";
+    sha256 = "101a39v8fssc7s56cpi60zsggvw66y9gaxwjvawds928cll0yiy9";
   };
 
   passthru = {
diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/calendar-exec.patch b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/calendar-exec.patch
deleted file mode 100644
index 2370fbcd3cb..00000000000
--- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/calendar-exec.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/Widgets/calendar/Calendar.vala b/src/Widgets/calendar/Calendar.vala
-index 76443ca..d86bd44 100644
---- a/src/Widgets/calendar/Calendar.vala
-+++ b/src/Widgets/calendar/Calendar.vala
-@@ -19,7 +19,7 @@
-
- namespace DateTime.Widgets {
-     public class Calendar : Gtk.Box {
--        private const string CALENDAR_EXEC = "/usr/bin/io.elementary.calendar";
-+        private const string CALENDAR_EXEC = "@elementary-calendar@";
-
-         ControlHeader heading;
-         CalendarView cal;
diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix
index ee5cd511818..5fa95c75ccc 100644
--- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix
+++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix
@@ -43,15 +43,16 @@ stdenv.mkDerivation rec {
   ];
 
   patches = [
-    (substituteAll {
-      src = ./calendar-exec.patch;
-      elementary-calendar = "${elementary-calendar}/bin/io.elementary.calendar";
-    })
     # Use "clock-format" GSettings key that's been moved to granite
     (fetchpatch {
       url = "https://src.fedoraproject.org/rpms/wingpanel-indicator-datetime/raw/c8d515b76aa812c141212d5515621a6febd781a3/f/00-move-clock-format-settings-to-granite.patch";
       sha256 = "1sq3aw9ckkm057rnrclnw9lyrxbpl37fyzfnbixi2q3ypr70n880";
     })
+    # See: https://github.com/elementary/wingpanel-indicator-datetime/pull/117
+    (fetchpatch {
+      url = "https://github.com/elementary/wingpanel-indicator-datetime/commit/4859e72a52d8dac5cad87b192fc912fb013b0ecd.patch";
+      sha256 = "0jfhb5sax4sivdfx7il1rc1dvhy0yfv27qhvwbdy0hza9wf8q9k0";
+    })
   ];
 
   PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel";
@@ -61,6 +62,11 @@ stdenv.mkDerivation rec {
     patchShebangs meson/post_install.py
   '';
 
+  # launches elementary-calendar on selection
+  preFixup = ''
+     gappsWrapperArgs+=( --prefix PATH : "${elementary-calendar}/bin" )
+  '';
+
   meta = with stdenv.lib; {
     description = "Date & Time Indicator for Wingpanel";
     homepage = https://github.com/elementary/wingpanel-indicator-datetime;
diff --git a/pkgs/desktops/plasma-5/fetch.sh b/pkgs/desktops/plasma-5/fetch.sh
index 79c29726cf5..cd2fa293e7d 100644
--- a/pkgs/desktops/plasma-5/fetch.sh
+++ b/pkgs/desktops/plasma-5/fetch.sh
@@ -1 +1 @@
-WGET_ARGS=( https://download.kde.org/stable/plasma/5.15.3/ -A '*.tar.xz' )
+WGET_ARGS=( https://download.kde.org/stable/plasma/5.15.3/ )