about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/mate
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/mate')
-rw-r--r--nixpkgs/pkgs/desktops/mate/atril/default.nix80
-rw-r--r--nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix55
-rw-r--r--nixpkgs/pkgs/desktops/mate/caja-dropbox/fix-cli-paths.patch11
-rw-r--r--nixpkgs/pkgs/desktops/mate/caja-extensions/default.nix45
-rw-r--r--nixpkgs/pkgs/desktops/mate/caja-with-extensions/default.nix20
-rw-r--r--nixpkgs/pkgs/desktops/mate/caja/caja-extension-dirs.patch46
-rw-r--r--nixpkgs/pkgs/desktops/mate/caja/default.nix45
-rw-r--r--nixpkgs/pkgs/desktops/mate/default.nix102
-rw-r--r--nixpkgs/pkgs/desktops/mate/engrampa/default.nix44
-rw-r--r--nixpkgs/pkgs/desktops/mate/eom/default.nix44
-rw-r--r--nixpkgs/pkgs/desktops/mate/libmatekbd/default.nix27
-rw-r--r--nixpkgs/pkgs/desktops/mate/libmatemixer/default.nix36
-rw-r--r--nixpkgs/pkgs/desktops/mate/libmateweather/default.nix34
-rw-r--r--nixpkgs/pkgs/desktops/mate/marco/default.nix43
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-applets/default.nix52
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-backgrounds/default.nix27
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-calc/default.nix35
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-common/default.nix23
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-control-center/default.nix62
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-desktop/default.nix35
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-icon-theme-faenza/default.nix35
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-icon-theme/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-indicator-applet/default.nix47
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-media/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-menus/default.nix32
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-netbook/default.nix44
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-notification-daemon/default.nix40
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-panel/default.nix51
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-polkit/default.nix36
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-power-manager/default.nix46
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-screensaver/default.nix45
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-sensors-applet/default.nix43
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-session-manager/default.nix60
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-settings-daemon/default.nix50
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-system-monitor/default.nix42
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-terminal/default.nix42
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-themes/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-tweak/default.nix91
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-user-guide/default.nix32
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-user-share/default.nix57
-rw-r--r--nixpkgs/pkgs/desktops/mate/mate-utils/default.nix44
-rw-r--r--nixpkgs/pkgs/desktops/mate/mozo/default.nix32
-rw-r--r--nixpkgs/pkgs/desktops/mate/pluma/default.nix43
-rw-r--r--nixpkgs/pkgs/desktops/mate/python-caja/default.nix38
44 files changed, 1933 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/mate/atril/default.nix b/nixpkgs/pkgs/desktops/mate/atril/default.nix
new file mode 100644
index 000000000000..7e8afde588c6
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/atril/default.nix
@@ -0,0 +1,80 @@
+{ lib, stdenv
+, fetchurl
+, pkg-config
+, gettext
+, gtk3
+, glib
+, libxml2
+, libsecret
+, poppler
+, itstool
+, hicolor-icon-theme
+, texlive
+, mate
+, wrapGAppsHook
+, enableEpub ? true, webkitgtk
+, enableDjvu ? true, djvulibre
+, enablePostScript ? true, libspectre
+, enableXps ? true, libgxps
+, enableImages ? false
+, mateUpdateScript
+}:
+
+with lib;
+
+stdenv.mkDerivation rec {
+  pname = "atril";
+  version = "1.24.1";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "06nyicj96dqcv035yqnzmm6pk3m35glxj0ny6lk1vwqkk2l750xl";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    glib
+    itstool
+    libsecret
+    libxml2
+    poppler
+    mate.caja
+    mate.mate-desktop
+    hicolor-icon-theme
+    texlive.bin.core  # for synctex, used by the pdf back-end
+  ]
+  ++ optionals enableDjvu [ djvulibre ]
+  ++ optionals enableEpub [ webkitgtk ]
+  ++ optionals enablePostScript [ libspectre ]
+  ++ optionals enableXps [ libgxps ]
+  ;
+
+  configureFlags = [ ]
+    ++ optionals (enableDjvu) [ "--enable-djvu" ]
+    ++ optionals (enableEpub) [ "--enable-epub" ]
+    ++ optionals (enablePostScript) [ "--enable-ps" ]
+    ++ optionals (enableXps) [ "--enable-xps" ]
+    ++ optionals (enableImages) [ "--enable-pixbuf" ];
+
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  makeFlags = [ "cajaextensiondir=$$out/lib/caja/extensions-2.0" ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "A simple multi-page document viewer for the MATE desktop";
+    homepage = "https://mate-desktop.org";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix b/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix
new file mode 100644
index 000000000000..3b96f67b12a9
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix
@@ -0,0 +1,55 @@
+{ lib, stdenv, fetchurl, substituteAll
+, pkg-config, gobject-introspection, gdk-pixbuf
+, gtk3, mate, python3, dropbox, mateUpdateScript }:
+
+let
+  dropboxd = "${dropbox}/bin/dropbox";
+in
+stdenv.mkDerivation rec {
+  pname = "caja-dropbox";
+  version = "1.24.0";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1rcn82q58mv9hn5xamvzay2pw1szfk6zns94362476fcp786lji2";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./fix-cli-paths.patch;
+      inherit dropboxd;
+    })
+  ];
+
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    pkg-config
+    gobject-introspection
+    gdk-pixbuf
+    (python3.withPackages (ps: with ps; [
+      docutils
+      pygobject3
+    ]))
+  ];
+
+  buildInputs = [
+    gtk3
+    mate.caja
+    python3
+  ];
+
+  configureFlags = [ "--with-caja-extension-dir=$$out/lib/caja/extensions-2.0" ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Dropbox extension for Caja file manager";
+    homepage = "https://github.com/mate-desktop/caja-dropbox";
+    license = with licenses; [ gpl3Plus 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-extensions/default.nix b/nixpkgs/pkgs/desktops/mate/caja-extensions/default.nix
new file mode 100644
index 000000000000..5c08074f0450
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/caja-extensions/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, gtk3, gupnp, mate, imagemagick, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "caja-extensions";
+  version = "1.24.1";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "13jkynanqj8snys0if8lv6yx1y0jrm778s2152n4x65hsghc6cw5";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    gupnp
+    mate.caja
+    mate.mate-desktop
+    imagemagick
+  ];
+
+  postPatch = ''
+    for f in image-converter/caja-image-{resizer,rotator}.c; do
+      substituteInPlace $f --replace "/usr/bin/convert" "${imagemagick}/bin/convert"
+    done
+  '';
+
+  configureFlags = [ "--with-cajadir=$$out/lib/caja/extensions-2.0" ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Set of extensions for Caja file manager";
+    homepage = "https://mate-desktop.org";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
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..125e39d1f461
--- /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 ], mateUpdateScript }:
+
+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/caja-extension-dirs.patch b/nixpkgs/pkgs/desktops/mate/caja/caja-extension-dirs.patch
new file mode 100644
index 000000000000..0b1453bd4689
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/caja/caja-extension-dirs.patch
@@ -0,0 +1,46 @@
+From 35e9e6a6f3ba6cbe62a3957044eb67864f5d8e66 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com>
+Date: Tue, 11 Feb 2020 17:49:13 -0300
+Subject: [PATCH] Look for caja extentions at $CAJA_EXTENTSION_DIRS
+
+CAJA_EXTENSION_DIRS is a list of paths where caja extensions are
+looked for. It is needed for distributions like NixOS that do not
+install all extensions in the same directory. In NixOS each package is
+installed in a self contained directory.
+---
+ libcaja-private/caja-module.c | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/libcaja-private/caja-module.c b/libcaja-private/caja-module.c
+index d54d7cf..9794e56 100644
+--- a/libcaja-private/caja-module.c
++++ b/libcaja-private/caja-module.c
+@@ -258,11 +258,25 @@ void
+ caja_module_setup (void)
+ {
+     static gboolean initialized = FALSE;
++    gchar *caja_extension_dirs;
++    gchar **dir_vector;
+ 
+     if (!initialized)
+     {
+         initialized = TRUE;
+ 
++        caja_extension_dirs = (gchar *) g_getenv ("CAJA_EXTENSION_DIRS");
++
++        if (caja_extension_dirs)
++        {
++            dir_vector = g_strsplit (caja_extension_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
++
++            for (gchar **dir = dir_vector; *dir != NULL; ++ dir)
++                load_module_dir (*dir);
++
++            g_strfreev(dir_vector);
++        }
++
+         load_module_dir (CAJA_EXTENSIONDIR);
+ 
+         eel_debug_call_at_shutdown (free_module_objects);
+-- 
+2.25.0
+
diff --git a/nixpkgs/pkgs/desktops/mate/caja/default.nix b/nixpkgs/pkgs/desktops/mate/caja/default.nix
new file mode 100644
index 000000000000..c533f78849cc
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/caja/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, gtk3, libnotify, libxml2, libexif, exempi, mate, hicolor-icon-theme, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "caja";
+  version = "1.24.1";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0ylgb4b31vwgqmmknrhm4m9gfa1rzb9azpdd9myi0hscrr3h22z5";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    libnotify
+    libxml2
+    libexif
+    exempi
+    mate.mate-desktop
+    hicolor-icon-theme
+  ];
+
+  patches = [
+    ./caja-extension-dirs.patch
+  ];
+
+  configureFlags = [ "--disable-update-mimedb" ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "File manager for the MATE desktop";
+    homepage = "https://mate-desktop.org";
+    license = with licenses; [ gpl2Plus lgpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/default.nix b/nixpkgs/pkgs/desktops/mate/default.nix
new file mode 100644
index 000000000000..291d26afcd5c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/default.nix
@@ -0,0 +1,102 @@
+{ pkgs, newScope }:
+
+let
+  callPackage = newScope self;
+
+  self = rec {
+
+    # Update script tailored to mate packages from git repository
+    mateUpdateScript = { pname, version, odd-unstable ? true, url ? "https://pub.mate-desktop.org/releases" }:
+      pkgs.genericUpdater {
+        inherit pname version odd-unstable;
+        attrPath = "mate.${pname}";
+        versionLister = "${pkgs.common-updater-scripts}/bin/list-archive-two-level-versions ${url}";
+      };
+
+    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 { };
+    libmatemixer = callPackage ./libmatemixer { };
+    libmateweather = callPackage ./libmateweather { };
+    marco = callPackage ./marco { };
+    mate-applets = callPackage ./mate-applets { };
+    mate-backgrounds = callPackage ./mate-backgrounds { };
+    mate-calc = callPackage ./mate-calc { };
+    mate-common = callPackage ./mate-common { };
+    mate-control-center = callPackage ./mate-control-center { };
+    mate-desktop = callPackage ./mate-desktop { };
+    mate-icon-theme = callPackage ./mate-icon-theme { };
+    mate-icon-theme-faenza = callPackage ./mate-icon-theme-faenza { };
+    mate-indicator-applet = callPackage ./mate-indicator-applet { };
+    mate-media = callPackage ./mate-media { };
+    mate-menus = callPackage ./mate-menus { };
+    mate-netbook = callPackage ./mate-netbook { };
+    mate-notification-daemon = callPackage ./mate-notification-daemon { };
+    mate-panel = callPackage ./mate-panel { };
+    mate-polkit = callPackage ./mate-polkit { };
+    mate-power-manager = callPackage ./mate-power-manager { };
+    mate-sensors-applet = callPackage ./mate-sensors-applet { };
+    mate-session-manager = callPackage ./mate-session-manager { };
+    mate-settings-daemon = callPackage ./mate-settings-daemon { };
+    mate-screensaver = callPackage ./mate-screensaver { };
+    mate-system-monitor = callPackage ./mate-system-monitor { };
+    mate-terminal = callPackage ./mate-terminal { };
+    mate-themes = callPackage ./mate-themes { };
+    mate-tweak = callPackage ./mate-tweak { };
+    mate-user-guide = callPackage ./mate-user-guide { };
+    mate-user-share = callPackage ./mate-user-share { };
+    mate-utils = callPackage ./mate-utils { };
+    mozo = callPackage ./mozo { };
+    pluma = callPackage ./pluma { };
+    python-caja = callPackage ./python-caja { };
+
+    basePackages = [
+      caja
+      libmatekbd
+      libmatemixer
+      libmateweather
+      marco
+      mate-common
+      mate-control-center
+      mate-desktop
+      mate-icon-theme
+      mate-menus
+      mate-notification-daemon
+      mate-panel
+      mate-polkit
+      mate-session-manager
+      mate-settings-daemon
+      mate-themes
+    ];
+
+    extraPackages = [
+      atril
+      caja-extensions
+      engrampa
+      eom
+      mate-applets
+      mate-backgrounds
+      mate-calc
+      mate-indicator-applet
+      mate-media
+      mate-netbook
+      mate-power-manager
+      mate-screensaver
+      mate-sensors-applet
+      mate-system-monitor
+      mate-terminal
+      mate-user-guide
+      # mate-user-share
+      mate-utils
+      mozo
+      pluma
+    ];
+
+  };
+
+in self
diff --git a/nixpkgs/pkgs/desktops/mate/engrampa/default.nix b/nixpkgs/pkgs/desktops/mate/engrampa/default.nix
new file mode 100644
index 000000000000..81d34b8b1259
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/engrampa/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, itstool, libxml2, gtk3, file, mate, hicolor-icon-theme, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "engrampa";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0x26djz73g3fjwzcpr7k60xb6qx5izhw7lf2ggn34iwpihl0sa7f";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    itstool
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    libxml2
+    gtk3
+    file #libmagic
+    mate.caja
+    hicolor-icon-theme
+    mate.mate-desktop
+  ];
+
+  configureFlags = [
+    "--with-cajadir=$$out/lib/caja/extensions-2.0"
+    "--enable-magic"
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Archive Manager for MATE";
+    homepage = "https://mate-desktop.org";
+    license = with licenses; [ gpl2Plus lgpl2Plus fdl11Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/eom/default.nix b/nixpkgs/pkgs/desktops/mate/eom/default.nix
new file mode 100644
index 000000000000..27c120796541
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/eom/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, itstool, exempi, lcms2, libexif, libjpeg, librsvg, libxml2, libpeas, shared-mime-info, gtk3, mate, hicolor-icon-theme, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "eom";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "08rjckr1hdw7c31f2hzz3vq0rn0c5z3hmvl409y6k6ns583k1bgf";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    itstool
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    exempi
+    lcms2
+    libexif
+    libjpeg
+    librsvg
+    libxml2
+    shared-mime-info
+    gtk3
+    libpeas
+    mate.mate-desktop
+    hicolor-icon-theme
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = {
+    description = "An image viewing and cataloging program for the MATE desktop";
+    homepage = "https://mate-desktop.org";
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.unix;
+    maintainers = [ lib.maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/libmatekbd/default.nix b/nixpkgs/pkgs/desktops/mate/libmatekbd/default.nix
new file mode 100644
index 000000000000..8d0b567f1615
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/libmatekbd/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, gtk3, libxklavier, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "libmatekbd";
+  version = "1.24.1";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "17mcxfkvl14p04id3n5kbhpjwjq00c8wmbyciyy2hm7kwdln6zx8";
+  };
+
+  nativeBuildInputs = [ pkg-config gettext ];
+
+  buildInputs = [ gtk3 libxklavier ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Keyboard management library for MATE";
+    homepage = "https://github.com/mate-desktop/libmatekbd";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/libmatemixer/default.nix b/nixpkgs/pkgs/desktops/mate/libmatemixer/default.nix
new file mode 100644
index 000000000000..4fe73fadbc4a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/libmatemixer/default.nix
@@ -0,0 +1,36 @@
+{ config, lib, stdenv, fetchurl, pkg-config, gettext, glib
+, alsaSupport ? stdenv.isLinux, alsa-lib
+, pulseaudioSupport ? config.pulseaudio or true, libpulseaudio
+, ossSupport ? false
+, mateUpdateScript
+}:
+
+stdenv.mkDerivation rec {
+  pname = "libmatemixer";
+  version = "1.24.1";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1n6rq7k66zvfd6sb7h92xihh021w9hysfa4yd1mzjcbb7c62ybqx";
+  };
+
+  nativeBuildInputs = [ pkg-config gettext ];
+
+  buildInputs = [ glib ]
+    ++ lib.optional alsaSupport alsa-lib
+    ++ lib.optional pulseaudioSupport libpulseaudio;
+
+  configureFlags = lib.optional ossSupport "--enable-oss";
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Mixer library for MATE";
+    homepage = "https://github.com/mate-desktop/libmatemixer";
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/libmateweather/default.nix b/nixpkgs/pkgs/desktops/mate/libmateweather/default.nix
new file mode 100644
index 000000000000..b042df0fe1ae
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/libmateweather/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, gtk3, libsoup, tzdata, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "libmateweather";
+  version = "1.24.1";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "02d7c59pami1fzxg73mp6risa9hvsdpgs68f62wkg09nrppzsk4v";
+  };
+
+  nativeBuildInputs = [ pkg-config gettext ];
+
+  buildInputs = [ gtk3 libsoup tzdata ];
+
+  configureFlags = [
+    "--with-zoneinfo-dir=${tzdata}/share/zoneinfo"
+    "--enable-locations-compression"
+  ];
+
+  preFixup = "rm -f $out/share/icons/mate/icon-theme.cache";
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Library to access weather information from online services for MATE";
+    homepage = "https://github.com/mate-desktop/libmateweather";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/marco/default.nix b/nixpkgs/pkgs/desktops/mate/marco/default.nix
new file mode 100644
index 000000000000..8c6df49fd127
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/marco/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, itstool, libxml2, libcanberra-gtk3, libgtop
+, libXdamage, libXpresent, libstartup_notification, gnome, gtk3, mate-settings-daemon, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "marco";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "19s2y2s9immp86ni3395mgxl605m2wn10m8399y9qkgw2b5m10s9";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    itstool
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    libxml2
+    libcanberra-gtk3
+    libgtop
+    libXdamage
+    libXpresent
+    libstartup_notification
+    gtk3
+    gnome.zenity
+    mate-settings-daemon
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "MATE default window manager";
+    homepage = "https://github.com/mate-desktop/marco";
+    license = [ licenses.gpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-applets/default.nix b/nixpkgs/pkgs/desktops/mate/mate-applets/default.nix
new file mode 100644
index 000000000000..3a34d7af7157
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-applets/default.nix
@@ -0,0 +1,52 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, itstool, gnome, glib, gtk3, gtksourceview3, libwnck
+, libgtop, libxml2, libnotify, polkit, upower, wirelesstools, mate, hicolor-icon-theme, wrapGAppsHook
+, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-applets";
+  version = "1.24.1";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0h70i4x3bk017pgv4zn280682wm58vwdjm7kni91ni8rmblnnvyp";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    itstool
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    gtksourceview3
+    gnome.gucharmap
+    libwnck
+    libgtop
+    libxml2
+    libnotify
+    polkit
+    upower
+    wirelesstools
+    mate.libmateweather
+    mate.mate-panel
+    hicolor-icon-theme
+  ];
+
+  configureFlags = [ "--enable-suid=no" ];
+
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Applets for use with the MATE panel";
+    homepage = "https://mate-desktop.org";
+    license = with licenses; [ gpl2Plus lgpl2Plus ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-backgrounds/default.nix b/nixpkgs/pkgs/desktops/mate/mate-backgrounds/default.nix
new file mode 100644
index 000000000000..cfe1325b839f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-backgrounds/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchurl, meson, ninja, gettext, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-backgrounds";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1ixb2vlm3dr52ibp4ggrbkf38m3q6i5lxjg4ix82gxbb6h6a3gp5";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    meson
+    ninja
+  ];
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Background images and data for MATE";
+    homepage = "https://mate-desktop.org";
+    license = with licenses; [ gpl2Plus cc-by-sa-40 ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-calc/default.nix b/nixpkgs/pkgs/desktops/mate/mate-calc/default.nix
new file mode 100644
index 000000000000..a3e8d3b5951d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-calc/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, itstool, gtk3, libxml2, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-calc";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1yg8j0dqy37fljd20pwxdgna3f1v7k9wmdr9l4r1nqf4a7zwi96l";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    itstool
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    libxml2
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Calculator for the MATE desktop";
+    homepage = "https://mate-desktop.org";
+    license = [ licenses.gpl2Plus ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-common/default.nix b/nixpkgs/pkgs/desktops/mate/mate-common/default.nix
new file mode 100644
index 000000000000..58314df673ab
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-common/default.nix
@@ -0,0 +1,23 @@
+{ lib, stdenv, fetchurl, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-common";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0srb2ly5pjq1g0cs8m39nbfv33dvsc2j4g2gw081xis3awzh3lki";
+  };
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = {
+    description = "Common files for development of MATE packages";
+    homepage = "https://mate-desktop.org";
+    license = lib.licenses.gpl3Plus;
+    platforms = lib.platforms.unix;
+    maintainers = [ lib.maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-control-center/default.nix b/nixpkgs/pkgs/desktops/mate/mate-control-center/default.nix
new file mode 100644
index 000000000000..b94e7ecfd06d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-control-center/default.nix
@@ -0,0 +1,62 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, itstool, libxml2, dbus-glib
+, libxklavier, libcanberra-gtk3, librsvg, libappindicator-gtk3
+, desktop-file-utils, dconf, gtk3, polkit, mate, hicolor-icon-theme, wrapGAppsHook
+, mateUpdateScript
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mate-control-center";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "18vsqkcl4n3k5aa05fqha61jc3133zw07gd604sm0krslwrwdn39";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    itstool
+    desktop-file-utils
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    libxml2
+    dbus-glib
+    libxklavier
+    libcanberra-gtk3
+    librsvg
+    libappindicator-gtk3
+    gtk3
+    dconf
+    polkit
+    hicolor-icon-theme
+    mate.mate-desktop
+    mate.libmatekbd
+    mate.mate-menus
+    mate.marco
+    mate.mate-settings-daemon
+  ];
+
+  configureFlags = [ "--disable-update-mimedb" ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      # WM keyboard shortcuts
+      --prefix XDG_DATA_DIRS : "${mate.marco}/share"
+    )
+  '';
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Utilities to configure the MATE desktop";
+    homepage = "https://github.com/mate-desktop/mate-control-center";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-desktop/default.nix b/nixpkgs/pkgs/desktops/mate/mate-desktop/default.nix
new file mode 100644
index 000000000000..62e0b5b3195b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-desktop/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, isocodes, gnome, gtk3, dconf, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-desktop";
+  version = "1.24.1";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1nd1dn8mm1z6x4r68a25q4vzys1a6fmbzc94ss1z1n1872pczs6i";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    dconf
+    gtk3
+    isocodes
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Library with common API for various MATE modules";
+    homepage = "https://mate-desktop.org";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-icon-theme-faenza/default.nix b/nixpkgs/pkgs/desktops/mate/mate-icon-theme-faenza/default.nix
new file mode 100644
index 000000000000..7dc4423fb6b2
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-icon-theme-faenza/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, fetchurl, autoreconfHook, gtk3, mate, hicolor-icon-theme, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-icon-theme-faenza";
+  version = "1.20.0";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "000vr9cnbl2qlysf2gyg1lsjirqdzmwrnh6d3hyrsfc0r2vh4wna";
+  };
+
+  nativeBuildInputs = [ autoreconfHook gtk3 ];
+
+  propagatedBuildInputs = [ mate.mate-icon-theme hicolor-icon-theme ];
+
+  dontDropIconThemeCache = true;
+
+  postInstall = ''
+    for theme in "$out"/share/icons/*; do
+      gtk-update-icon-cache "$theme"
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Faenza icon theme from MATE";
+    homepage = "https://mate-desktop.org";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-icon-theme/default.nix b/nixpkgs/pkgs/desktops/mate/mate-icon-theme/default.nix
new file mode 100644
index 000000000000..cf18cf528f28
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-icon-theme/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, iconnamingutils, librsvg, gtk3, hicolor-icon-theme, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-icon-theme";
+  version = "1.24.0";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0a2lz61ivwwcdznmwlmgjr6ipr9sdl5g2czbagnpxkwz8f3m77na";
+  };
+
+  nativeBuildInputs = [ pkg-config gettext iconnamingutils ];
+
+  buildInputs = [ librsvg ];
+
+  propagatedBuildInputs = [
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  postInstall = ''
+    for theme in "$out"/share/icons/*; do
+      "${gtk3.out}/bin/gtk-update-icon-cache" "$theme"
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = {
+    description = "Icon themes from MATE";
+    homepage = "https://mate-desktop.org";
+    license = lib.licenses.lgpl3Plus;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-indicator-applet/default.nix b/nixpkgs/pkgs/desktops/mate/mate-indicator-applet/default.nix
new file mode 100644
index 000000000000..804bf2352d08
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-indicator-applet/default.nix
@@ -0,0 +1,47 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, gtk3, libindicator-gtk3, mate, hicolor-icon-theme, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-indicator-applet";
+  version = "1.24.0";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0m7pvbs5hhy5f400wqb8wp0dw3pyjpjnjax9qzc73j97l1k3zawf";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    libindicator-gtk3
+    mate.mate-panel
+    hicolor-icon-theme
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    homepage = "https://github.com/mate-desktop/mate-indicator-applet";
+    description = "MATE panel indicator applet";
+    longDescription = ''
+      A small applet to display information from various applications
+      consistently in the panel.
+
+      The indicator applet exposes Ayatana Indicators in the MATE Panel.
+      Ayatana Indicators are an initiative by Canonical to provide crisp and
+      clean system and application status indication. They take the form of
+      an icon and associated menu, displayed (usually) in the desktop panel.
+      Existing indicators include the Message Menu, Battery Menu and Sound
+      menu.
+    '';
+    license = with licenses; [ gpl3Plus lgpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-media/default.nix b/nixpkgs/pkgs/desktops/mate/mate-media/default.nix
new file mode 100644
index 000000000000..6072e81fb3cc
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-media/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, libtool, libxml2, libcanberra-gtk3, gtk3, mate, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-media";
+  version = "1.24.1";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "118i4w2i2g3hfgbfn3hjzjkfq8vjj6049r7my3vna9js23b7ab92";
+  };
+
+  buildInputs = [
+    libxml2
+    libcanberra-gtk3
+    gtk3
+    mate.libmatemixer
+    mate.mate-panel
+    mate.mate-desktop
+  ];
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    libtool
+    wrapGAppsHook
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Media tools for MATE";
+    homepage = "https://mate-desktop.org";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo maintainers.chpatrick ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-menus/default.nix b/nixpkgs/pkgs/desktops/mate/mate-menus/default.nix
new file mode 100644
index 000000000000..5b11c20380a8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-menus/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, glib, gobject-introspection, python3, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-menus";
+  version = "1.24.1";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "17zc9fn14jykhn30z8iwlw0qwk32ivj6gxgww3xrqvqk0da5yaas";
+  };
+
+  nativeBuildInputs = [ pkg-config gettext gobject-introspection ];
+
+  buildInputs = [ glib python3 ];
+
+  makeFlags = [
+    "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/"
+    "INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0"
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Menu system for MATE";
+    homepage = "https://github.com/mate-desktop/mate-menus";
+    license = with licenses; [ gpl2Plus lgpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-netbook/default.nix b/nixpkgs/pkgs/desktops/mate/mate-netbook/default.nix
new file mode 100644
index 000000000000..de452f456a2c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-netbook/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, gtk3, libwnck, libfakekey, libXtst, mate, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-netbook";
+  version = "1.24.0";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1bmk9gq5gcqkvfppa7i1hqfph8sajc3xs189s4ha97g0ifwd98a8";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    libwnck
+    libfakekey
+    libXtst
+    mate.mate-panel
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "MATE utilities for netbooks";
+    longDescription = ''
+      MATE utilities for netbooks are an applet and a daemon to maximize
+      windows and move their titles on the panel.
+
+      Installing these utilities is recommended for netbooks and similar
+      devices with low resolution displays.
+    '';
+    homepage = "https://mate-desktop.org";
+    license = with licenses; [ gpl3Only lgpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-notification-daemon/default.nix b/nixpkgs/pkgs/desktops/mate/mate-notification-daemon/default.nix
new file mode 100644
index 000000000000..ac5e5376a8e7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-notification-daemon/default.nix
@@ -0,0 +1,40 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, glib, libcanberra-gtk3,
+  libnotify, libwnck, gtk3, libxml2, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-notification-daemon";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "02mf9186cbziyvz7ycb0j9b7rn085a7f9hrm03n28q5kz0z1k92q";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    libxml2 # for xmllint
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    libcanberra-gtk3
+    libnotify
+    libwnck
+    gtk3
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Notification daemon for MATE Desktop";
+    homepage = "https://github.com/mate-desktop/mate-notification-daemon";
+    license = with licenses; [ gpl2Plus gpl3Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-panel/default.nix b/nixpkgs/pkgs/desktops/mate/mate-panel/default.nix
new file mode 100644
index 000000000000..cd73408d4c80
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-panel/default.nix
@@ -0,0 +1,51 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, itstool, glib, libwnck, librsvg, libxml2, dconf, gtk3, mate, hicolor-icon-theme, gobject-introspection, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-panel";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1sj851h71nq4ssrsd4k5b0vayxmspl5x3rhf488b2xpcj81vmi9h";
+  };
+
+  nativeBuildInputs = [
+    gobject-introspection
+    gettext
+    itstool
+    pkg-config
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    libwnck
+    librsvg
+    libxml2
+    gtk3
+    dconf
+    mate.libmateweather
+    mate.mate-desktop
+    mate.mate-menus
+    hicolor-icon-theme
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  makeFlags = [
+    "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/"
+    "INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0"
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "The MATE panel";
+    homepage = "https://github.com/mate-desktop/mate-panel";
+    license = with licenses; [ gpl2Plus lgpl2Plus fdl11Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-polkit/default.nix b/nixpkgs/pkgs/desktops/mate/mate-polkit/default.nix
new file mode 100644
index 000000000000..174e2e466248
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-polkit/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, gtk3, gobject-introspection, libappindicator-gtk3, libindicator-gtk3, polkit, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-polkit";
+  version = "1.24.0";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1450bqzlnvwy3xa98lj102j2cf7piqbxcd1cy2zp41rdl8ri3gvn";
+  };
+
+  nativeBuildInputs = [
+    gobject-introspection
+    gettext
+    pkg-config
+  ];
+
+  buildInputs = [
+    gtk3
+    libappindicator-gtk3
+    libindicator-gtk3
+    polkit
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Integrates polkit authentication for MATE desktop";
+    homepage = "https://mate-desktop.org";
+    license = [ licenses.gpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-power-manager/default.nix b/nixpkgs/pkgs/desktops/mate/mate-power-manager/default.nix
new file mode 100644
index 000000000000..fd7b19e1de37
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-power-manager/default.nix
@@ -0,0 +1,46 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, glib, itstool, libxml2, mate-panel, libnotify, libcanberra-gtk3, dbus-glib, upower, gnome, gtk3, libtool, polkit, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-power-manager";
+  version = "1.24.3";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1rmcrpii3hl35qjznk6h5cq72n60cs12n294hjyakxr9kvgns7l6";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    libtool
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+     glib
+     itstool
+     libxml2
+     libcanberra-gtk3
+     gtk3
+     gnome.libgnome-keyring
+     libnotify
+     dbus-glib
+     upower
+     polkit
+     mate-panel
+  ];
+
+  configureFlags = [ "--enable-applets" ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "The MATE Power Manager";
+    homepage = "https://mate-desktop.org";
+    license = with licenses; [ gpl2Plus fdl11Plus ];
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ romildo chpatrick ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-screensaver/default.nix b/nixpkgs/pkgs/desktops/mate/mate-screensaver/default.nix
new file mode 100644
index 000000000000..f132bbcd26df
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-screensaver/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, gtk3, dbus-glib, libXScrnSaver, libnotify, libxml2, pam, systemd, mate, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-screensaver";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "18hxhglryfcbpbns9izigiws7lvdv5dnsaaz226ih3aar5db1ysy";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    libxml2 # provides xmllint
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    dbus-glib
+    libXScrnSaver
+    libnotify
+    pam
+    systemd
+    mate.mate-desktop
+    mate.mate-menus
+  ];
+
+  configureFlags = [ "--without-console-kit" ];
+
+  makeFlags = [ "DBUS_SESSION_SERVICE_DIR=$(out)/etc" ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Screen saver and locker for the MATE desktop";
+    homepage = "https://mate-desktop.org";
+    license = with licenses; [ gpl2Plus lgpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-sensors-applet/default.nix b/nixpkgs/pkgs/desktops/mate/mate-sensors-applet/default.nix
new file mode 100644
index 000000000000..849f767c7c20
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-sensors-applet/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, itstool, gtk3, libxml2, libxslt, libatasmart, libnotify
+, lm_sensors, mate, hicolor-icon-theme, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-sensors-applet";
+  version = "1.24.1";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1nb4fy3mcymv7pmnc0czpxgp1sqvs533jwnqv1b5cqby415ljb16";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    itstool
+    wrapGAppsHook
+  ];
+
+  # maybe add nvidia-settings later on
+  buildInputs = [
+    gtk3
+    libxml2
+    libxslt
+    libatasmart
+    libnotify
+    lm_sensors
+    mate.mate-panel
+    hicolor-icon-theme
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    homepage = "https://github.com/mate-desktop/mate-sensors-applet";
+    description = "MATE panel applet for hardware sensors";
+    license = with licenses; [ gpl2Plus ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-session-manager/default.nix b/nixpkgs/pkgs/desktops/mate/mate-session-manager/default.nix
new file mode 100644
index 000000000000..f790b0f65dc3
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-session-manager/default.nix
@@ -0,0 +1,60 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, xtrans, dbus-glib, systemd,
+  libSM, libXtst, gtk3, epoxy, polkit, hicolor-icon-theme, mate,
+  wrapGAppsHook, fetchpatch, mateUpdateScript
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mate-session-manager";
+  version = "1.24.3";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "18mhv8dq18hvx28gi88c9499s3s1nsq55m64sas8fqlvnp2sx84h";
+  };
+
+  patches = [
+    # allow turning on debugging from environment variable
+    (fetchpatch {
+      url = "https://github.com/mate-desktop/mate-session-manager/commit/3ab6fbfc811d00100d7a2959f8bbb157b536690d.patch";
+      sha256 = "0yjaklq0mp44clymyhy240kxlw95z3azmravh4f5pfm9dys33sg0";
+    })
+  ];
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    xtrans
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    dbus-glib
+    systemd
+    libSM
+    libXtst
+    gtk3
+    mate.mate-desktop
+    hicolor-icon-theme
+    epoxy
+    polkit
+  ];
+
+  enableParallelBuilding = true;
+
+  postFixup = ''
+    substituteInPlace $out/share/xsessions/mate.desktop \
+      --replace "Exec=mate-session" "Exec=$out/bin/mate-session"
+  '';
+
+  passthru.providedSessions = [ "mate" ];
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "MATE Desktop session manager";
+    homepage = "https://github.com/mate-desktop/mate-session-manager";
+    license = with licenses; [ gpl2Plus lgpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/mate/mate-settings-daemon/default.nix
new file mode 100644
index 000000000000..6c35a1d63120
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-settings-daemon/default.nix
@@ -0,0 +1,50 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, glib, dbus-glib, libxklavier,
+  libcanberra-gtk3, libnotify, nss, polkit, dconf, gtk3, mate,
+  pulseaudioSupport ? stdenv.config.pulseaudio or true, libpulseaudio,
+  wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-settings-daemon";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "051r7xrx1byllsszbwsk646sq4izyag9yxg8jw2rm6x6mgwb89cc";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    pkg-config
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    dbus-glib
+    libxklavier
+    libcanberra-gtk3
+    libnotify
+    nss
+    polkit
+    gtk3
+    dconf
+    mate.mate-desktop
+    mate.libmatekbd
+    mate.libmatemixer
+  ] ++ lib.optional pulseaudioSupport libpulseaudio;
+
+  configureFlags = lib.optional pulseaudioSupport "--enable-pulse";
+
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "MATE settings daemon";
+    homepage = "https://github.com/mate-desktop/mate-settings-daemon";
+    license = with licenses; [ gpl2Plus gpl3Plus lgpl2Plus mit ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-system-monitor/default.nix b/nixpkgs/pkgs/desktops/mate/mate-system-monitor/default.nix
new file mode 100644
index 000000000000..fed7dc12629c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-system-monitor/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, itstool, gtkmm3, libxml2, libgtop, libwnck, librsvg, polkit, systemd, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-system-monitor";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1mbny5hs5805398krvcsvi1jfhyq9a9dfciyrnis67n2yisr1hzp";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    itstool
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtkmm3
+    libxml2
+    libgtop
+    libwnck
+    librsvg
+    polkit
+    systemd
+  ];
+
+  configureFlags = [ "--enable-systemd" ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "System monitor for the MATE desktop";
+    homepage = "https://mate-desktop.org";
+    license = [ licenses.gpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-terminal/default.nix b/nixpkgs/pkgs/desktops/mate/mate-terminal/default.nix
new file mode 100644
index 000000000000..2c4d4223eccc
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-terminal/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, glib, itstool, libxml2, mate, dconf, gtk3, vte, pcre2, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-terminal";
+  version = "1.24.1";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0qmyhxmarwkxad8k1m9q1iwx70zhfp6zc2mh74nv26nj4gr3h3am";
+  };
+
+  buildInputs = [
+     glib
+     itstool
+     libxml2
+
+     mate.mate-desktop
+
+     vte
+     gtk3
+     dconf
+     pcre2
+  ];
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    wrapGAppsHook
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "The MATE Terminal Emulator";
+    homepage = "https://mate-desktop.org";
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-themes/default.nix b/nixpkgs/pkgs/desktops/mate/mate-themes/default.nix
new file mode 100644
index 000000000000..6a1be82c8a6d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-themes/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, mate-icon-theme, gtk2, gtk3,
+  gtk_engines, gtk-engine-murrine, gdk-pixbuf, librsvg, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-themes";
+  version = "3.22.22";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/themes/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "18crdwfpfm3br4pv94wy7rpmzzb69im4j8dgq1b7c8gcbbzay05x";
+  };
+
+  nativeBuildInputs = [ pkg-config gettext gtk3 ];
+
+  buildInputs = [ mate-icon-theme gtk2 gtk_engines gdk-pixbuf librsvg ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  dontDropIconThemeCache = true;
+
+  postInstall = ''
+    gtk-update-icon-cache "$out"/share/icons/ContrastHigh
+  '';
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript {
+    inherit pname version;
+    url = "https://pub.mate-desktop.org/releases/themes";
+  };
+
+  meta = with lib; {
+    description = "A set of themes from MATE";
+    homepage = "https://mate-desktop.org";
+    license = with licenses; [ lgpl21Plus lgpl3Only gpl3Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-tweak/default.nix b/nixpkgs/pkgs/desktops/mate/mate-tweak/default.nix
new file mode 100644
index 000000000000..830cf092f80e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-tweak/default.nix
@@ -0,0 +1,91 @@
+{ lib
+, fetchFromGitHub
+, python3Packages
+, intltool
+, mate
+, libnotify
+, gtk3
+, gdk-pixbuf
+, gobject-introspection
+, wrapGAppsHook
+, glib
+, genericUpdater
+, common-updater-scripts
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "mate-tweak";
+  version = "21.04.3";
+
+  src = fetchFromGitHub {
+    owner = "ubuntu-mate";
+    repo = pname;
+    rev = version;
+    sha256 = "0vpzy7awhb1xfsdjsrchy5b9dygj4ixdcvgx5v5w8hllmi4yxpc1";
+  };
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    intltool
+    python3Packages.distutils_extra
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    gtk3
+    gdk-pixbuf
+    libnotify
+    glib
+    mate.mate-applets
+    mate.mate-panel
+    mate.marco
+    mate.libmatekbd
+    mate.mate-session-manager
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    distro
+    pygobject3
+    psutil
+    setproctitle
+  ];
+
+  strictDeps = false;
+
+  dontWrapGApps = true;
+
+  postPatch = ''
+    # mate-tweak hardcodes absolute paths everywhere. Nuke from orbit.
+    find . -type f -exec sed -i \
+      -e s,/usr/lib/mate-tweak,$out/lib/mate-tweak,g \
+      {} +
+
+    sed -i 's,{prefix}/,,g' setup.py
+  '';
+
+  # Arguments to be passed to `makeWrapper`, only used by buildPython*
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  postFixup = ''
+    for i in bin/.mate-tweak-wrapped lib/mate-tweak/mate-tweak-helper; do
+      sed -i "s,usr,run/current-system/sw,g" $out/$i
+    done
+  '';
+
+  passthru.updateScript = genericUpdater {
+    inherit pname version;
+    attrPath = "mate.${pname}";
+    versionLister = "${common-updater-scripts}/bin/list-git-tags ${src.meta.homepage}";
+  };
+
+  meta = with lib; {
+    description = "Tweak tool for the MATE Desktop";
+    homepage = "https://github.com/ubuntu-mate/mate-tweak";
+    changelog = "https://github.com/ubuntu-mate/mate-tweak/releases/tag/${version}";
+    license = [ licenses.gpl2Plus ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ luc65r ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-user-guide/default.nix b/nixpkgs/pkgs/desktops/mate/mate-user-guide/default.nix
new file mode 100644
index 000000000000..d7c83cc98209
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-user-guide/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchurl, gettext, itstool, libxml2, yelp, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-user-guide";
+  version = "1.24.0";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0ddxya84iydvy85dbqls0wmz2rph87wri3rsdhv4rkbhh5g4sd7f";
+  };
+
+  nativeBuildInputs = [ itstool gettext libxml2 ];
+
+  buildInputs = [ yelp ];
+
+  postPatch = ''
+    substituteInPlace mate-user-guide.desktop.in.in \
+      --replace "Exec=yelp" "Exec=${yelp}/bin/yelp"
+  '';
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "MATE User Guide";
+    homepage = "https://mate-desktop.org";
+    license = with licenses; [ gpl2Plus fdl12 ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-user-share/default.nix b/nixpkgs/pkgs/desktops/mate/mate-user-share/default.nix
new file mode 100644
index 000000000000..1126e5851352
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-user-share/default.nix
@@ -0,0 +1,57 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, itstool, gtk3, dbus-glib, libnotify, libxml2
+, libcanberra-gtk3, mod_dnssd, apacheHttpd, hicolor-icon-theme, mate, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-user-share";
+  version = "1.24.0";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1h4aabcby96nsg557brzzb0an1qvnawhim2rinzlzg4fhkvdfnr5";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    itstool
+    libxml2
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    dbus-glib
+    libnotify
+    libcanberra-gtk3
+    mate.caja
+    hicolor-icon-theme
+    # Should mod_dnssd and apacheHttpd be runtime dependencies?
+    # In gnome-user-share they are not.
+    #mod_dnssd
+    #apacheHttpd
+  ];
+
+  preConfigure = ''
+    sed -e 's,^LoadModule dnssd_module.\+,LoadModule dnssd_module ${mod_dnssd}/modules/mod_dnssd.so,' \
+      -e 's,''${HTTP_MODULES_PATH},${apacheHttpd}/modules,' \
+      -i data/dav_user_2.4.conf
+  '';
+
+  configureFlags = [
+    "--with-httpd=${apacheHttpd.out}/bin/httpd"
+    "--with-modules-path=${apacheHttpd.dev}/modules"
+    "--with-cajadir=$(out)/lib/caja/extensions-2.0"
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "User level public file sharing for the MATE desktop";
+    homepage = "https://github.com/mate-desktop/mate-user-share";
+    license = with licenses; [ gpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mate-utils/default.nix b/nixpkgs/pkgs/desktops/mate/mate-utils/default.nix
new file mode 100644
index 000000000000..0b7b181bd576
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mate-utils/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, itstool, glib, gtk3, libxml2, libgtop, libcanberra-gtk3
+, inkscape, udisks2, mate, hicolor-icon-theme, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "mate-utils";
+  version = "1.24.0";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1b16n1628gcsym5mph6lr9x5xm4rgkxsa8xwr2wlx8g2gw2775i1";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    itstool
+    inkscape
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    libgtop
+    libcanberra-gtk3
+    libxml2
+    udisks2
+    mate.mate-panel
+    hicolor-icon-theme
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Utilities for the MATE desktop";
+    homepage = "https://mate-desktop.org";
+    license = with licenses; [ gpl2Plus lgpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/mozo/default.nix b/nixpkgs/pkgs/desktops/mate/mozo/default.nix
new file mode 100644
index 000000000000..4122e8231654
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/mozo/default.nix
@@ -0,0 +1,32 @@
+{ lib, python3, fetchurl, pkg-config, gettext, mate, gtk3, glib, wrapGAppsHook, gobject-introspection, mateUpdateScript }:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "mozo";
+  version = "1.24.1";
+
+  format = "other";
+  doCheck = false;
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "14ps43gdh1sfvq49yhl58gxq3rc0d25i2d7r4ghlzf07ssxl53b0";
+  };
+
+  nativeBuildInputs = [ pkg-config gettext gobject-introspection wrapGAppsHook ];
+
+  propagatedBuildInputs =  [ mate.mate-menus python3.pkgs.pygobject3 ];
+
+  buildInputs = [ gtk3 glib ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "MATE Desktop menu editor";
+    homepage = "https://github.com/mate-desktop/mozo";
+    license = with licenses; [ lgpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/pluma/default.nix b/nixpkgs/pkgs/desktops/mate/pluma/default.nix
new file mode 100644
index 000000000000..5e226f4d8869
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/pluma/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, perl, itstool, isocodes, enchant, libxml2, python3
+, gnome, gtksourceview3, libpeas, mate, wrapGAppsHook, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "pluma";
+  version = "1.24.2";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "183frfhll3sb4r12p24160j1c1cfd102nlp5rrwvyv5qqm7i2fg4";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    perl
+    itstool
+    isocodes
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    enchant
+    libxml2
+    python3
+    gtksourceview3
+    libpeas
+    gnome.adwaita-icon-theme
+    mate.mate-desktop
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Powerful text editor for the MATE desktop";
+    homepage = "https://mate-desktop.org";
+    license = with licenses; [ gpl2Plus lgpl2Plus fdl11Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/mate/python-caja/default.nix b/nixpkgs/pkgs/desktops/mate/python-caja/default.nix
new file mode 100644
index 000000000000..8104da3420e1
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/mate/python-caja/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenv, fetchurl, pkg-config, gettext, gtk3, mate, python3Packages, mateUpdateScript }:
+
+stdenv.mkDerivation rec {
+  pname = "python-caja";
+  version = "1.24.0";
+
+  src = fetchurl {
+    url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1wp61q64cgzr3syd3niclj6rjk87wlib5m86i0myf5ph704r3qgg";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gettext
+    python3Packages.wrapPython
+  ];
+
+  buildInputs = [
+    gtk3
+    mate.caja
+    python3Packages.python
+    python3Packages.pygobject3
+  ];
+
+  configureFlags = [ "--with-cajadir=$$out/lib/caja/extensions-2.0" ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = mateUpdateScript { inherit pname version; };
+
+  meta = with lib; {
+    description = "Python binding for Caja components";
+    homepage = "https://github.com/mate-desktop/python-caja";
+    license = [ licenses.gpl2Plus ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}