diff --git a/pkgs/applications/misc/glom/default.nix b/pkgs/applications/misc/glom/default.nix
new file mode 100644
index 000000000000..9e71837c0f5d
--- /dev/null
+++ b/pkgs/applications/misc/glom/default.nix
@@ -0,0 +1,132 @@
+{ stdenv
+, fetchFromGitLab
+, pkgconfig
+, autoconf
+, automake
+, libtool
+, mm-common
+, intltool
+, itstool
+, doxygen
+, graphviz
+, makeFontsConf
+, freefont_ttf
+, boost
+, libxmlxx3
+, libxslt
+, libgdamm
+, libarchive
+, libepc
+, python3
+, ncurses
+, glibmm
+, gtk3
+, openssl
+, gtkmm3
+, goocanvasmm2
+, evince
+, isocodes
+, gtksourceviewmm4
+, postgresql
+, gnome3
+, gobject-introspection
+, wrapGAppsHook
+}:
+
+let
+  gda = libgdamm.override {
+    mysqlSupport = true;
+    postgresSupport = true;
+  };
+  python = python3.withPackages (pkgs: with pkgs; [ pygobject3 ]);
+  sphinx-build = python3.pkgs.sphinx.overrideAttrs (super: {
+    postFixup = super.postFixup or "" + ''
+      # Do not propagate Python
+      rm $out/nix-support/propagated-build-inputs
+    '';
+  });
+  boost_python = boost.override { enablePython = true; inherit python; };
+in stdenv.mkDerivation rec {
+  pname = "glom";
+  version = "unstable-2018-12-16";
+
+  outputs = [ "out" "lib" "dev" "doc" "devdoc" ];
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = pname;
+    rev = "fa5ff04f209f35bf3e97bc1c3eb1d1138d6172ce";
+    sha256 = "145hnk96xa4v35i3a3mbf3fnx4nlk8cksc0qhm7nrh8cnnrbdfgn";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    autoconf
+    automake
+    libtool
+    mm-common
+    intltool
+    gnome3.yelp-tools
+    itstool
+    doxygen
+    graphviz
+    sphinx-build
+    wrapGAppsHook
+    gobject-introspection # for setup hook
+  ];
+
+  buildInputs = [
+    boost_python
+    glibmm
+    gtk3
+    openssl
+    libxmlxx3
+    libxslt
+    gda
+    libarchive
+    libepc
+    python
+    ncurses # for python
+    gtkmm3
+    goocanvasmm2
+    evince
+    isocodes
+    python3.pkgs.pygobject3
+    gtksourceviewmm4
+    postgresql # for pg_config
+  ];
+
+  enableParallelBuilding = true;
+
+  preConfigure = "NOCONFIGURE=1 ./autogen.sh";
+
+  configureFlags = [
+    "--with-boost-python=boost_python${stdenv.lib.versions.major python3.version}${stdenv.lib.versions.minor python3.version}"
+  ];
+
+  makeFlags = [
+    "libdocdir=${placeholder "doc"}/share/doc/$(book_name)"
+    "devhelpdir=${placeholder "devdoc"}/share/devhelp/books/$(book_name)"
+  ];
+
+  # Fontconfig error: Cannot load default config file
+  FONTCONFIG_FILE = makeFontsConf {
+    fontDirectories = [ freefont_ttf ];
+  };
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix PYTHONPATH : "${placeholder "out"}/${python3.sitePackages}"
+      --set PYTHONHOME "${python}"
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An easy-to-use database designer and user interface";
+    homepage = http://www.glom.org/;
+    license = [ licenses.lgpl2 licenses.gpl2 ];
+    maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/core/evince/default.nix b/pkgs/desktops/gnome-3/core/evince/default.nix
index 4867335af126..94d39964bc48 100644
--- a/pkgs/desktops/gnome-3/core/evince/default.nix
+++ b/pkgs/desktops/gnome-3/core/evince/default.nix
@@ -4,7 +4,7 @@
 , librsvg, gobject-introspection, yelp-tools, gspell
 , recentListSize ? null # 5 is not enough, allow passing a different number
 , supportXPS ? false    # Open XML Paper Specification via libgxps
-, autoreconfHook
+, autoreconfHook, pruneLibtoolFiles
 }:
 
 stdenv.mkDerivation rec {
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    pkgconfig gobject-introspection intltool itstool wrapGAppsHook yelp-tools autoreconfHook
+    pkgconfig gobject-introspection intltool itstool wrapGAppsHook yelp-tools autoreconfHook pruneLibtoolFiles
   ];
 
   buildInputs = [
diff --git a/pkgs/development/libraries/avahi/default.nix b/pkgs/development/libraries/avahi/default.nix
index 971637bc7870..fc67035ce204 100644
--- a/pkgs/development/libraries/avahi/default.nix
+++ b/pkgs/development/libraries/avahi/default.nix
@@ -1,5 +1,6 @@
 { fetchurl, stdenv, pkgconfig, libdaemon, dbus, perlPackages
 , expat, gettext, intltool, glib, libiconv
+, gtk3Support ? false, gtk3 ? null
 , qt4 ? null
 , qt4Support ? false
 , withLibdnssdCompat ? false }:
@@ -19,13 +20,15 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ libdaemon dbus glib expat libiconv ]
     ++ (with perlPackages; [ perl XMLParser ])
+    ++ (stdenv.lib.optional gtk3Support gtk3)
     ++ (stdenv.lib.optional qt4Support qt4);
 
   nativeBuildInputs = [ pkgconfig gettext intltool glib ];
 
   configureFlags =
     [ "--disable-qt3" "--disable-gdbm" "--disable-mono"
-      "--disable-gtk" "--disable-gtk3"
+      "--disable-gtk"
+      (stdenv.lib.enableFeature gtk3Support "gtk3")
       "--${if qt4Support then "enable" else "disable"}-qt4"
       "--disable-python" "--localstatedir=/var" "--with-distro=none"
       # A systemd unit is provided by the avahi-daemon NixOS module
diff --git a/pkgs/development/libraries/goocanvasmm/default.nix b/pkgs/development/libraries/goocanvasmm/default.nix
new file mode 100644
index 000000000000..b7f56837686d
--- /dev/null
+++ b/pkgs/development/libraries/goocanvasmm/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig, goocanvas2, gtkmm3, gnome3 }:
+
+stdenv.mkDerivation rec {
+  pname = "goocanvasmm";
+  version = "1.90.11";
+
+  outputs = [ "out" "dev" ];
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0vpdfrj59nwzwj8bk4s0h05iyql62pxjzsxh72g3vry07s3i3zw0";
+  };
+  nativeBuildInputs = [ pkgconfig ];
+  propagatedBuildInputs = [ gtkmm3 goocanvas2 ];
+
+  enableParallelBuilding = true;
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "C++ bindings for GooCanvas";
+    homepage = https://wiki.gnome.org/Projects/GooCanvas;
+    license = licenses.lgpl2;
+    maintainers = with maintainers; [ ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/development/libraries/gtksourceviewmm/4.x.nix b/pkgs/development/libraries/gtksourceviewmm/4.x.nix
new file mode 100644
index 000000000000..d60bb29c47ae
--- /dev/null
+++ b/pkgs/development/libraries/gtksourceviewmm/4.x.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, gtkmm3, glibmm, gtksourceview4, gnome3 }:
+
+stdenv.mkDerivation rec {
+  pname = "gtksourceviewmm";
+  version = "3.91.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "088p2ch1b4fvzl9416nw3waj0pqgp31cd5zj4lx5hzzrq2afgapy";
+  };
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      versionPolicy = "none";
+    };
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  propagatedBuildInputs = [ glibmm gtkmm3 gtksourceview4 ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    homepage = https://developer.gnome.org/gtksourceviewmm/;
+    description = "C++ wrapper for gtksourceview";
+    license = licenses.lgpl2;
+    maintainers = gnome3.maintainers;
+  };
+}
+
diff --git a/pkgs/development/libraries/libepc/default.nix b/pkgs/development/libraries/libepc/default.nix
new file mode 100644
index 000000000000..59780699fd13
--- /dev/null
+++ b/pkgs/development/libraries/libepc/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gtk-doc, glib, avahi, gnutls, libuuid, libsoup, gtk3, gnome3 }:
+
+let
+  avahiWithGtk = avahi.override { gtk3Support = true; };
+in stdenv.mkDerivation rec {
+  pname = "libepc";
+  version = "0.4.6";
+
+  outputs = [ "out" "dev" "devdoc" ];
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1s3svb2slqjsrqfv50c2ymnqcijcxb5gnx6bfibwh9l5ga290n91";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    intltool
+    gtk-doc
+  ];
+  buildInputs = [
+    glib
+    libuuid
+    gtk3
+  ];
+  propagatedBuildInputs = [
+    avahiWithGtk
+    gnutls
+    libsoup
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Easy Publish and Consume Library";
+    homepage = https://wiki.gnome.org/Projects/libepc;
+    license = licenses.lgpl21Plus;
+    maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/libgda/default.nix b/pkgs/development/libraries/libgda/default.nix
index ee9323ebc5c0..9bf03f25c9c9 100644
--- a/pkgs/development/libraries/libgda/default.nix
+++ b/pkgs/development/libraries/libgda/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, itstool, libxml2, gtk3, openssl, gnome3, vala
+{ stdenv, fetchurl, pkgconfig, intltool, itstool, libxml2, gtk3, openssl, gnome3, gobject-introspection, vala
 , overrideCC, gcc6
 , mysqlSupport ? false, mysql ? null
 , postgresSupport ? false, postgresql ? null
@@ -23,7 +23,7 @@ assert postgresSupport -> postgresql != null;
 
   hardeningDisable = [ "format" ];
 
-  nativeBuildInputs = [ pkgconfig intltool itstool libxml2 vala ];
+  nativeBuildInputs = [ pkgconfig intltool itstool libxml2 gobject-introspection vala ];
   buildInputs = with stdenv.lib; [ gtk3 openssl gnome3.libgee ]
     ++ optional (mysqlSupport) mysql.connector-c
     ++ optional (postgresSupport) postgresql;
diff --git a/pkgs/development/libraries/libgdamm/default.nix b/pkgs/development/libraries/libgdamm/default.nix
new file mode 100644
index 000000000000..012400a49abc
--- /dev/null
+++ b/pkgs/development/libraries/libgdamm/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, pkgconfig, glibmm, libgda, libxml2, gnome3
+, mysqlSupport ? false, mysql ? null
+, postgresSupport ? false, postgresql ? null }:
+
+let
+  gda = libgda.override {
+    inherit mysqlSupport postgresSupport;
+  };
+in stdenv.mkDerivation rec {
+  pname = "libgdamm";
+  version = "4.99.11";
+
+  outputs = [ "out" "dev" ];
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1fyh15b3f8hmwbswalxk1g4l04yvvybksn5nm7gznn5jl5q010p9";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glibmm libxml2 ];
+  propagatedBuildInputs = [ gda ];
+
+  enableParallelBuilding = true;
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "C++ bindings for libgda";
+    homepage = http://www.gnome-db.org/;
+    license = licenses.lgpl21Plus;
+    maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/mm-common/default.nix b/pkgs/development/libraries/mm-common/default.nix
new file mode 100644
index 000000000000..78ae8875fcf3
--- /dev/null
+++ b/pkgs/development/libraries/mm-common/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, gnome3 }:
+
+stdenv.mkDerivation rec {
+  pname = "mm-common";
+  version = "0.9.12";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "02vwgv404b56wxy0gnm9xq9fvzgn9dhfqcy2hhl78ljv3v7drzyf";
+  };
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      versionPolicy = "none";
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Common build files of GLib/GTK+ C++ bindings";
+    longDescription = ''
+      The mm-common module provides the build infrastructure and utilities
+      shared among the GNOME C++ binding libraries. It is only a required
+      dependency for building the C++ bindings from the gnome.org version
+      control repository. An installation of mm-common is not required for
+      building tarball releases, unless configured to use maintainer-mode.
+    '';
+    homepage = http://www.gtkmm.org;
+    license = licenses.gpl2Plus;
+    maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 007673eeddb4..f073dc8086bc 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -3934,6 +3934,8 @@ in
 
   libee = callPackage ../development/libraries/libee { };
 
+  libepc = callPackage ../development/libraries/libepc { };
+
   libestr = callPackage ../development/libraries/libestr { };
 
   libevdev = callPackage ../development/libraries/libevdev { };
@@ -10035,6 +10037,7 @@ in
 
   goocanvas = callPackage ../development/libraries/goocanvas { };
   goocanvas2 = callPackage ../development/libraries/goocanvas/2.x.nix { };
+  goocanvasmm2 = callPackage ../development/libraries/goocanvasmm { };
 
   google-gflags = callPackage ../development/libraries/google-gflags { };
   gflags = google-gflags; # TODO: move to aliases.nix
@@ -10246,6 +10249,8 @@ in
 
   gtksourceviewmm = callPackage ../development/libraries/gtksourceviewmm { };
 
+  gtksourceviewmm4 = callPackage ../development/libraries/gtksourceviewmm/4.x.nix { };
+
   gtkspell2 = callPackage ../development/libraries/gtkspell { };
 
   gtkspell3 = callPackage ../development/libraries/gtkspell/3.nix { };
@@ -10814,6 +10819,8 @@ in
 
   libgda = callPackage ../development/libraries/libgda { };
 
+  libgdamm = callPackage ../development/libraries/libgdamm { };
+
   libgdata = gnome3.libgdata;
 
   libgig = callPackage ../development/libraries/libgig { };
@@ -18281,6 +18288,8 @@ in
 
   mm = callPackage ../applications/networking/instant-messengers/mm { };
 
+  mm-common = callPackage ../development/libraries/mm-common { };
+
   matrique = libsForQt5.callPackage ../applications/networking/instant-messengers/matrique { };
 
   mpc-qt = libsForQt5.callPackage ../applications/video/mpc-qt { };
@@ -21752,6 +21761,8 @@ in
 
   ginac = callPackage ../applications/science/math/ginac { };
 
+  glom = callPackage ../applications/misc/glom { };
+
   glucose = callPackage ../applications/science/logic/glucose { };
   glucose-syrup = callPackage ../applications/science/logic/glucose/syrup.nix { };