about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops')
-rw-r--r--nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-mime-cache-paths.patch323
-rw-r--r--nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-paths.patch89
-rw-r--r--nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.pixmaps-paths.patch38
-rw-r--r--nixpkgs/pkgs/desktops/deepin/dde-file-manager/default.nix251
-rw-r--r--nixpkgs/pkgs/desktops/deepin/deepin-movie-reborn/default.nix2
-rw-r--r--nixpkgs/pkgs/desktops/deepin/default.nix1
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix1
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/default.nix8
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnustep/libobjc2/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix32
-rw-r--r--nixpkgs/pkgs/desktops/mate/caja-dropbox/fix-cli-paths.patch11
-rw-r--r--nixpkgs/pkgs/desktops/mate/caja-with-extensions/default.nix20
-rw-r--r--nixpkgs/pkgs/desktops/mate/caja/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/mate/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix6
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix7
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/granite/default.nix2
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/services/cerbere/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix9
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/global-backlight-helper.patch30
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix3
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix3
61 files changed, 850 insertions, 140 deletions
diff --git a/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-mime-cache-paths.patch b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-mime-cache-paths.patch
new file mode 100644
index 000000000000..253a67b04ec7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-mime-cache-paths.patch
@@ -0,0 +1,323 @@
+From 29f4ad88e2294ae70b10180e7361d135c4e5c896 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com>
+Date: Mon, 13 May 2019 00:09:42 -0300
+Subject: [PATCH 2/2] Use XDG to look for mime cache
+
+---
+ .../shutil/mimesappsmanager.cpp               | 230 ++++++++++--------
+ .../shutil/mimesappsmanager.h                 |   6 +-
+ 2 files changed, 125 insertions(+), 111 deletions(-)
+
+diff --git a/dde-file-manager-lib/shutil/mimesappsmanager.cpp b/dde-file-manager-lib/shutil/mimesappsmanager.cpp
+index c9e53630..7a21df51 100644
+--- a/dde-file-manager-lib/shutil/mimesappsmanager.cpp
++++ b/dde-file-manager-lib/shutil/mimesappsmanager.cpp
+@@ -552,14 +552,20 @@ QString MimesAppsManager::getMimeAppsCacheFile()
+     return QString("%1/%2").arg(DFMStandardPaths::location(DFMStandardPaths::CachePath), "MimeApps.json");
+ }
+ 
+-QString MimesAppsManager::getMimeInfoCacheFilePath()
++QStringList MimesAppsManager::getMimeInfoCacheFilePath()
+ {
+-    return "/usr/share/applications/mimeinfo.cache";
++    QStringList paths;
++    for (const QString dir : getMimeInfoCacheFileRootPath() )
++       paths.append(dir + QDir::separator() + "mimeinfo.cache");
++    qDebug() << "getMimeInfoCacheFilePath: " << paths;
++    return paths;
+ }
+ 
+-QString MimesAppsManager::getMimeInfoCacheFileRootPath()
++QStringList MimesAppsManager::getMimeInfoCacheFileRootPath()
+ {
+-    return "/usr/share/applications";
++    QStringList paths = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
++    qDebug() << "getMimeInfoCacheFileRootPath: " << paths;
++    return paths;
+ }
+ 
+ QString MimesAppsManager::getDesktopFilesCacheFile()
+@@ -574,23 +580,27 @@ QString MimesAppsManager::getDesktopIconsCacheFile()
+ 
+ QStringList MimesAppsManager::getDesktopFiles()
+ {
+-      QStringList desktopFiles;
++    QStringList desktopFiles;
+ 
+-      foreach (QString desktopFolder, getApplicationsFolders()) {
+-          QDirIterator it(desktopFolder, QStringList("*.desktop"),
+-                          QDir::Files | QDir::NoDotAndDotDot,
+-                          QDirIterator::Subdirectories);
+-          while (it.hasNext()) {
+-            it.next();
+-            desktopFiles.append(it.filePath());
+-          }
+-      }
+-      return desktopFiles;
++    foreach (QString desktopFolder, getApplicationsFolders()) {
++        QDirIterator it(desktopFolder, QStringList("*.desktop"),
++                        QDir::Files | QDir::NoDotAndDotDot,
++                        QDirIterator::Subdirectories);
++        while (it.hasNext()) {
++          it.next();
++          desktopFiles.append(it.filePath());
++        }
++    }
++    return desktopFiles;
+ }
+ 
+-QString MimesAppsManager::getDDEMimeTypeFile()
++QStringList MimesAppsManager::getDDEMimeTypeFile()
+ {
+-    return QString("%1/%2/%3").arg(getMimeInfoCacheFileRootPath(), "deepin", "dde-mimetype.list");
++    QStringList paths;
++    for (const QString path : getMimeInfoCacheFileRootPath())
++       paths.append(QString("%1/%2/%3").arg(path, "deepin", "dde-mimetype.list"));
++    qDebug() << "getDDEMimeTypeFile: " << paths;
++    return paths;
+ }
+ 
+ QMap<QString, DesktopFile> MimesAppsManager::getDesktopObjs()
+@@ -663,124 +673,128 @@ void MimesAppsManager::initMimeTypeApps()
+         MimeApps.insert(key, orderApps);
+     }
+ 
+-    //check mime apps from cache
+-    QFile f(getMimeInfoCacheFilePath());
+-    if(!f.open(QIODevice::ReadOnly)){
+-        qDebug () << "failed to read mime info cache file:" << f.errorString();
+-        return;
+-    }
+-
+     QStringList audioDesktopList;
+     QStringList imageDeksopList;
+     QStringList textDekstopList;
+     QStringList videoDesktopList;
+ 
+-    while (!f.atEnd()) {
+-        QString data = f.readLine();
+-        QString _desktops = data.split("=").last();
+-        QString mimeType = data.split("=").first();
+-        QStringList desktops = _desktops.split(";");
+-
+-        foreach (const QString desktop, desktops) {
+-            if(desktop.isEmpty() || audioDesktopList.contains(desktop))
+-                continue;
++    //check mime apps from cache
++    for (const QString path : getMimeInfoCacheFilePath()) {
++        QFile f(path);
++        if(!f.open(QIODevice::ReadOnly)){
++            qDebug () << "failed to read mime info cache file:" << f.errorString();
++            return;
++        }
+ 
+-            if(mimeType.startsWith("audio")){
+-                if(!audioDesktopList.contains(desktop))
+-                    audioDesktopList << desktop;
+-            } else if(mimeType.startsWith("image")){
+-                if(!imageDeksopList.contains(desktop))
+-                    imageDeksopList << desktop;
+-            } else if(mimeType.startsWith("text")){
+-                if(!textDekstopList.contains(desktop))
+-                    textDekstopList << desktop;
+-            } else if(mimeType.startsWith("video")){
+-                if(!videoDesktopList.contains(desktop))
+-                    videoDesktopList << desktop;
++        while (!f.atEnd()) {
++            QString data = f.readLine();
++            QString _desktops = data.split("=").last();
++            QString mimeType = data.split("=").first();
++            QStringList desktops = _desktops.split(";");
++
++            foreach (const QString desktop, desktops) {
++                if(desktop.isEmpty() || audioDesktopList.contains(desktop))
++                    continue;
++
++                if(mimeType.startsWith("audio")){
++                    if(!audioDesktopList.contains(desktop))
++                        audioDesktopList << desktop;
++                } else if(mimeType.startsWith("image")){
++                    if(!imageDeksopList.contains(desktop))
++                        imageDeksopList << desktop;
++                } else if(mimeType.startsWith("text")){
++                    if(!textDekstopList.contains(desktop))
++                        textDekstopList << desktop;
++                } else if(mimeType.startsWith("video")){
++                    if(!videoDesktopList.contains(desktop))
++                        videoDesktopList << desktop;
++                }
+             }
+         }
++        f.close();
+     }
+-    f.close();
+ 
+-    const QString mimeInfoCacheRootPath = getMimeInfoCacheFileRootPath();
+-    foreach (QString desktop, audioDesktopList) {
+-        const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop);
+-        if(!QFile::exists(path))
+-            continue;
+-        DesktopFile df(path);
+-        AudioMimeApps.insert(path, df);
+-    }
++    for (const QString mimeInfoCacheRootPath : getMimeInfoCacheFileRootPath()) {
++        foreach (QString desktop, audioDesktopList) {
++            const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop);
++            if(!QFile::exists(path))
++                continue;
++            DesktopFile df(path);
++            AudioMimeApps.insert(path, df);
++        }
+ 
+-    foreach (QString desktop, imageDeksopList) {
+-        const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop);
+-        if(!QFile::exists(path))
+-            continue;
+-        DesktopFile df(path);
+-        ImageMimeApps.insert(path, df);
+-    }
++        foreach (QString desktop, imageDeksopList) {
++            const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop);
++            if(!QFile::exists(path))
++                continue;
++            DesktopFile df(path);
++            ImageMimeApps.insert(path, df);
++        }
+ 
+-    foreach (QString desktop, textDekstopList) {
+-        const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop);
+-        if(!QFile::exists(path))
+-            continue;
+-        DesktopFile df(path);
+-        TextMimeApps.insert(path, df);
+-    }
++        foreach (QString desktop, textDekstopList) {
++            const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop);
++            if(!QFile::exists(path))
++                continue;
++            DesktopFile df(path);
++            TextMimeApps.insert(path, df);
++        }
+ 
+-    foreach (QString desktop, videoDesktopList) {
+-        const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop);
+-        if(!QFile::exists(path))
+-            continue;
+-        DesktopFile df(path);
+-        VideoMimeApps.insert(path, df);
++        foreach (QString desktop, videoDesktopList) {
++            const QString path = QString("%1/%2").arg(mimeInfoCacheRootPath,desktop);
++            if(!QFile::exists(path))
++                continue;
++            DesktopFile df(path);
++            VideoMimeApps.insert(path, df);
++        }
+     }
+-
+     return;
+ }
+ 
+ void MimesAppsManager::loadDDEMimeTypes()
+ {
+-    QSettings settings(getDDEMimeTypeFile(), QSettings::IniFormat);
+-    qDebug() << settings.childGroups();
++    for (const QString path : getDDEMimeTypeFile()) {
++        QSettings settings(path, QSettings::IniFormat);
++        qDebug() << settings.childGroups();
+ 
+-    QFile file(getDDEMimeTypeFile());
+-    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+-        return;
+-    }
++        QFile file(path);
++        if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
++            continue;
++        }
++
++        // Read propeties
++        QTextStream in(&file);
++        QString desktopKey;
++        while (!in.atEnd()) {
+ 
+-    // Read propeties
+-    QTextStream in(&file);
+-    QString desktopKey;
+-    while (!in.atEnd()) {
++          // Read new line
++          QString line = in.readLine();
+ 
+-      // Read new line
+-      QString line = in.readLine();
++          // Skip empty line or line with invalid format
++          if (line.trimmed().isEmpty()) {
++            continue;
++          }
+ 
+-      // Skip empty line or line with invalid format
+-      if (line.trimmed().isEmpty()) {
+-        continue;
+-      }
++          // Read group
++          // NOTE: symbols '[' and ']' can be found not only in group names, but
++          // only group can start with '['
+ 
+-      // Read group
+-      // NOTE: symbols '[' and ']' can be found not only in group names, but
+-      // only group can start with '['
++          if (line.trimmed().startsWith("[") && line.trimmed().endsWith("]")) {
++                QString tmp = line.trimmed().replace("[", "").replace("]", "");
++                desktopKey = tmp;
++                continue;
++          }
+ 
+-      if (line.trimmed().startsWith("[") && line.trimmed().endsWith("]")) {
+-            QString tmp = line.trimmed().replace("[", "").replace("]", "");
+-            desktopKey = tmp;
+-            continue;
+-      }
+-
+-      // If we are in correct group and line contains assignment then read data
+-      int first_equal = line.indexOf('=');
+-      if (!desktopKey.isEmpty() && first_equal >= 0) {
+-            QString value = line.mid(first_equal + 1);
+-            QStringList mimetypes = value.split(";");
+-            DDE_MimeTypes.insert(desktopKey, mimetypes);
+-            desktopKey.clear();
++          // If we are in correct group and line contains assignment then read data
++          int first_equal = line.indexOf('=');
++          if (!desktopKey.isEmpty() && first_equal >= 0) {
++                QString value = line.mid(first_equal + 1);
++                QStringList mimetypes = value.split(";");
++                DDE_MimeTypes.insert(desktopKey, mimetypes);
++                desktopKey.clear();
++            }
+         }
++        file.close();
+     }
+-    file.close();
+ }
+ 
+ bool MimesAppsManager::lessByDateTime(const QFileInfo &f1, const QFileInfo &f2)
+diff --git a/dde-file-manager-lib/shutil/mimesappsmanager.h b/dde-file-manager-lib/shutil/mimesappsmanager.h
+index 223c80aa..00a61302 100644
+--- a/dde-file-manager-lib/shutil/mimesappsmanager.h
++++ b/dde-file-manager-lib/shutil/mimesappsmanager.h
+@@ -101,12 +101,12 @@ public:
+ 
+     static QStringList getApplicationsFolders();
+     static QString getMimeAppsCacheFile();
+-    static QString getMimeInfoCacheFilePath();
+-    static QString getMimeInfoCacheFileRootPath();
++    static QStringList getMimeInfoCacheFilePath();
++    static QStringList getMimeInfoCacheFileRootPath();
+     static QString getDesktopFilesCacheFile();
+     static QString getDesktopIconsCacheFile();
+     static QStringList getDesktopFiles();
+-    static QString getDDEMimeTypeFile();
++    static QStringList getDDEMimeTypeFile();
+     static QMap<QString, DesktopFile> getDesktopObjs();
+     static void initMimeTypeApps();
+     static void loadDDEMimeTypes();
+-- 
+2.21.0
+
diff --git a/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-paths.patch b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-paths.patch
new file mode 100644
index 000000000000..3ced15e7e5a4
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.fix-paths.patch
@@ -0,0 +1,89 @@
+From e68d983a6befd223087916cb3fe31baee77decc4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com>
+Date: Sun, 12 May 2019 08:50:07 -0300
+Subject: [PATCH 1/2] Use qt library to determine where to look for application
+ files
+
+---
+ dde-file-manager-lib/shutil/fileutils.cpp     | 34 ++++++++++++-------
+ .../shutil/mimesappsmanager.cpp               | 11 ++----
+ 2 files changed, 25 insertions(+), 20 deletions(-)
+
+diff --git a/dde-file-manager-lib/shutil/fileutils.cpp b/dde-file-manager-lib/shutil/fileutils.cpp
+index ae8120d3..d6a0573a 100644
+--- a/dde-file-manager-lib/shutil/fileutils.cpp
++++ b/dde-file-manager-lib/shutil/fileutils.cpp
+@@ -242,13 +242,19 @@ bool FileUtils::isArchive(const QString &path)
+  */
+ QStringList FileUtils::getApplicationNames() {
+   QStringList appNames;
+-  QDirIterator it("/usr/share/applications", QStringList("*.desktop"),
+-                  QDir::Files | QDir::NoDotAndDotDot,
+-                  QDirIterator::Subdirectories);
+-  while (it.hasNext()) {
+-    it.next();
+-    appNames.append(it.fileName());
++
++  const QStringList desktopDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
++  qDebug() << "dde-file-manager getApplicationNames desktopDirs:" << desktopDirs;
++  for (const QString &dir : desktopDirs) {
++    QDirIterator it(dir, QStringList("*.desktop"),
++                    QDir::Files | QDir::NoDotAndDotDot,
++                    QDirIterator::Subdirectories);
++    while (it.hasNext()) {
++      it.next();
++      appNames.append(it.fileName());
++    }
+   }
++  
+   return appNames;
+ }
+ //---------------------------------------------------------------------------
+@@ -259,12 +265,16 @@ QStringList FileUtils::getApplicationNames() {
+  */
+ QList<DesktopFile> FileUtils::getApplications() {
+   QList<DesktopFile> apps;
+-  QDirIterator it("/usr/share/applications", QStringList("*.desktop"),
+-                  QDir::Files | QDir::NoDotAndDotDot,
+-                  QDirIterator::Subdirectories);
+-  while (it.hasNext()) {
+-    it.next();
+-    apps.append(DesktopFile(it.filePath()));
++  const QStringList desktopDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
++  qDebug() << "dde-file-manager getApplications desktopDirs:" << desktopDirs;
++  for (const QString &dir : desktopDirs) {
++    QDirIterator it(dir, QStringList("*.desktop"),
++                    QDir::Files | QDir::NoDotAndDotDot,
++                    QDirIterator::Subdirectories);
++    while (it.hasNext()) {
++      it.next();
++      apps.append(DesktopFile(it.filePath()));
++    }
+   }
+   return apps;
+ }
+diff --git a/dde-file-manager-lib/shutil/mimesappsmanager.cpp b/dde-file-manager-lib/shutil/mimesappsmanager.cpp
+index c6149702..c9e53630 100644
+--- a/dde-file-manager-lib/shutil/mimesappsmanager.cpp
++++ b/dde-file-manager-lib/shutil/mimesappsmanager.cpp
+@@ -542,14 +542,9 @@ QStringList MimesAppsManager::getrecommendedAppsFromMimeWhiteList(const DUrl &ur
+ 
+ QStringList MimesAppsManager::getApplicationsFolders()
+ {
+-    QStringList desktopFolders;
+-    desktopFolders << QString("/usr/share/applications/")
+-                   << QString("/usr/local/share/applications/")
+-                   << QString("/usr/share/gnome/applications/")
+-                   << QString("/var/lib/flatpak/exports/share/applications")
+-                   << QDir::homePath() + QString("/.local/share/flatpak/exports/share/applications")
+-                   << QDir::homePath() + QString( "/.local/share/applications" );
+-    return desktopFolders;
++    QStringList paths = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
++    qDebug() << "dde-file-manager getApplicationsFolders:" << paths;
++    return paths;
+ }
+ 
+ QString MimesAppsManager::getMimeAppsCacheFile()
+-- 
+2.21.0
+
diff --git a/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.pixmaps-paths.patch b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.pixmaps-paths.patch
new file mode 100644
index 000000000000..582760e6db2a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/dde-file-manager.pixmaps-paths.patch
@@ -0,0 +1,38 @@
+From 084c3cfcf4995c109ca2e96f042fe341f925b0b4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com>
+Date: Thu, 16 May 2019 19:00:52 -0300
+Subject: [PATCH 4/4] Use xdg to look for pixmap icons
+
+---
+ dde-file-manager-lib/shutil/fileutils.cpp | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/dde-file-manager-lib/shutil/fileutils.cpp b/dde-file-manager-lib/shutil/fileutils.cpp
+index d6a0573a..e912e7c2 100644
+--- a/dde-file-manager-lib/shutil/fileutils.cpp
++++ b/dde-file-manager-lib/shutil/fileutils.cpp
+@@ -362,11 +362,16 @@ QIcon FileUtils::searchAppIcon(const DesktopFile &app,
+   }
+ 
+   // Last chance
+-  QDir appIcons("/usr/share/pixmaps","", 0, QDir::Files | QDir::NoDotAndDotDot);
+-  QStringList iconFiles = appIcons.entryList();
+-  QStringList searchIcons = iconFiles.filter(name);
+-  if (searchIcons.count() > 0) {
+-    return QIcon("/usr/share/pixmaps/" + searchIcons.at(0));
++  const QStringList dirs = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
++  qDebug() << "searchAppIcon: last chance: look for pixmaps at: " << dirs;
++  for (const QString &dir : dirs) {
++    const QString path = dir + QDir::separator() + "pixmaps";
++    QDir appIcons(path,"", 0, QDir::Files | QDir::NoDotAndDotDot);
++    QStringList iconFiles = appIcons.entryList();
++    QStringList searchIcons = iconFiles.filter(name);
++    if (searchIcons.count() > 0) {
++      return QIcon(path + QDir::separator() + searchIcons.at(0));
++    }
+   }
+ 
+   // Default icon
+-- 
+2.21.0
+
diff --git a/nixpkgs/pkgs/desktops/deepin/dde-file-manager/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/default.nix
new file mode 100644
index 000000000000..44964b65c9d7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/deepin/dde-file-manager/default.nix
@@ -0,0 +1,251 @@
+{ stdenv, fetchFromGitHub, pkgconfig, avfs, dde-daemon, dde-dock,
+  dde-polkit-agent, dde-qt-dbus-factory, deepin, deepin-anything,
+  deepin-desktop-schemas, deepin-gettext-tools, deepin-movie-reborn,
+  deepin-shortcut-viewer, deepin-terminal, dtkcore, dtkwidget,
+  ffmpegthumbnailer, file, glib, gnugrep, gsettings-qt, gvfs,
+  jemalloc, kcodecs, libX11, libsecret, polkit, polkit-qt, poppler,
+  procps, qmake, qt5integration, qtmultimedia, qtsvg, qttools,
+  qtx11extras, runtimeShell, samba, shadow, taglib, udisks2-qt5,
+  xdg-user-dirs, xorg, zlib, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "dde-file-manager";
+  version = "4.8.6.2";
+
+  src = fetchFromGitHub {
+    owner = "linuxdeepin";
+    repo = pname;
+    rev = version;
+    sha256 = "1qw9slssvy6c4j9czyqrhlr3pq6hzxybb86darja2vka84zmvwip";
+  };
+
+  nativeBuildInputs = [
+    deepin.setupHook
+    qmake
+    qttools
+    pkgconfig
+    deepin-gettext-tools
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    avfs
+    dde-daemon
+    dde-dock
+    dde-polkit-agent
+    dde-qt-dbus-factory
+    deepin-anything
+    deepin-desktop-schemas
+    deepin-movie-reborn.dev
+    deepin-shortcut-viewer
+    deepin-terminal
+    dtkcore
+    dtkwidget
+    ffmpegthumbnailer
+    file
+    glib.bin
+    glib.dev
+    gnugrep
+    gsettings-qt
+    gvfs
+    jemalloc
+    kcodecs
+    libsecret
+    polkit
+    polkit-qt
+    poppler
+    procps
+    qt5integration
+    qtmultimedia
+    qtsvg
+    qtx11extras
+    samba
+    taglib
+    udisks2-qt5
+    xdg-user-dirs
+    xorg.libX11
+    xorg.libxcb
+    xorg.xcbutil
+    xorg.xcbutilwm
+    xorg.xorgproto
+    zlib
+  ];
+
+  patches = [
+    ./dde-file-manager.fix-paths.patch
+    ./dde-file-manager.fix-mime-cache-paths.patch
+    ./dde-file-manager.pixmaps-paths.patch
+  ];
+
+  postPatch = ''
+    searchHardCodedPaths
+
+    patchShebangs dde-desktop/translate_generation.sh
+    patchShebangs dde-desktop/translate_ts2desktop.sh
+    patchShebangs dde-file-manager-lib/generate_translations.sh
+    patchShebangs dde-file-manager/generate_translations.sh
+    patchShebangs dde-file-manager/translate_ts2desktop.sh
+    patchShebangs usb-device-formatter/generate_translations.sh
+    patchShebangs usb-device-formatter/translate_ts2desktop.sh
+
+    # x-terminal-emulator is a virtual package in Debian systems. The
+    # terminal emulator is configured by Debian's alternative system.
+    # It is not available on NixOS. Use deepin-terminal instead
+    sed -i -e "s,x-terminal-emulator,deepin-terminal," \
+      dde-file-manager-lib/shutil/fileutils.cpp
+
+    sed -i -e "s,\$\$\\[QT_INSTALL_LIBS\\],$out/lib," \
+       dde-file-manager-lib/dde-file-manager-lib.pro \
+       dde-file-thumbnail-tool/common.pri \
+       common/common.pri
+
+    sed -i '/^QMAKE_PKGCONFIG_DESTDIR/i QMAKE_PKGCONFIG_PREFIX = $$PREFIX' \
+       dde-file-manager-lib/dde-file-manager-lib.pro
+
+    fixPath ${dde-dock} /usr/include/dde-dock \
+      dde-dock-plugins/disk-mount/disk-mount.pro
+
+    # treefrog is not available in NixOS, and I am not sure if it is really needed
+    #fixPath $ {treefrog-framework} /usr/include/treefrog \
+    #  dde-sharefiles/appbase.pri
+
+    fixPath ${deepin-anything} /usr/share/dbus-1/interfaces \
+      dde-file-manager-lib/dbusinterface/dbusinterface.pri
+
+    sed -i -e "s,\$\$system(\$\$PKG_CONFIG --variable libdir deepin-anything-server-lib),$out/lib," \
+      deepin-anything-server-plugins/dde-anythingmonitor/dde-anythingmonitor.pro
+
+    fixPath ${dde-daemon} /usr/lib/deepin-daemon/desktop-toggle \
+      dde-zone/mainwindow.h
+
+    fixPath ${deepin-gettext-tools} /usr/bin/deepin-desktop-ts-convert \
+      dde-desktop/translate_desktop2ts.sh \
+      dde-desktop/translate_ts2desktop.sh \
+      dde-file-manager/translate_desktop2ts.sh \
+      dde-file-manager/translate_ts2desktop.sh \
+      usb-device-formatter/translate_desktop2ts.sh \
+      usb-device-formatter/translate_ts2desktop.sh
+
+    fixPath ${avfs} /usr/bin/mountavfs dde-file-manager-lib/shutil/fileutils.cpp
+    fixPath ${avfs} /usr/bin/umountavfs dde-file-manager-lib/shutil/fileutils.cpp
+
+    fixPath ${deepin-terminal} /usr/bin/deepin-terminal \
+      dde-file-manager-lib/shutil/fileutils.cpp
+
+    fixPath $out /usr/share/dde-file-manager \
+      dde-sharefiles/appbase.pri \
+      dde-sharefiles/dde-sharefiles.pro
+
+    fixPath $out /usr/share/usb-device-formatter \
+      usb-device-formatter/main.cpp
+
+    fixPath $out /usr/share/applications \
+      dde-file-manager/mips/dde-file-manager-autostart.desktop \
+      dde-desktop/development.pri
+
+    fixPath $out /usr/bin \
+      dbusservices/com.deepin.dde.desktop.service \
+      dde-desktop/data/com.deepin.dde.desktop.service \
+      dde-desktop/dbus/filedialog/com.deepin.filemanager.filedialog.service \
+      dde-desktop/dbus/filemanager1/org.freedesktop.FileManager.service \
+      dde-file-manager-daemon/dbusservice/com.deepin.filemanager.daemon.service \
+      dde-file-manager-daemon/dbusservice/dde-filemanager-daemon.service \
+      dde-file-manager-daemon/dde-file-manager-daemon.pro \
+      dde-file-manager-lib/dde-file-manager-lib.pro \
+      dde-file-manager-lib/pkexec/com.deepin.pkexec.dde-file-manager.policy \
+      dde-file-manager/dde-file-manager-xdg-autostart.desktop \
+      dde-file-manager/dde-file-manager.desktop \
+      dde-file-manager/dde-file-manager.pro \
+      dde-file-manager/mips/dde-file-manager-autostart.desktop \
+      dde-file-manager/mips/dde-file-manager.desktop \
+      dde-file-manager/pkexec/com.deepin.pkexec.dde-file-manager.policy \
+      usb-device-formatter/pkexec/com.deepin.pkexec.usb-device-formatter.policy \
+      usb-device-formatter/usb-device-formatter.desktop \
+      usb-device-formatter/usb-device-formatter.pro
+      fixPath $out /etc \
+      dde-file-manager/dde-file-manager.pro \
+      dde-file-manager-daemon/dde-file-manager-daemon.pro
+
+    fixPath $out /usr \
+      common/common.pri \
+      dde-desktop/dbus/filedialog/filedialog.pri \
+      dde-desktop/dbus/filemanager1/filemanager1.pri \
+      dde-desktop/development.pri \
+      dde-dock-plugins/disk-mount/disk-mount.pro \
+      dde-file-manager-daemon/dde-file-manager-daemon.pro \
+      usb-device-formatter/usb-device-formatter.pro
+
+    sed -i -e "s,xdg-user-dir,${xdg-user-dirs}/bin/xdg-user-dir," \
+      dde-file-manager/dde-xdg-user-dirs-update
+
+    sed -i -e "s,Exec=dde-file-manager,Exec=$out/bin/dde-file-manager," \
+      dde-file-manager/dde-file-manager.desktop
+
+    sed -i -e "s,Exec=gio,Exec=${glib.bin}/bin/gio," \
+      dde-desktop/data/applications/dde-trash.desktop \
+      dde-desktop/data/applications/dde-computer.desktop
+
+    sed -i -e "s,/usr/lib/gvfs/gvfsd,${gvfs}/libexec/gvfsd," \
+      dde-file-manager-lib/gvfs/networkmanager.cpp
+
+    sed -i -e "s,/usr/sbin/smbd,${samba}/bin/smbd," \
+           -e "s,/usr/sbin/groupadd,${shadow}/bin/groupadd," \
+           -e "s,/usr/sbin/adduser,${shadow}/bin/adduser," \
+      dde-file-manager-daemon/usershare/usersharemanager.cpp
+
+    sed -i -e 's,startDetached("deepin-shortcut-viewer",startDetached("${deepin-shortcut-viewer}/bin/deepin-shortcut-viewer",' \
+      dde-file-manager-lib/controllers/appcontroller.cpp
+
+    sed -i -e 's,/bin/bash,${runtimeShell},' \
+           -e 's,\<ps\>,${procps}/bin/ps,' \
+           -e 's,\<grep\>,${gnugrep}/bin/grep,' \
+      utils/utils.cpp \
+      dde-file-manager-lib/controllers/fileeventprocessor.cpp
+
+    # The hard coded path in `QString("/etc/xdg/%1/%2")` in
+    # dde-file-manager-lib/interfaces/dfmsettings.cpp
+    # does not needed a fix because all the standard locations
+    # are tried before faling back to /etc/xdg.
+
+    # I do not know yet how to deal with:
+    #   dde-file-manager-lib/sw_label/llsdeepinlabellibrary.h:        return "/usr/lib/sw_64-linux-gnu/dde-file-manager/libllsdeeplabel.so";
+    #   dde-file-manager-lib/sw_label/filemanagerlibrary.h:        return "/usr/lib/sw_64-linux-gnu/dde-file-manager/libfilemanager.so";
+    #   dde-file-manager-lib/sw_label/libinstall.sh:mkdir /usr/lib/sw_64-linux-gnu/dde-file-manager
+    #   dde-file-manager-lib/sw_label/libinstall.sh:cp libfilemanager.so libllsdeeplabel.so /usr/lib/sw_64-linux-gnu/dde-file-manager
+    # They are not present on my installations of Deepin Linux, Arch Linux and Ubuntu. Can they be ignored?
+
+    # Notes:
+    # - As file-roller is looked in the path using QStandardPaths::findExecutable, it is not been added as a dependency.
+    # - deepin-qt5config is a dependency exclusive to the Deepin Linux distribution. No other distribution has it, according to repology.
+  '';
+
+  qmakeFlags = [
+    "QMAKE_CFLAGS_ISYSTEM="
+
+    # Disable ffmpeg
+    "CONFIG+=DISABLE_FFMPEG"
+  ];
+
+  preBuild = ''
+    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${zlib}/lib";
+    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${libX11}/lib";
+  '';
+
+  postFixup = ''
+    # debuging
+    unset LD_LIBRARY_PATH
+    searchForUnresolvedDLL $out
+    searchHardCodedPaths $out
+  '';
+
+  passthru.updateScript = deepin.updateScript { inherit name; };
+
+  meta = with stdenv.lib; {
+    description = "File manager and desktop module for Deepin Desktop Environment";
+    homepage = https://github.com/linuxdeepin/dde-file-manager;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-movie-reborn/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-movie-reborn/default.nix
index 914e77d85157..ef47603f817b 100644
--- a/nixpkgs/pkgs/desktops/deepin/deepin-movie-reborn/default.nix
+++ b/nixpkgs/pkgs/desktops/deepin/deepin-movie-reborn/default.nix
@@ -14,6 +14,8 @@ stdenv.mkDerivation rec {
     sha256 = "1qh079j4c2n33z0ykv87af9vfkmdxxrv6dy54wdqdpr7vrhn89gb";
   };
 
+  outputs = [ "out" "dev" ];
+
   nativeBuildInputs = [
     cmake
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/deepin/default.nix b/nixpkgs/pkgs/desktops/deepin/default.nix
index ccc2270a8edf..49114330f135 100644
--- a/nixpkgs/pkgs/desktops/deepin/default.nix
+++ b/nixpkgs/pkgs/desktops/deepin/default.nix
@@ -11,6 +11,7 @@ let
     dde-calendar = callPackage ./dde-calendar { };
     dde-daemon = callPackage ./dde-daemon { };
     dde-dock = callPackage ./dde-dock { };
+    dde-file-manager = callPackage ./dde-file-manager { };
     dde-network-utils = callPackage ./dde-network-utils { };
     dde-polkit-agent = callPackage ./dde-polkit-agent { };
     dde-qt-dbus-factory = callPackage ./dde-qt-dbus-factory { };
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix
index 6331aa9eb149..c7a9b4ccfbd1 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
     gdk_pixbuf adwaita-icon-theme librsvg clutter clutter-gtk cheese
     networkmanager modemmanager gnome-bluetooth tracker
     udisks2 gsound libhandy
+    mutter # schemas for the keybindings
   ];
 
   patches = [
diff --git a/nixpkgs/pkgs/desktops/gnome-3/default.nix b/nixpkgs/pkgs/desktops/gnome-3/default.nix
index 151581b73eb9..742babf721ac 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/default.nix
@@ -24,10 +24,10 @@ lib.makeScope pkgs.newScope (self: with self; {
   corePackages = with gnome3; [
     pkgs.desktop-file-utils
     pkgs.shared-mime-info # for update-mime-database
-    glib # for gsettings
-    gtk3.out # for gtk-update-icon-cache
+    pkgs.glib # for gsettings
+    pkgs.gtk3.out # for gtk-update-icon-cache
     glib-networking gvfs dconf gnome-backgrounds gnome-control-center
-    gnome-menus gnome-settings-daemon gnome-shell
+    pkgs.gnome-menus gnome-settings-daemon gnome-shell
     gnome-themes-extra adwaita-icon-theme gnome-shell-extensions
     pkgs.hicolor-icon-theme
   ];
@@ -41,7 +41,7 @@ lib.makeScope pkgs.newScope (self: with self; {
     nautilus-sendto dconf-editor vinagre gnome-weather gnome-logs
     gnome-maps gnome-characters gnome-calendar accerciser gnome-nettool
     gnome-getting-started-docs gnome-packagekit gnome-software
-    gnome-power-manager gnome-todo gnome-usage
+    gnome-power-manager gnome-todo pkgs.gnome-usage
   ];
 
   gamesPackages = with gnome3; [ swell-foop lightsoff iagno
diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix
index c43daf2ebb2f..54d45eedc3d9 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix
@@ -2,7 +2,7 @@
 , desktop-file-utils, gnome-online-accounts, gsettings-desktop-schemas, adwaita-icon-theme
 , libnotify, libcanberra-gtk3, libsecret, gmime, isocodes, libxml2, gettext
 , sqlite, gcr, json-glib, itstool, libgee, gnome3, webkitgtk, python3
-, xvfb_run, dbus, shared-mime-info, libunwind, folks, glib-networking }:
+, xvfb_run, dbus, shared-mime-info, libunwind, libunity, folks, glib-networking }:
 
 stdenv.mkDerivation rec {
   pname = "geary";
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
     adwaita-icon-theme enchant2 gcr gmime gnome-online-accounts
     gsettings-desktop-schemas gtk3 isocodes json-glib libcanberra-gtk3
     libgee libnotify libsecret sqlite webkitgtk glib-networking
-    libunwind folks
+    libunwind libunity folks
   ];
 
   checkInputs = [ xvfb_run dbus ];
diff --git a/nixpkgs/pkgs/desktops/gnustep/libobjc2/default.nix b/nixpkgs/pkgs/desktops/gnustep/libobjc2/default.nix
index b238623eb09a..b058bd87989d 100644
--- a/nixpkgs/pkgs/desktops/gnustep/libobjc2/default.nix
+++ b/nixpkgs/pkgs/desktops/gnustep/libobjc2/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "libobjc2";
-  version = "1.9";
+  version = "2.0";
 
   src = fetchFromGitHub {
     owner = "gnustep";
     repo = "libobjc2";
     rev = "v${version}";
-    sha256 = "00pscl3ly3rv6alf9vk70kxnnxq2rfgpc1ylcv6cgjs9jxdnrqmn";
+    sha256 = "1b4h0a4pqr8j6300qr2wmi33r7ysvp705gs0ypx69hbmifln0mlf";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix b/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix
index 411308c488c7..f5b71eba141a 100644
--- a/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix
+++ b/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix
@@ -1,31 +1,49 @@
-{ stdenv, fetchurl, pkgconfig, gtk3, mate, python3Packages }:
+{ stdenv, fetchurl, substituteAll
+, pkgconfig, gobject-introspection, gdk_pixbuf
+, gtk3, mate, python3, dropbox }:
 
+let
+  dropboxd = "${dropbox}/bin/dropbox";
+in
 stdenv.mkDerivation rec {
-  name = "caja-dropbox-${version}";
+  pname = "caja-dropbox";
   version = "1.22.1";
 
   src = fetchurl {
-    url = "http://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    url = "http://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
     sha256 = "18cnd3yw2ingvl38mhmfbl5k0kfg8pzcf2649j00i6v90cwiril5";
   };
 
+  patches = [
+    (substituteAll {
+      src = ./fix-cli-paths.patch;
+      inherit dropboxd;
+    })
+  ];
+
+  strictDeps = true;
+
   nativeBuildInputs = [
     pkgconfig
+    gobject-introspection
+    gdk_pixbuf
+    (python3.withPackages (ps: with ps; [
+      docutils
+      pygobject3
+    ]))
   ];
 
   buildInputs = [
     gtk3
     mate.caja
-    python3Packages.python
-    python3Packages.pygtk
-    python3Packages.docutils
+    python3
   ];
 
   configureFlags = [ "--with-caja-extension-dir=$$out/lib/caja/extensions-2.0" ];
 
   meta = with stdenv.lib; {
     description = "Dropbox extension for Caja file manager";
-    homepage = https://github.com/mate-desktop/caja-dropbox;
+    homepage = "https://github.com/mate-desktop/caja-dropbox";
     license = with licenses; [ gpl3 cc-by-nd-30 ];
     platforms = platforms.unix;
     maintainers = [ maintainers.romildo ];
diff --git a/nixpkgs/pkgs/desktops/mate/caja-dropbox/fix-cli-paths.patch b/nixpkgs/pkgs/desktops/mate/caja-dropbox/fix-cli-paths.patch
new file mode 100644
index 000000000000..de591f493f6f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/caja-dropbox/fix-cli-paths.patch
@@ -0,0 +1,11 @@
+--- a/caja-dropbox.in
++++ b/caja-dropbox.in
+@@ -70,7 +70,7 @@ DOWNLOADING = "Downloading Dropbox... %d%%"
+ UNPACKING = "Unpacking Dropbox... %d%%"
+
+ PARENT_DIR = os.path.expanduser("~")
+-DROPBOXD_PATH = "%s/.dropbox-dist/dropboxd" % PARENT_DIR
++DROPBOXD_PATH = "@dropboxd@"
+ DESKTOP_FILE = "@DESKTOP_FILE_DIR@/caja-dropbox.desktop"
+
+ enc = locale.getpreferredencoding()
diff --git a/nixpkgs/pkgs/desktops/mate/caja-with-extensions/default.nix b/nixpkgs/pkgs/desktops/mate/caja-with-extensions/default.nix
new file mode 100644
index 000000000000..35e3cd198f6b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/caja-with-extensions/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, lib, makeWrapper, caja-extensions, caja, extensions ? [ caja-extensions ] }:
+
+stdenv.mkDerivation {
+  pname = "${caja.pname}-with-extensions";
+  version = caja.version;
+
+  phases = [ "installPhase" ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  inherit caja;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    makeWrapper $caja/bin/caja $out/bin/caja \
+    --set CAJA_EXTENSION_DIRS ${lib.concatMapStringsSep ":" (x: "${x.outPath}/lib/caja/extensions-2.0") extensions}
+  '';
+
+  inherit (caja.meta);
+}
diff --git a/nixpkgs/pkgs/desktops/mate/caja/default.nix b/nixpkgs/pkgs/desktops/mate/caja/default.nix
index fcb903f703e7..667a73eb6307 100644
--- a/nixpkgs/pkgs/desktops/mate/caja/default.nix
+++ b/nixpkgs/pkgs/desktops/mate/caja/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, pkgconfig, intltool, gtk3, libnotify, libxml2, libexif, exempi, mate, hicolor-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
-  name = "caja-${version}";
+  pname = "caja";
   version = "1.22.1";
 
   src = fetchurl {
-    url = "http://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    url = "http://pub.mate-desktop.org/releases/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
     sha256 = "10b7yjimblymp1fpsrl4jb2k7kbhla2izsj3njfmg2n6fv9fy9iv";
   };
 
diff --git a/nixpkgs/pkgs/desktops/mate/default.nix b/nixpkgs/pkgs/desktops/mate/default.nix
index 3cab936b92b1..f4f2b3620e71 100644
--- a/nixpkgs/pkgs/desktops/mate/default.nix
+++ b/nixpkgs/pkgs/desktops/mate/default.nix
@@ -4,11 +4,12 @@ let
   callPackage = newScope self;
 
   self = rec {
-  
+
     atril = callPackage ./atril { };
     caja = callPackage ./caja { };
     caja-dropbox = callPackage ./caja-dropbox { };
     caja-extensions = callPackage ./caja-extensions { };
+    caja-with-extensions = callPackage ./caja-with-extensions { };
     engrampa = callPackage ./engrampa { };
     eom = callPackage ./eom { };
     libmatekbd = callPackage ./libmatekbd { };
@@ -86,7 +87,7 @@ let
       mozo
       pluma
     ];
-  
+
   };
 
 in self
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix
index 9aed8ffcc272..4a4850a0824e 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig
 , meson, ninja, vala, desktop-file-utils, libxml2
-, gtk3, python3, granite, libgee, gobject-introspection
-, elementary-icon-theme, appstream, wrapGAppsHook }:
+, gtk3, python3, granite, libgee, elementary-icon-theme
+, appstream, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "calculator";
@@ -26,7 +26,6 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [
     appstream
     desktop-file-utils
-    gobject-introspection
     libxml2
     meson
     ninja
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix
index c165df26f60b..9f684c22767d 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix
@@ -2,7 +2,7 @@
 , ninja, vala, desktop-file-utils, gtk3, granite, libgee
 , geoclue2, libchamplain, clutter, folks, geocode-glib, python3
 , libnotify, libical, evolution-data-server, appstream-glib
-, elementary-icon-theme, gobject-introspection, wrapGAppsHook }:
+, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "calendar";
@@ -27,7 +27,6 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [
     appstream-glib
     desktop-file-utils
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix
index c90d9a566f8d..99c7afffe7a5 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, gettext, vala
 , python3, desktop-file-utils, libcanberra, gtk3, libgee, granite, libnotify
 , libunity, pango, plank, bamf, sqlite, libdbusmenu-gtk3, zeitgeist, glib-networking
-, elementary-icon-theme, gobject-introspection, wrapGAppsHook }:
+, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "files";
@@ -27,7 +27,6 @@ stdenv.mkDerivation rec {
     desktop-file-utils
     gettext
     glib-networking
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix
index 4ee2aef17601..32e9a0bcc8db 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, vala, desktop-file-utils
 , gtk3, glib, libaccounts-glib, libexif, libgee, geocode-glib, gexiv2,libgphoto2, fetchpatch
 , granite, gst_all_1, libgudev, json-glib, libraw, librest, libsoup, sqlite, python3
-, scour, webkitgtk, libwebp, appstream, libunity, wrapGAppsHook, gobject-introspection, elementary-icon-theme }:
+, scour, webkitgtk, libwebp, appstream, libunity, wrapGAppsHook, elementary-icon-theme }:
 
 stdenv.mkDerivation rec {
   pname = "photos";
@@ -26,7 +26,6 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [
     appstream
     desktop-file-utils
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix
index 2644d31d7983..b1a5796770d9 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, callPackage
 , ninja, vala, python3, desktop-file-utils, gtk3, granite, libgee
-, libcanberra, gobject-introspection, elementary-icon-theme, wrapGAppsHook }:
+, libcanberra, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "screenshot-tool"; # This will be renamed to "screenshot" soon. See -> https://github.com/elementary/screenshot/pull/93
@@ -24,7 +24,6 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     desktop-file-utils
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix
index 9b2060afa6b7..2c146169f427 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, python3
 , vala, desktop-file-utils, gtk3, libxml2, granite, libnotify, vte, libgee
-, elementary-icon-theme, appstream, gobject-introspection, wrapGAppsHook }:
+, elementary-icon-theme, appstream, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "terminal";
@@ -25,7 +25,6 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [
     appstream
     desktop-file-utils
-    gobject-introspection
     libxml2
     meson
     ninja
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix
index b123d4cbf5bc..2d978d966b93 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala, python3
 , desktop-file-utils, gtk3, granite, libgee, clutter-gst, clutter-gtk, gst_all_1
-, gobject-introspection, elementary-icon-theme, wrapGAppsHook }:
+, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "videos";
@@ -24,7 +24,6 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     desktop-file-utils
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix
index 1883e2294797..859e04eb954d 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig
-, vala, libgee, granite, gtk3, switchboard, gobject-introspection }:
+, vala, libgee, granite, gtk3, switchboard }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-a11y";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix
index d217ad20d2ed..6d7ecbffa314 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, pantheon, substituteAll, meson, ninja, pkgconfig
-, vala, libgee, granite, gtk3, switchboard, pciutils, gobject-introspection }:
+{ stdenv, fetchFromGitHub, pantheon, substituteAll, meson, ninja
+, pkgconfig, vala, libgee, granite, gtk3, switchboard, pciutils }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-about";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix
index ed4dc0c84473..0d7586391ce0 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig
-, vala, libgee, granite, gtk3, switchboard, gobject-introspection }:
+{ stdenv, fetchFromGitHub, pantheon, meson, ninja
+, pkgconfig, vala, libgee, granite, gtk3, switchboard }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-applications";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix
index db653a7f8ffe..547b6d897e4e 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, vala, libgee
-, granite, gtk3, bluez, switchboard, gobject-introspection }:
+{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig
+, vala, libgee, granite, gtk3, bluez, switchboard }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-bluetooth";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix
index 8c00ff4728e8..e1303a3cc48a 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, pantheon, meson, ninja, substituteAll, pkgconfig
-, vala, libgee, granite, gtk3, libxml2, switchboard, tzdata, gobject-introspection }:
+, vala, libgee, granite, gtk3, libxml2, switchboard, tzdata }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-datetime";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     libxml2
     meson
     ninja
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix
index f5fbb0a51cfb..22fb795297e0 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig
-, vala, libgee, granite, gtk3, switchboard, gobject-introspection }:
+{ stdenv, fetchFromGitHub, pantheon, meson, ninja
+, pkgconfig, vala, libgee, granite, gtk3, switchboard }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-display";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix
index 50256b8f77d7..71f865bdeb62 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, pantheon, substituteAll, meson, ninja, pkgconfig, vala, libgee
-, granite, gtk3, libxml2, libgnomekbd, libxklavier, xorg, switchboard, gobject-introspection }:
+{ stdenv, fetchFromGitHub, pantheon, substituteAll, meson, ninja, pkgconfig
+, vala, libgee, granite, gtk3, libxml2, libgnomekbd, libxklavier, xorg, switchboard }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-keyboard";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     libxml2
     meson
     ninja
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix
index eaf15fdb8155..a55a525c79bd 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, pantheon, fetchpatch, meson, ninja, pkgconfig, vala
-, libgee, granite, gtk3, switchboard, elementary-settings-daemon, gobject-introspection }:
+, libgee, granite, gtk3, switchboard, elementary-settings-daemon }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-mouse-touchpad";
@@ -27,7 +27,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix
index 95b558901d20..283a13bd82aa 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, substituteAll, vala
-, libgee, granite, gtk3, networkmanager, networkmanagerapplet, switchboard, gobject-introspection }:
+, libgee, granite, gtk3, networkmanager, networkmanagerapplet, switchboard }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-network";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix
index a6fb86bb828c..277f70cf984c 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig
-, vala, libgee, granite, gtk3, switchboard, gobject-introspection }:
+{ stdenv, fetchFromGitHub, pantheon, meson, ninja
+, pkgconfig, vala, libgee, granite, gtk3, switchboard }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-notifications";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix
index 0417d33df7d7..496a69ce1f6b 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, vala
 , libgee, granite, gtk3, libaccounts-glib, libsignon-glib, json-glib
-, librest, webkitgtk, libsoup, switchboard, gobject-introspection }:
+, librest, webkitgtk, libsoup, switchboard }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-onlineaccounts";
@@ -20,7 +20,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix
index 6c29282652c8..4d6a1f5c5c67 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, vala
 , libgee, granite, gexiv2, elementary-settings-daemon, gtk3, gnome-desktop
-, gala, wingpanel, plank, switchboard, gettext, gobject-introspection, bamf }:
+, gala, wingpanel, plank, switchboard, gettext, bamf }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-pantheon-shell";
@@ -21,7 +21,6 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     gettext
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix
index 0178f23f5e1a..0179aac84ced 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, substituteAll, meson, ninja
 , pkgconfig, vala, libgee, elementary-dpms-helper, elementary-settings-daemon
-, makeWrapper, granite, gtk3, dbus, polkit, switchboard, gobject-introspection }:
+, makeWrapper, granite, gtk3, dbus, polkit, switchboard }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-power";
@@ -20,7 +20,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix
index 11bd70894edd..293faad51c74 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig
-, vala, libgee, granite, gtk3, cups, switchboard, gobject-introspection }:
+, vala, libgee, granite, gtk3, cups, switchboard }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-printers";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix
index ff59768e363f..9cbab8f2c9f8 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, meson, python3, ninja
 , pkgconfig, vala, libgee, granite, gtk3, polkit, zeitgeist
-, switchboard, lightlocker, pantheon-agent-geoclue2, gobject-introspection }:
+, switchboard, lightlocker, pantheon-agent-geoclue2 }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-security-privacy";
@@ -20,7 +20,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix
index 9660daa7715d..265352ed8815 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig
-, vala, libgee, granite, gtk3, switchboard, gobject-introspection }:
+, vala, libgee, granite, gtk3, switchboard }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-sharing";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix
index ad379f37471a..907bdc37e2a7 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix
@@ -1,6 +1,5 @@
-{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig
-, vala, libgee, granite, gtk3, pulseaudio, libcanberra, libcanberra-gtk3
-, switchboard, gobject-introspection }:
+{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, vala, libgee
+, granite, gtk3, pulseaudio, libcanberra, libcanberra-gtk3, switchboard }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-sound";
@@ -20,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix
index 310230c7aacc..12edf97f6ba9 100644
--- a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3, ninja
 , vala, gtk3, libgee, granite, gettext, clutter-gtk, libunity
-, elementary-icon-theme, wrapGAppsHook, gobject-introspection }:
+, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "switchboard";
@@ -21,7 +21,6 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     gettext
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix
index 32083d3ada62..177837c76dc0 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, substituteAll, makeWrapper, meson
 , ninja, vala, desktop-file-utils, gtk3, granite, libgee, elementary-settings-daemon
-, gnome-desktop, mutter, gobject-introspection, elementary-icon-theme, wingpanel-with-indicators
+, gnome-desktop, mutter, elementary-icon-theme, wingpanel-with-indicators
 , elementary-gtk-theme, nixos-artwork, elementary-default-settings, lightdm, numlockx
 , clutter-gtk, libGL, dbus, wrapGAppsHook }:
 
@@ -26,7 +26,6 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     desktop-file-utils
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix
index 6ceebf1980c6..ca0ab888f149 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala, libxml2, desktop-file-utils
-, gtk3, glib, granite, libgee, elementary-icon-theme, gobject-introspection, wrapGAppsHook }:
+, gtk3, glib, granite, libgee, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "shortcut-overlay";
@@ -23,7 +23,6 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     desktop-file-utils
-    gobject-introspection
     libxml2
     meson
     ninja
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix
index bc29dba9718e..1005c4090f3f 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3, ninja, vala
 , desktop-file-utils, gettext, libxml2, gtk3, granite, libgee, bamf, libcanberra
-, libcanberra-gtk3, gnome-desktop, mutter, clutter, plank, gobject-introspection
-, elementary-icon-theme, elementary-settings-daemon, wrapGAppsHook }:
+, libcanberra-gtk3, gnome-desktop, mutter, clutter, plank, elementary-icon-theme
+, elementary-settings-daemon, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "gala";
@@ -24,7 +24,6 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [
     desktop-file-utils
     gettext
-    gobject-introspection
     libxml2
     meson
     ninja
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix
index e905ce9d854b..0d00ee2072dd 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, pantheon, substituteAll, meson, ninja, python3
 , pkgconfig, vala, granite, libgee, gettext, gtk3, appstream, gnome-menus
-, json-glib, plank, bamf, switchboard, libunity, libsoup, wingpanel, libwnck3
-, zeitgeist, bc }:
+, json-glib, plank, bamf, switchboard, libunity, libsoup, wingpanel, zeitgeist
+, bc }:
 
 stdenv.mkDerivation rec {
   pname = "applications-menu";
@@ -42,7 +42,6 @@ stdenv.mkDerivation rec {
     libgee
     libsoup
     libunity
-    libwnck3
     plank
     switchboard
     wingpanel
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix
index 571dab02c318..4d7868a1d14c 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3
 , ninja, vala, gtk3, granite, libnotify, wingpanel, libgee, libxml2
-, gobject-introspection, elementary-icon-theme, wrapGAppsHook }:
+, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "wingpanel-indicator-bluetooth";
@@ -20,7 +20,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     libxml2
     meson
     ninja
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix
index 297e99fe47b1..8a4c9f393839 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix
@@ -1,7 +1,6 @@
 { stdenv, fetchFromGitHub, fetchpatch, pantheon, pkgconfig, meson, python3
 , ninja, substituteAll, vala, gtk3, granite, wingpanel, evolution-data-server
-, libical, libgee, libxml2, libsoup, gobject-introspection
-, elementary-calendar, elementary-icon-theme, wrapGAppsHook }:
+, libical, libgee, libxml2, libsoup, elementary-calendar, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "wingpanel-indicator-datetime";
@@ -21,7 +20,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     libxml2
     meson
     ninja
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix
index f34ca29a98bb..aa63f82c9652 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja
 , substituteAll, vala, gtk3, granite, libxml2, wingpanel, libgee
-, xorg, libgnomekbd, gobject-introspection, elementary-icon-theme, wrapGAppsHook }:
+, xorg, libgnomekbd, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "wingpanel-indicator-keyboard";
@@ -20,7 +20,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     libxml2
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix
index 2ac05fdc6d82..a201d6864a66 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala
 , gtk3, granite, networkmanager, networkmanagerapplet, wingpanel
-, libgee, gobject-introspection, elementary-icon-theme, wrapGAppsHook }:
+, libgee, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "wingpanel-indicator-network";
@@ -20,7 +20,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix
index 8e450726976b..fd4e1cc7e177 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix
@@ -1,6 +1,5 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala
-, gtk3, granite, wingpanel, libgee, libxml2, gobject-introspection
-, elementary-icon-theme, wrapGAppsHook }:
+, gtk3, granite, wingpanel, libgee, libxml2, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "wingpanel-indicator-nightlight";
@@ -20,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     libxml2
     meson
     ninja
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix
index 6a7fcfbb4e03..03369c3ad42e 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala, gtk3, granite
-, wingpanel, libgee, libwnck3, gobject-introspection, elementary-icon-theme, wrapGAppsHook }:
+, wingpanel, libgee, libwnck3, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "wingpanel-indicator-notifications";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix
index 45a4e543b662..a9af53449c9a 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3
 , ninja, vala, gtk3, granite, bamf, libgtop, udev, wingpanel
-, libgee, gobject-introspection, elementary-icon-theme, wrapGAppsHook }:
+, libgee, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "wingpanel-indicator-power";
@@ -20,7 +20,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix
index a46e001e7a0e..5b1bd161b05f 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson
 , ninja, vala, gtk3, granite, wingpanel, accountsservice
-, libgee, gobject-introspection, elementary-icon-theme, wrapGAppsHook }:
+, libgee, elementary-icon-theme, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "wingpanel-indicator-session";
@@ -20,7 +20,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix
index fc40c2faf5ef..3e17813fde2a 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson
 , python3, ninja, vala, gtk3, granite, wingpanel, libnotify
 , pulseaudio, libcanberra-gtk3, libgee, libxml2, wrapGAppsHook
-, gobject-introspection, elementary-icon-theme }:
+, elementary-icon-theme }:
 
 stdenv.mkDerivation rec {
   pname = "wingpanel-indicator-sound";
@@ -21,7 +21,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     libxml2
     meson
     ninja
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix
index 9c18eaed6da2..be6c89f9c05d 100644
--- a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix
@@ -1,6 +1,5 @@
-{ stdenv, fetchFromGitHub, pantheon, fetchpatch, wrapGAppsHook, pkgconfig, meson, ninja
-, vala, gala, gtk3, libgee, granite, gettext, glib-networking, mutter, json-glib
-, python3, gobject-introspection }:
+{ stdenv, fetchFromGitHub, pantheon, wrapGAppsHook, pkgconfig, meson, ninja
+, vala, gala, gtk3, libgee, granite, gettext, mutter, json-glib, python3 }:
 
 stdenv.mkDerivation rec {
   pname = "wingpanel";
@@ -21,8 +20,6 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     gettext
-    glib-networking
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/granite/default.nix b/nixpkgs/pkgs/desktops/pantheon/granite/default.nix
index 66ba331ddcdc..cc612407bf61 100644
--- a/nixpkgs/pkgs/desktops/pantheon/granite/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/granite/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, fetchpatch, python3, meson, ninja, vala, pkgconfig, gobject-introspection, libgee, pantheon, gtk3, glib, gettext, hicolor-icon-theme, wrapGAppsHook }:
+{ stdenv, fetchFromGitHub, fetchpatch, python3, meson, ninja, vala, pkgconfig, libgee, pantheon, gtk3, glib, gettext, hicolor-icon-theme, gobject-introspection, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "granite";
diff --git a/nixpkgs/pkgs/desktops/pantheon/services/cerbere/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/cerbere/default.nix
index 59983469c114..da5e544b0058 100644
--- a/nixpkgs/pkgs/desktops/pantheon/services/cerbere/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/services/cerbere/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3, ninja, glib, libgee, vala, gobject-introspection, wrapGAppsHook }:
+{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3, ninja, glib, libgee, vala, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "cerbere";
@@ -18,7 +18,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix
index e77948ccf295..055706b1521a 100644
--- a/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3, ninja, vala
-, desktop-file-utils, gtk3, granite, libgee, gcr, webkitgtk, gobject-introspection, wrapGAppsHook }:
+, desktop-file-utils, gtk3, granite, libgee, gcr, webkitgtk, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "capnet-assist";
@@ -23,7 +23,6 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     desktop-file-utils
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix
index aa451ba75166..d8514c51f4f7 100644
--- a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix
@@ -36,25 +36,26 @@
 , systemd
 , tzdata
 , upower
+, libXtst
 , wrapGAppsHook
 }:
 
 stdenv.mkDerivation rec {
   pname = "elementary-settings-daemon";
-  version = "3.32.0";
+  version = "3.30.2";
 
   projectName = "gnome-settings-daemon";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${projectName}/${stdenv.lib.versions.majorMinor version}/${projectName}-${version}.tar.xz";
-    sha256 = "15w3sn9qf1zqlmk8c93kgrh2a20s62m5yfizkp21m5ylrrd07f63";
+    sha256 = "0c663csa3gnsr6wm0xfll6aani45snkdj7zjwjfzcwfh8w4a3z12";
   };
 
   # Source for ubuntu's patchset
   src2 = fetchgit {
     url = "https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/${projectName}";
     rev = "refs/tags/ubuntu/${version}-1ubuntu1";
-    sha256 = "0ayd50mr0pv2h4j1r1haf8y2hj8jv59vypa7lx8jis0llrm7s3yn";
+    sha256 = "02awkhw6jqm7yh812mw0nsdmsljfi8ksz8mvd2qpns5pcv002g2c";
   };
 
   # We've omitted the 53_sync_input_sources_to_accountsservice patch because it breaks the build.
@@ -71,6 +72,7 @@ stdenv.mkDerivation rec {
     "${patchPath}/64_restore_terminal_keyboard_shortcut_schema.patch"
     "${patchPath}/correct_logout_action.patch"
     "${patchPath}/ubuntu-lid-close-suspend.patch"
+    "${patchPath}/revert-wacom-migration.patch"
     "${patchPath}/revert-gsettings-removals.patch"
     "${patchPath}/revert-mediakeys-dbus-interface-drop.patch"
     "${patchPath}/ubuntu_ibus_configs.patch"
@@ -129,6 +131,7 @@ stdenv.mkDerivation rec {
     gsettings-desktop-schemas
     gtk3
     lcms2
+    libXtst
     libcanberra-gtk3
     libgnomekbd # for org.gnome.libgnomekbd.keyboard schema
     libgudev
diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/global-backlight-helper.patch b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/global-backlight-helper.patch
index dcdc83934ba6..c073b23e6b9f 100644
--- a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/global-backlight-helper.patch
+++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/global-backlight-helper.patch
@@ -1,18 +1,18 @@
-diff --git a/plugins/power/gsd-backlight.c b/plugins/power/gsd-backlight.c
-index d7d10fd2..5619d6ad 100644
---- a/plugins/power/gsd-backlight.c
-+++ b/plugins/power/gsd-backlight.c
-@@ -358,7 +358,7 @@ gsd_backlight_run_set_helper (GsdBacklight *backlight, GTask *task)
-                 proc = g_subprocess_new (G_SUBPROCESS_FLAGS_STDOUT_SILENCE,
-                                          &error,
-                                          "pkexec",
--                                         LIBEXECDIR "/gsd-backlight-helper",
-+                                         "/run/current-system/sw/bin/elementary-settings-daemon/gsd-backlight-helper",
-                                          g_udev_device_get_sysfs_path (backlight->udev_device),
-                                          data->value_str, NULL);
-         } else {
+diff --git a/plugins/power/gpm-common.c b/plugins/power/gpm-common.c
+index e83f1549..15890053 100644
+--- a/plugins/power/gpm-common.c
++++ b/plugins/power/gpm-common.c
+@@ -452,7 +452,7 @@ run_backlight_helper (enum BacklightHelperCommand   command,
+         gchar *argv[5] = { 0 };
+ 
+         argv[0] = "pkexec";
+-        argv[1] = LIBEXECDIR "/gsd-backlight-helper";
++        argv[1] = "/run/current-system/sw/bin/elementary-settings-daemon/gsd-backlight-helper";
+         argv[2] = helper_args[command];
+         argv[3] = value;
+ 
 diff --git a/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in b/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in
-index f16300f8..79d6bd17 100644
+index f16300f8..f19bba3e 100644
 --- a/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in
 +++ b/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in
 @@ -25,7 +25,7 @@
@@ -22,5 +22,5 @@ index f16300f8..79d6bd17 100644
 -    <annotate key="org.freedesktop.policykit.exec.path">@libexecdir@/gsd-backlight-helper</annotate>
 +    <annotate key="org.freedesktop.policykit.exec.path">/run/current-system/sw/bin/elementary-settings-daemon/gsd-backlight-helper</annotate>
    </action>
-
+ 
  </policyconfig>
diff --git a/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix
index 2487c4ba3af4..4b055d47b0a0 100644
--- a/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, fetchpatch, pantheon, pkgconfig, meson, ninja, vala, glib
-, gtk3, libgee, desktop-file-utils, geoclue2, gobject-introspection, wrapGAppsHook }:
+, gtk3, libgee, desktop-file-utils, geoclue2, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "pantheon-agent-geoclue2";
@@ -20,7 +20,6 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     desktop-file-utils
-    gobject-introspection
     meson
     ninja
     pkgconfig
diff --git a/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix
index 4fdaa4a8bf9f..d9e5512ce784 100644
--- a/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix
+++ b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja
-, vala, gtk3, libgee, polkit, gobject-introspection, wrapGAppsHook }:
+, vala, gtk3, libgee, polkit, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "pantheon-agent-polkit";
@@ -19,7 +19,6 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    gobject-introspection
     meson
     ninja
     pkgconfig