nixpkgs/pkgs/development/libraries/gtk+/2.x.nix

88 lines
2.7 KiB
Nix
Raw Normal View History

{ stdenv, fetchurl, pkgconfig, gettext, glib, atk, pango, cairo, perl, xorg
, gdk_pixbuf, libintlOrEmpty, xlibsWrapper, gobjectIntrospection
, xineramaSupport ? stdenv.isLinux
, cupsSupport ? true, cups ? null
2016-12-23 21:18:25 +00:00
, gdktarget ? "x11"
, AppKit, Cocoa
}:
assert xineramaSupport -> xorg.libXinerama != null;
assert cupsSupport -> cups != null;
2016-12-23 21:18:25 +00:00
with stdenv.lib;
2012-09-26 19:39:32 +00:00
stdenv.mkDerivation rec {
2018-01-21 15:13:03 +00:00
name = "gtk+-2.24.32";
src = fetchurl {
2012-09-26 19:39:32 +00:00
url = "mirror://gnome/sources/gtk+/2.24/${name}.tar.xz";
2018-01-21 15:13:03 +00:00
sha256 = "b6c8a93ddda5eabe3bfee1eb39636c9a03d2a56c7b62828b359bf197943c582e";
};
outputs = [ "out" "dev" "devdoc" ];
outputBin = "dev";
enableParallelBuilding = true;
2016-12-23 21:18:25 +00:00
NIX_CFLAGS_COMPILE = optionalString (libintlOrEmpty != []) "-lintl";
setupHook = ./setup-hook.sh;
nativeBuildInputs = [ setupHook perl pkgconfig gettext gobjectIntrospection ];
2012-09-26 19:39:32 +00:00
patches = [ ./2.0-immodules.cache.patch ./gtk2-theme-paths.patch ];
2016-12-23 21:18:25 +00:00
propagatedBuildInputs = with xorg;
[ glib cairo pango gdk_pixbuf atk ]
++ optionals (stdenv.isLinux || stdenv.isDarwin) [
libXrandr libXrender libXcomposite libXi libXcursor
]
++ optionals stdenv.isDarwin [ xlibsWrapper libXdamage ]
++ libintlOrEmpty
++ optional xineramaSupport libXinerama
2016-12-23 21:18:25 +00:00
++ optionals cupsSupport [ cups ]
++ optionals stdenv.isDarwin [ AppKit Cocoa ];
2016-12-27 07:45:37 +00:00
configureFlags = [
2016-12-23 21:18:25 +00:00
"--with-gdktarget=${gdktarget}"
2016-12-27 07:45:37 +00:00
"--with-xinput=yes"
2016-12-23 21:18:25 +00:00
] ++ optionals stdenv.isDarwin [
2016-12-27 07:45:37 +00:00
"--disable-glibtest"
"--disable-introspection"
"--disable-visibility"
];
postInstall = ''
moveToOutput share/gtk-2.0/demo "$devdoc"
# The updater is needed for nixos env and it's tiny.
moveToOutput bin/gtk-update-icon-cache "$out"
'';
passthru = {
gtkExeEnvPostBuild = ''
rm $out/lib/gtk-2.0/2.10.0/immodules.cache
$out/bin/gtk-query-immodules-2.0 $out/lib/gtk-2.0/2.10.0/immodules/*.so > $out/lib/gtk-2.0/2.10.0/immodules.cache
''; # workaround for bug of nix-mode for Emacs */ '';
2016-12-23 21:18:25 +00:00
inherit gdktarget;
};
2016-12-23 21:18:25 +00:00
meta = {
description = "A multi-platform toolkit for creating graphical user interfaces";
homepage = https://www.gtk.org/;
license = licenses.lgpl2Plus;
maintainers = with maintainers; [ lovek323 raskin ];
platforms = platforms.all;
longDescription = ''
GTK+ is a highly usable, feature rich toolkit for creating
graphical user interfaces which boasts cross platform
compatibility and an easy to use API. GTK+ it is written in C,
but has bindings to many other popular programming languages
such as C++, Python and C# among others. GTK+ is licensed
under the GNU LGPL 2.1 allowing development of both free and
proprietary software with GTK+ without any license fees or
royalties.
'';
};
}