nixpkgs/pkgs/applications/graphics/gimp/default.nix

183 lines
3.7 KiB
Nix
Raw Normal View History

2019-10-31 23:20:09 +01:00
{ stdenv
, lib
, fetchurl
, substituteAll
, autoreconfHook
, pkg-config
2019-10-31 23:20:09 +01:00
, intltool
, babl
, gegl
, gtk2
, glib
, gdk-pixbuf
, isocodes
, pango
, cairo
, freetype
, fontconfig
, lcms
, libpng
, libjpeg
, poppler
, poppler_data
, libtiff
, libmng
, librsvg
, libwmf
, zlib
, libzip
, ghostscript
, aalib
, shared-mime-info
, python2
2019-10-31 23:20:09 +01:00
, libexif
, gettext
, makeWrapper
2019-10-31 23:20:09 +01:00
, xorg
, glib-networking
, libmypaint
, gexiv2
, harfbuzz
2019-01-27 10:12:49 +01:00
, mypaint-brushes1
2019-10-31 23:20:09 +01:00
, libwebp
, libheif
, libgudev
, openexr
, AppKit
, Cocoa
, gtk-mac-integration-gtk2
}:
2017-12-22 08:59:08 +01:00
let
python = python2.withPackages (pp: [ pp.pygtk ]);
2017-12-22 08:59:08 +01:00
in stdenv.mkDerivation rec {
pname = "gimp";
2020-10-08 02:30:47 +02:00
version = "2.10.22";
2017-12-22 08:59:08 +01:00
outputs = [ "out" "dev" ];
2017-12-22 08:59:08 +01:00
src = fetchurl {
2019-10-31 23:20:09 +01:00
url = "http://download.gimp.org/pub/gimp/v${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
2020-10-08 02:30:47 +02:00
sha256 = "1fqqyshakvdarf1jipk2n33ibqr23ni22z3d8srq13bpydblpf1d";
2017-12-22 08:59:08 +01:00
};
patches = [
# to remove compiler from the runtime closure, reference was retained via
# gimp --version --verbose output
(substituteAll {
src = ./remove-cc-reference.patch;
cc_version = stdenv.cc.cc.name;
})
# Use absolute paths instead of relying on PATH
# to make sure plug-ins are loaded by the correct interpreter.
./hardcode-plugin-interpreters.patch
];
2019-10-31 23:20:09 +01:00
nativeBuildInputs = [
autoreconfHook # hardcode-plugin-interpreters.patch changes Makefile.am
pkg-config
2019-10-31 23:20:09 +01:00
intltool
gettext
makeWrapper
2019-10-31 23:20:09 +01:00
];
2017-12-22 08:59:08 +01:00
buildInputs = [
2019-10-31 23:20:09 +01:00
babl
gegl
gtk2
glib
gdk-pixbuf
pango
cairo
gexiv2
harfbuzz
isocodes
freetype
fontconfig
lcms
libpng
libjpeg
poppler
poppler_data
libtiff
openexr
libmng
librsvg
libwmf
zlib
libzip
ghostscript
aalib
shared-mime-info
libwebp
libheif
python
libexif
xorg.libXpm
glib-networking
libmypaint
2019-01-27 10:12:49 +01:00
mypaint-brushes1
2019-10-31 23:20:09 +01:00
] ++ lib.optionals stdenv.isDarwin [
AppKit
Cocoa
gtk-mac-integration-gtk2
] ++ lib.optionals stdenv.isLinux [
libgudev
];
# needed by gimp-2.0.pc
propagatedBuildInputs = [
gegl
];
2017-12-22 08:59:08 +01:00
configureFlags = [
"--without-webkit" # old version is required
"--disable-check-update"
"--with-bug-report-url=https://github.com/NixOS/nixpkgs/issues/new"
"--with-icc-directory=/run/current-system/sw/share/color/icc"
# fix libdir in pc files (${exec_prefix} needs to be passed verbatim)
"--libdir=\${exec_prefix}/lib"
];
enableParallelBuilding = true;
# on Darwin,
# test-eevl.c:64:36: error: initializer element is not a compile-time constant
doCheck = !stdenv.isDarwin;
2017-12-22 08:59:08 +01:00
# Check if librsvg was built with --disable-pixbuf-loader.
2019-05-22 13:03:39 +02:00
PKG_CONFIG_GDK_PIXBUF_2_0_GDK_PIXBUF_MODULEDIR = "${librsvg}/${gdk-pixbuf.moduleDir}";
2017-12-22 08:59:08 +01:00
preConfigure = ''
# The check runs before glib-networking is registered
export GIO_EXTRA_MODULES="${glib-networking}/lib/gio/modules:$GIO_EXTRA_MODULES"
'';
postFixup = ''
2019-10-31 23:20:09 +01:00
wrapProgram $out/bin/gimp-${lib.versions.majorMinor version} \
2017-12-22 08:59:08 +01:00
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE"
'';
passthru = rec {
# The declarations for `gimp-with-plugins` wrapper,
# used for determining plug-in installation paths
2019-10-31 23:20:09 +01:00
majorVersion = "${lib.versions.major version}.0";
2020-11-10 23:57:44 +01:00
targetLibDir = "lib/gimp/${majorVersion}";
targetDataDir = "share/gimp/${majorVersion}";
targetPluginDir = "${targetLibDir}/plug-ins";
targetScriptDir = "${targetDataDir}/scripts";
2017-12-22 08:59:08 +01:00
# probably its a good idea to use the same gtk in plugins ?
gtk = gtk2;
};
2019-10-31 23:20:09 +01:00
meta = with lib; {
2017-12-22 08:59:08 +01:00
description = "The GNU Image Manipulation Program";
2019-10-31 23:20:09 +01:00
homepage = "https://www.gimp.org/";
2017-12-22 08:59:08 +01:00
maintainers = with maintainers; [ jtojnar ];
license = licenses.gpl3Plus;
platforms = platforms.unix;
};
}