f34ce41345
GitOrigin-RevId: b73c2221a46c13557b1b3be9c2070cc42cf01eb3
201 lines
4.4 KiB
Nix
201 lines
4.4 KiB
Nix
{ stdenv
|
||
, lib
|
||
, boehmgc
|
||
, boost
|
||
, cairo
|
||
, callPackage
|
||
, cmake
|
||
, desktopToDarwinBundle
|
||
, fetchurl
|
||
, fetchpatch
|
||
, gettext
|
||
, ghostscript
|
||
, glib
|
||
, glibmm
|
||
, gobject-introspection
|
||
, gsl
|
||
, gspell
|
||
, gtk-mac-integration
|
||
, gtkmm3
|
||
, gdk-pixbuf
|
||
, imagemagick
|
||
, lcms
|
||
, lib2geom
|
||
, libcdr
|
||
, libexif
|
||
, libpng
|
||
, librevenge
|
||
, librsvg
|
||
, libsigcxx
|
||
, libsoup
|
||
, libvisio
|
||
, libwpg
|
||
, libXft
|
||
, libxml2
|
||
, libxslt
|
||
, ninja
|
||
, perlPackages
|
||
, pkg-config
|
||
, poppler
|
||
, popt
|
||
, potrace
|
||
, python3
|
||
, substituteAll
|
||
, wrapGAppsHook3
|
||
, libepoxy
|
||
, zlib
|
||
}:
|
||
let
|
||
python3Env = python3.withPackages
|
||
(ps: with ps; [
|
||
appdirs
|
||
beautifulsoup4
|
||
cachecontrol
|
||
]
|
||
# CacheControl requires extra runtime dependencies for FileCache
|
||
# https://gitlab.com/inkscape/extras/extension-manager/-/commit/9a4acde6c1c028725187ff5972e29e0dbfa99b06
|
||
++ cachecontrol.optional-dependencies.filecache
|
||
++ [
|
||
numpy
|
||
lxml
|
||
packaging
|
||
pillow
|
||
scour
|
||
pyparsing
|
||
pyserial
|
||
requests
|
||
pygobject3
|
||
] ++ inkex.propagatedBuildInputs);
|
||
in
|
||
stdenv.mkDerivation rec {
|
||
pname = "inkscape";
|
||
version = "1.3.2";
|
||
|
||
src = fetchurl {
|
||
url = "https://inkscape.org/release/inkscape-${version}/source/archive/xz/dl/inkscape-${version}.tar.xz";
|
||
sha256 = "sha256-29GETcRD/l4Q0+mohxROX7ciOFL/8ZHPte963qsOCGs=";
|
||
};
|
||
|
||
# Inkscape hits the ARGMAX when linking on macOS. It appears to be
|
||
# CMake’s ARGMAX check doesn’t offer enough padding for NIX_LDFLAGS.
|
||
# Setting strictDeps it avoids duplicating some dependencies so it
|
||
# will leave us under ARGMAX.
|
||
strictDeps = true;
|
||
|
||
patches = [
|
||
(substituteAll {
|
||
src = ./fix-python-paths.patch;
|
||
# Python is used at run-time to execute scripts,
|
||
# e.g., those from the "Effects" menu.
|
||
python3 = "${python3Env}/bin/python";
|
||
})
|
||
(substituteAll {
|
||
# Fix path to ps2pdf binary
|
||
src = ./fix-ps2pdf-path.patch;
|
||
inherit ghostscript;
|
||
})
|
||
|
||
# Fix build with libxml2 2.12
|
||
# https://gitlab.com/inkscape/inkscape/-/merge_requests/6089
|
||
(fetchpatch {
|
||
url = "https://gitlab.com/inkscape/inkscape/-/commit/694d8ae43d06efff21adebf377ce614d660b24cd.patch";
|
||
hash = "sha256-9IXJzpZbNU5fnt7XKgqCzUDrwr08qxGwo8TqnL+xc6E=";
|
||
})
|
||
|
||
# Improve distribute along path precision
|
||
# https://gitlab.com/inkscape/extensions/-/issues/580
|
||
(fetchpatch {
|
||
url = "https://gitlab.com/inkscape/extensions/-/commit/c576043c195cd044bdfc975e6367afb9b655eb14.patch";
|
||
extraPrefix = "share/extensions/";
|
||
stripLen = 1;
|
||
hash = "sha256-D9HxBx8RNkD7hHuExJqdu3oqlrXX6IOUw9m9Gx6+Dr8=";
|
||
})
|
||
];
|
||
|
||
postPatch = ''
|
||
patchShebangs share/extensions
|
||
patchShebangs share/templates
|
||
patchShebangs man/fix-roff-punct
|
||
|
||
# double-conversion is a dependency of 2geom
|
||
substituteInPlace CMakeScripts/DefineDependsandFlags.cmake \
|
||
--replace 'find_package(DoubleConversion REQUIRED)' ""
|
||
'';
|
||
|
||
nativeBuildInputs = [
|
||
pkg-config
|
||
cmake
|
||
ninja
|
||
python3Env
|
||
glib # for setup hook
|
||
gdk-pixbuf # for setup hook
|
||
wrapGAppsHook3
|
||
gobject-introspection
|
||
] ++ (with perlPackages; [
|
||
perl
|
||
XMLParser
|
||
]) ++ lib.optionals stdenv.isDarwin [
|
||
desktopToDarwinBundle
|
||
];
|
||
|
||
buildInputs = [
|
||
boehmgc
|
||
boost
|
||
gettext
|
||
glib
|
||
glibmm
|
||
gsl
|
||
gtkmm3
|
||
imagemagick
|
||
lcms
|
||
lib2geom
|
||
libcdr
|
||
libexif
|
||
libpng
|
||
librevenge
|
||
librsvg # for loading icons
|
||
libsigcxx
|
||
libsoup
|
||
libvisio
|
||
libwpg
|
||
libXft
|
||
libxml2
|
||
libxslt
|
||
perlPackages.perl
|
||
poppler
|
||
popt
|
||
potrace
|
||
python3Env
|
||
zlib
|
||
libepoxy
|
||
] ++ lib.optionals (!stdenv.isDarwin) [
|
||
gspell
|
||
] ++ lib.optionals stdenv.isDarwin [
|
||
cairo
|
||
gtk-mac-integration
|
||
];
|
||
|
||
# Make sure PyXML modules can be found at run-time.
|
||
postInstall = lib.optionalString stdenv.isDarwin ''
|
||
for f in $out/lib/inkscape/*.dylib; do
|
||
ln -s $f $out/lib/$(basename $f)
|
||
done
|
||
'';
|
||
|
||
passthru.tests.ps2pdf-plugin = callPackage ./test-ps2pdf-plugin.nix { };
|
||
|
||
meta = with lib; {
|
||
description = "Vector graphics editor";
|
||
homepage = "https://www.inkscape.org";
|
||
license = licenses.gpl3Plus;
|
||
maintainers = [ maintainers.jtojnar ];
|
||
platforms = platforms.all;
|
||
mainProgram = "inkscape";
|
||
longDescription = ''
|
||
Inkscape is a feature-rich vector graphics editor that edits
|
||
files in the W3C SVG (Scalable Vector Graphics) file format.
|
||
|
||
If you want to import .eps files install ps2edit.
|
||
'';
|
||
};
|
||
}
|