about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/gnome-2
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/gnome-2')
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/default.nix77
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/desktop/gtksourceview/default.nix51
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/GConf/default.nix36
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/ORBit2/default.nix51
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/gnome-common/default.nix19
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/gnome-mime-data/default.nix11
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix48
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/gtkglext/default.nix69
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/libIDL/default.nix15
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix10
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/libbonobo/default.nix21
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/libbonoboui/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/libglade/default.nix20
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/default.nix23
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch65
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvas/default.nix17
-rw-r--r--nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeui/default.nix29
17 files changed, 580 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/gnome-2/default.nix b/nixpkgs/pkgs/desktops/gnome-2/default.nix
new file mode 100644
index 000000000000..76cb60f9f5f1
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/default.nix
@@ -0,0 +1,77 @@
+{ config, stdenv, pkgs, lib }:
+
+lib.makeScope pkgs.newScope (self: with self; {
+
+#### PLATFORM
+
+  libIDL = callPackage ./platform/libIDL {
+    gettext = if stdenv.isDarwin then pkgs.gettext else null;
+  };
+
+  ORBit2 = callPackage ./platform/ORBit2 { };
+
+  libart_lgpl = callPackage ./platform/libart_lgpl { };
+
+  libglade = callPackage ./platform/libglade { };
+
+  GConf = callPackage ./platform/GConf { };
+
+  libgnomecanvas = callPackage ./platform/libgnomecanvas { };
+
+  # for git-head builds
+  gnome-common = callPackage platform/gnome-common { };
+
+  gnome_mime_data = callPackage ./platform/gnome-mime-data { };
+
+  gnome_vfs = callPackage ./platform/gnome-vfs { };
+
+  libgnome = callPackage ./platform/libgnome { };
+
+  libgnomeui = callPackage ./platform/libgnomeui { };
+
+  libbonobo = callPackage ./platform/libbonobo { };
+
+  libbonoboui = callPackage ./platform/libbonoboui { };
+
+  gtkglext = callPackage ./platform/gtkglext { };
+
+#### DESKTOP
+
+  gtksourceview = callPackage ./desktop/gtksourceview {
+    autoreconfHook = pkgs.autoreconfHook269;
+  };
+
+} // lib.optionalAttrs config.allowAliases {
+  inherit (pkgs)
+    # GTK Libs
+    glib glibmm atk atkmm cairo pango pangomm gtkmm2 libcanberra-gtk2
+
+    # Included for backwards compatibility
+    libsoup libwnck2 gtk-doc gnome-doc-utils
+
+    gvfs # added 2019-09-03
+  ;
+
+  gtk = pkgs.gtk2;
+  gtkmm = pkgs.gtkmm2;
+
+  gtkdoc = pkgs.gtk-doc;
+  startup_notification = pkgs.libstartup_notification;
+  startupnotification = pkgs.libstartup_notification;
+  gnomedocutils = pkgs.gnome-doc-utils;
+  gnome-icon-theme = pkgs.gnome-icon-theme;
+  gnome_icon_theme = self.gnome-icon-theme;
+  gnomeicontheme = self.gnome-icon-theme;
+  gnome_common = gnome-common;
+  gnome_python = throw "gnome2.gnome_python has been removed"; # 2023-01-14
+  gnome_python_desktop = throw "gnome2.gnome_python_desktop has been removed"; # 2023-01-14
+  gtkhtml = throw "gnome2.gtkhtml has been removed"; # 2023-01-15
+  gtkhtml4 = throw "gnome2.gtkhtml4 has been removed"; # 2023-01-15
+  libglademm = throw "gnome2.libglademm has been removed"; # 2022-01-15
+  libgnomecanvasmm = "gnome2.libgnomecanvasmm has been removed"; # 2022-01-15
+  libgnomecups = throw "gnome2.libgnomecups has been removed"; # 2023-01-15
+  libgnomeprint = throw "gnome2.libgnomeprint has been removed"; # 2023-01-15
+  libgnomeprintui = throw "gnome2.libgnomeprintui has been removed"; # 2023-01-15
+  libgtkhtml = throw "gnome2.libgtkhtml has been removed"; # 2023-01-15
+  python_rsvg = throw "gnome2.python_rsvg has been removed"; # 2023-01-14
+})
diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/gtksourceview/default.nix b/nixpkgs/pkgs/desktops/gnome-2/desktop/gtksourceview/default.nix
new file mode 100644
index 000000000000..902178d16706
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/gtksourceview/default.nix
@@ -0,0 +1,51 @@
+{lib, stdenv, fetchpatch, fetchurl, autoreconfHook, pkg-config, atk, cairo, glib
+, gnome-common, gtk2, pango
+, libxml2Python, perl, intltool, gettext, gtk-mac-integration-gtk2
+, testers
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "gtksourceview";
+  version = "2.10.5";
+
+  src = let
+    inherit (finalAttrs) pname version;
+  in fetchurl {
+    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "c585773743b1df8a04b1be7f7d90eecdf22681490d6810be54c81a7ae152191e";
+  };
+
+  patches = lib.optionals stdenv.isDarwin [
+    (fetchpatch {
+      name = "change-igemacintegration-to-gtkosxapplication.patch";
+      url = "https://gitlab.gnome.org/GNOME/gtksourceview/commit/e88357c5f210a8796104505c090fb6a04c213902.patch";
+      sha256 = "0h5q79q9dqbg46zcyay71xn1pm4aji925gjd5j93v4wqn41wj5m7";
+    })
+    (fetchpatch {
+      name = "update-to-gtk-mac-integration-2.0-api.patch";
+      url = "https://gitlab.gnome.org/GNOME/gtksourceview/commit/ab46e552e1d0dae73f72adac8d578e40bdadaf95.patch";
+      sha256 = "0qzrbv4hpa0v8qbmpi2vp575n13lkrvp3cgllwrd2pslw1v9q3aj";
+    })
+  ];
+
+  nativeBuildInputs = [ pkg-config intltool ] ++ lib.optionals stdenv.isDarwin [ autoreconfHook ];
+  buildInputs = [
+    atk cairo glib gtk2
+    pango libxml2Python perl
+    gettext
+  ] ++ lib.optionals stdenv.isDarwin [
+    gnome-common gtk-mac-integration-gtk2
+  ];
+
+  preConfigure = lib.optionalString stdenv.isDarwin ''
+    intltoolize --force
+  '';
+
+  doCheck = false; # requires X11 daemon
+
+  passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
+
+  meta = {
+    pkgConfigModules = [ "gtksourceview-2.0" ];
+  };
+})
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/GConf/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/GConf/default.nix
new file mode 100644
index 000000000000..8419c1a7d730
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/GConf/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv, fetchurl, pkg-config, dbus-glib, glib, ORBit2, libxml2, polkit, python3, intltool }:
+
+stdenv.mkDerivation rec {
+  pname = "gconf";
+  version = "3.2.6";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/GConf/${lib.versions.majorMinor version}/GConf-${version}.tar.xz";
+    sha256 = "0k3q9nh53yhc9qxf1zaicz4sk8p3kzq4ndjdsgpaa2db0ccbj4hr";
+  };
+
+  outputs = [ "out" "dev" "man" ];
+
+  buildInputs = [ ORBit2 libxml2 python3 ]
+    # polkit requires pam, which requires shadow.h, which is not available on
+    # darwin
+    ++ lib.optional (!stdenv.isDarwin) polkit;
+
+  propagatedBuildInputs = [ glib dbus-glib ];
+
+  nativeBuildInputs = [ pkg-config intltool ];
+
+  configureFlags =
+    # fixes the "libgconfbackend-oldxml.so is not portable" error on darwin
+    lib.optionals stdenv.isDarwin [ "--enable-static" ];
+
+  postPatch = ''
+    2to3 --write --nobackup gsettings/gsettings-schema-convert
+  '';
+
+  meta = with lib; {
+    homepage = "https://projects.gnome.org/gconf/";
+    description = "Deprecated system for storing application preferences";
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/ORBit2/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/ORBit2/default.nix
new file mode 100644
index 000000000000..a45095ba4978
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/ORBit2/default.nix
@@ -0,0 +1,51 @@
+{ lib, stdenv, fetchurl, pkg-config, glib, libIDL, libintl }:
+
+stdenv.mkDerivation rec {
+  pname = "ORBit2";
+  version = "2.14.19";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/ORBit2/${lib.versions.majorMinor version}/ORBit2-${version}.tar.bz2";
+    sha256 = "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam";
+  };
+
+  nativeBuildInputs = [ pkg-config libintl ];
+  propagatedBuildInputs = [ glib libIDL ];
+
+  outputs = [ "out" "dev" ];
+
+  preBuild = ''
+    sed 's/-DG_DISABLE_DEPRECATED//' -i linc2/src/Makefile
+  '';
+
+  preFixup = ''
+    moveToOutput "bin/orbit2-config" "$dev"
+  '';
+
+  # Parallel build fails due to missing internal library dependency:
+  #    libtool --tag=CC   --mode=link gcc ... -o orbit-name-server-2 ...
+  #    ld: cannot find libname-server-2.a: No such file or directory
+  # It happens because orbit-name-server-2 should have libname-server-2.a
+  # in _DEPENDENCIES but does not. Instead of fixing it and regenerating
+  # Makefile.in let's just disable parallel build.
+  enableParallelBuilding = false;
+
+  meta = with lib; {
+    homepage    = "https://developer-old.gnome.org/ORBit2/";
+    description = "A CORBA 2.4-compliant Object Request Broker";
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ lovek323 ];
+
+    longDescription = ''
+      ORBit2 is a CORBA 2.4-compliant Object Request Broker (ORB) featuring
+      mature C, C++ and Python bindings. Bindings (in various degrees of
+      completeness) are also available for Perl, Lisp, Pascal, Ruby, and TCL;
+      others are in-progress. It supports POA, DII, DSI, TypeCode, Any, IR and
+      IIOP. Optional features including INS and threading are available. ORBit2
+      is engineered for the desktop workstation environment, with a focus on
+      performance, low resource usage, and security. The core ORB is written in
+      C, and runs under Linux, UNIX (BSD, Solaris, HP-UX, ...), and Windows.
+      ORBit2 is developed and released as open source software under GPL/LGPL.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-common/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-common/default.nix
new file mode 100644
index 000000000000..eba913c80c2d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-common/default.nix
@@ -0,0 +1,19 @@
+{ lib, stdenv, fetchurl, which }:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-common";
+  version = "2.34.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-common/${lib.versions.majorMinor version}/gnome-common-${version}.tar.bz2";
+    sha256 = "1pz13mpp09q5s3bikm8ml92s1g0scihsm4iipqv1ql3mp6d4z73s";
+  };
+
+  propagatedBuildInputs = [ which ]; # autogen.sh which is using gnome-common tends to require which
+
+  patches = [(fetchurl {
+    name = "gnome-common-patch";
+    url = "https://bug697543.bugzilla-attachments.gnome.org/attachment.cgi?id=240935";
+    sha256 = "17abp7czfzirjm7qsn2czd03hdv9kbyhk3lkjxg2xsf5fky7z7jl";
+  })];
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-mime-data/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-mime-data/default.nix
new file mode 100644
index 000000000000..1604dbe0cf08
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-mime-data/default.nix
@@ -0,0 +1,11 @@
+{ lib, stdenv, fetchurl, intltool }:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-mime-data";
+  version = "2.18.0";
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-mime-data/${lib.versions.majorMinor version}/gnome-mime-data-${version}.tar.bz2";
+    sha256 = "1mvg8glb2a40yilmyabmb7fkbzlqd3i3d31kbkabqnq86xdnn69p";
+  };
+  nativeBuildInputs = [ intltool ];
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix
new file mode 100644
index 000000000000..7ce615fb3c71
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix
@@ -0,0 +1,48 @@
+{ lib, stdenv, fetchurl, fetchpatch, pkg-config, libxml2, bzip2, openssl, dbus-glib
+, glib, gamin, cdparanoia, intltool, GConf, gnome_mime_data, avahi, acl
+, testers
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "gnome-vfs";
+  version = "2.24.4";
+
+  src = let
+    inherit (finalAttrs) pname version;
+  in fetchurl {
+    url = "mirror://gnome/sources/gnome-vfs/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "1ajg8jb8k3snxc7rrgczlh8daxkjidmcv3zr9w809sq4p2sn9pk2";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [ intltool pkg-config ];
+  buildInputs =
+    [ libxml2 bzip2 openssl dbus-glib gamin cdparanoia
+      gnome_mime_data avahi acl
+    ];
+
+  propagatedBuildInputs = [ GConf glib ];
+
+  # struct SSL is opaque in openssl-1.1; and the SSL_free() man page
+  # says that one should not free members of it manually (in both
+  # the openssl-1.0 and openssl-1.1 man pages).
+  # https://bugs.gentoo.org/592540
+  patches = [ (fetchpatch {
+                name = "gnome-vfs-2.24.4-openssl-1.1.patch";
+                url = "https://bugs.gentoo.org/attachment.cgi?id=535944";
+                sha256 = "1q4icapvmwmd5rjah7rr0bqazzk5cg36znmjlpra20n9y27nz040";
+                extraPrefix = "";
+              })
+            ];
+
+  postPatch = "find . -name Makefile.in | xargs sed 's/-DG_DISABLE_DEPRECATED//g' -i ";
+
+  doCheck = false; # needs dbus daemon
+
+  passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
+
+  meta = {
+    pkgConfigModules = [ "gnome-vfs-2.0" "gnome-vfs-module-2.0" ];
+  };
+})
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gtkglext/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkglext/default.nix
new file mode 100644
index 000000000000..ed0971b7131b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkglext/default.nix
@@ -0,0 +1,69 @@
+{ lib, stdenv
+, fetchFromGitLab
+, pkg-config
+, gtk-doc
+, autoconf
+, automake
+, which
+, libtool
+, gobject-introspection
+, glib
+, gtk2
+, libGLU
+, libGL
+, pango
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gtkglext";
+  version = "unstable-2019-12-19";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "Archive";
+    repo = pname;
+    # build fixes
+    # https://gitlab.gnome.org/Archive/gtkglext/merge_requests/1
+    rev = "ad95fbab68398f81d7a5c895276903b0695887e2";
+    sha256 = "1d1bp4635nla7d07ci40c7w4drkagdqk8wg93hywvdipmjfb4yqb";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gtk-doc
+    autoconf
+    automake
+    which
+    libtool
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    glib
+    gtk2
+    libGLU
+    libGL
+    pango
+    xorg.libX11
+    xorg.libXmu
+  ];
+
+  preConfigure = ''
+    NOCONFIGURE=1 ./autogen.sh
+  '';
+
+  meta = with lib; {
+    homepage = "https://projects.gnome.org/gtkglext/";
+    description = "GtkGLExt, an OpenGL extension to GTK";
+    longDescription = ''
+      GtkGLExt is an OpenGL extension to GTK. It provides additional GDK
+      objects which support OpenGL rendering in GTK and GtkWidget API
+      add-ons to make GTK widgets OpenGL-capable.  In contrast to Janne
+      Löf's GtkGLArea, GtkGLExt provides a GtkWidget API that enables
+      OpenGL drawing for standard and custom GTK widgets.
+    '';
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libIDL/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libIDL/default.nix
new file mode 100644
index 000000000000..61b21ba88c01
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libIDL/default.nix
@@ -0,0 +1,15 @@
+{ lib, stdenv, fetchurl, flex, bison, pkg-config, glib, gettext }:
+
+stdenv.mkDerivation rec {
+  pname = "libIDL";
+  version = "0.8.14";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libIDL/${lib.versions.majorMinor version}/libIDL-${version}.tar.bz2";
+    sha256 = "08129my8s9fbrk0vqvnmx6ph4nid744g5vbwphzkaik51664vln5";
+  };
+
+  buildInputs = [ glib gettext ];
+
+  nativeBuildInputs = [ flex bison pkg-config ];
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix
new file mode 100644
index 000000000000..80ea3d02d939
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix
@@ -0,0 +1,10 @@
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "libart_lgpl";
+  version = "2.3.21";
+  src = fetchurl {
+    url = "mirror://gnome/sources/libart_lgpl/${lib.versions.majorMinor version}/libart_lgpl-${version}.tar.bz2";
+    sha256 = "1yknfkyzgz9s616is0l9gp5aray0f2ry4dw533jgzj8gq5s1xhgx";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libbonobo/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libbonobo/default.nix
new file mode 100644
index 000000000000..e928052a4764
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libbonobo/default.nix
@@ -0,0 +1,21 @@
+{ lib, stdenv, fetchurl, flex, bison, pkg-config, glib, libxml2, popt
+, intltool, ORBit2, procps }:
+
+stdenv.mkDerivation rec {
+  pname = "libbonobo";
+  version = "2.32.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libbonobo/${lib.versions.majorMinor version}/libbonobo-${version}.tar.bz2";
+    sha256 = "0swp4kk6x7hy1rvd1f9jba31lvfc6qvafkvbpg9h0r34fzrd8q4i";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  preConfigure = # still using stuff deprecated in new glib versions
+    "sed 's/-DG_DISABLE_DEPRECATED//g' -i configure activation-server/Makefile.in";
+
+  nativeBuildInputs = [ flex bison pkg-config intltool procps ];
+  buildInputs = [ libxml2 ];
+  propagatedBuildInputs = [ popt glib ORBit2 ];
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libbonoboui/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libbonoboui/default.nix
new file mode 100644
index 000000000000..36ab293f5f12
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libbonoboui/default.nix
@@ -0,0 +1,18 @@
+{ lib, stdenv, fetchurl, bison, pkg-config, popt, libxml2, gtk2, libtool
+, intltool, libbonobo, GConf, libgnomecanvas, libgnome, libglade }:
+
+stdenv.mkDerivation rec {
+  pname = "libbonoboui";
+  version = "2.24.5";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libbonoboui/${lib.versions.majorMinor version}/libbonoboui-${version}.tar.bz2";
+    sha256 = "1kbgqh7bw0fdx4f1a1aqwpff7gp5mwhbaz60c6c98bc4djng5dgs";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [ pkg-config intltool ];
+  buildInputs = [ bison popt gtk2 libxml2 GConf libglade libtool ];
+  propagatedBuildInputs = [ libbonobo libgnomecanvas libgnome ];
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libglade/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libglade/default.nix
new file mode 100644
index 000000000000..2f2641a9a5c8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libglade/default.nix
@@ -0,0 +1,20 @@
+{ lib, stdenv, fetchurl, pkg-config, gtk2, libxml2, gettext }:
+
+stdenv.mkDerivation rec {
+  pname = "libglade";
+  version = "2.6.4";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libglade/${lib.versions.majorMinor version}/libglade-${version}.tar.bz2";
+    sha256 = "1v2x2s04jry4gpabws92i0wq2ghd47yr5n9nhgnkd7c38xv1wdk4";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ gtk2 gettext ];
+
+  NIX_LDFLAGS = "-lgmodule-2.0";
+
+  propagatedBuildInputs = [ libxml2 ];
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/default.nix
new file mode 100644
index 000000000000..56145980a5d2
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/default.nix
@@ -0,0 +1,23 @@
+{ lib, stdenv, fetchurl, pkg-config, glib, popt, zlib, libcanberra-gtk2
+, intltool, libbonobo, GConf, gnome_vfs, libtool, libogg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "libgnome";
+  version = "2.32.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgnome/${lib.versions.majorMinor version}/libgnome-${version}.tar.bz2";
+    sha256 = "197pnq8y0knqjhm2fg4j6hbqqm3qfzfnd0irhwxpk1b4hqb3kimj";
+  };
+
+  patches = [ ./new-glib.patch ];
+  /* There's a comment containing an invalid utf-8 sequence, breaking glib-mkenums. */
+  postPatch = "sed '/returns the true filename/d' -i libgnome/gnome-config.h";
+
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [ pkg-config intltool ];
+  buildInputs = [ popt zlib GConf gnome_vfs libcanberra-gtk2 libtool ];
+  propagatedBuildInputs = [ glib libbonobo libogg ];
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch
new file mode 100644
index 000000000000..ceabfbdd158e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch
@@ -0,0 +1,65 @@
+Porting libgnome to newer glib:
+ * remove g_thread_init and g_thread_supported, which are longer needed
+   https://developer.gnome.org/glib/2.36/glib-Deprecated-Thread-APIs.html#g-thread-init
+ * replace GStaticRecMutex by GRecMutex
+   https://developer.gnome.org/glib/2.36/glib-Deprecated-Thread-APIs.html#GStaticRecMutex
+
+diff --git a/libgnome/gnome-i18n.c b/libgnome/gnome-i18n.c
+index 531c56c..f13d61e 100644
+--- a/libgnome/gnome-i18n.c
++++ b/libgnome/gnome-i18n.c
+@@ -55,12 +55,14 @@
+ const GList *
+ gnome_i18n_get_language_list (const gchar *ignored)
+ {
+-  static GStaticRecMutex lang_list_lock = G_STATIC_REC_MUTEX_INIT;
++  static GRecMutex lang_list_lock;
++  g_rec_mutex_init (&lang_list_lock);
++
+   static GList *list = NULL;
+   const char * const* langs;
+   int i;
+ 
+-  g_static_rec_mutex_lock (&lang_list_lock);
++  g_rec_mutex_lock (&lang_list_lock);
+ 
+   if (list == NULL) {
+     langs = g_get_language_names ();
+@@ -71,7 +73,7 @@ gnome_i18n_get_language_list (const gchar *ignored)
+     list = g_list_reverse (list);
+   }
+ 
+-  g_static_rec_mutex_unlock (&lang_list_lock);
++  g_rec_mutex_unlock (&lang_list_lock);
+ 
+   return list;
+ }
+diff --git a/libgnome/gnome-init.c b/libgnome/gnome-init.c
+index fe3efd4..c6619af 100644
+--- a/libgnome/gnome-init.c
++++ b/libgnome/gnome-init.c
+@@ -115,9 +115,6 @@ gnome_bonobo_module_info_get (void)
+ static void
+ bonobo_activation_pre_args_parse (GnomeProgram *program, GnomeModuleInfo *mod_info)
+ {
+-        if (!g_thread_supported ())
+-		g_thread_init (NULL);
+-
+ 	if (!bonobo_activation_is_initialized ())
+ 		bonobo_activation_preinit (program, mod_info);
+ }
+diff --git a/libgnome/gnome-program.c b/libgnome/gnome-program.c
+index 739765e..cd14999 100644
+--- a/libgnome/gnome-program.c
++++ b/libgnome/gnome-program.c
+@@ -1878,10 +1878,6 @@ gnome_program_init (const char *app_id, const char *app_version,
+     GnomeProgram *program;
+     va_list args;
+ 
+-    /* g_thread_init() has to be the first GLib function called ever */
+-    if (!g_threads_got_initialized)
+-        g_thread_init (NULL);
+-
+     g_type_init ();
+ 
+     va_start(args, first_property_name);
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvas/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvas/default.nix
new file mode 100644
index 000000000000..b856442290a4
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvas/default.nix
@@ -0,0 +1,17 @@
+{ lib, stdenv, fetchurl, pkg-config, gtk2, intltool, libart_lgpl, libglade }:
+
+stdenv.mkDerivation rec {
+  pname = "libgnomecanvas";
+  version = "2.30.3";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgnomecanvas/${lib.versions.majorMinor version}/libgnomecanvas-${version}.tar.bz2";
+    sha256 = "0h6xvswbqspdifnyh5pm2pqq55yp3kn6yrswq7ay9z49hkh7i6w5";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  buildInputs = [ libglade ];
+  nativeBuildInputs = [ pkg-config intltool ];
+  propagatedBuildInputs = [ libart_lgpl gtk2 ];
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeui/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeui/default.nix
new file mode 100644
index 000000000000..29ed44431c31
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeui/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenv, fetchurl, fetchpatch, pkg-config, libxml2, xorg, glib, pango
+, intltool, libgnome, libgnomecanvas, libbonoboui, GConf, libtool
+, gnome_vfs, libgnome-keyring, libglade }:
+
+stdenv.mkDerivation rec {
+  pname = "libgnomeui";
+  version = "2.24.5";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgnomeui/${lib.versions.majorMinor version}/libgnomeui-${version}.tar.bz2";
+    sha256 = "03rwbli76crkjl6gp422wrc9lqpl174k56cp9i96b7l8jlj2yddf";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  patches = [
+    (fetchpatch {
+      name = "0001-gnome-scores.h-Convert-to-UTF-8.patch";
+      url = "https://gitlab.gnome.org/Archive/libgnomeui/-/commit/30334c28794ef85d8973f4ed0779b5ceed6594f2.diff";
+      sha256 = "1sn8j8dkam14wfkpw8nga3gk63wniff243mzv3jp0fvv52q8sqhk";
+    })
+  ];
+
+  nativeBuildInputs = [ pkg-config intltool ];
+  buildInputs =
+    [ xorg.libX11 xorg.libSM xorg.libICE libxml2 GConf pango glib libgnome-keyring libglade libtool ];
+
+  propagatedBuildInputs = [ libgnome libbonoboui libgnomecanvas gnome_vfs ];
+}