lol
1{ lib
2, stdenv
3, pkg-config
4, glib
5, libxml2
6, expat
7, ApplicationServices
8, Foundation
9, python3
10, fetchFromGitHub
11, meson
12, ninja
13, gtk-doc
14, docbook-xsl-nons
15, gobject-introspection
16 # Optional dependencies
17, libjpeg
18, libexif
19, librsvg
20, poppler
21, libtiff
22, fftw
23, lcms2
24, libspng
25, libimagequant
26, imagemagick
27, pango
28, matio
29, cfitsio
30, libwebp
31, openexr
32, openjpeg
33, libjxl
34, openslide
35, libheif
36, cgif
37, libarchive
38, libhwy
39, testers
40, nix-update-script
41}:
42
43stdenv.mkDerivation (finalAttrs: {
44 pname = "vips";
45 version = "8.15.0";
46
47 outputs = [ "bin" "out" "man" "dev" ] ++ lib.optionals (!stdenv.isDarwin) [ "devdoc" ];
48
49 src = fetchFromGitHub {
50 owner = "libvips";
51 repo = "libvips";
52 rev = "refs/tags/v${finalAttrs.version}";
53 hash = "sha256-WfKq+maLcAXyjk1sq66wSU92ALv4MfRDPKe4Mki0KRQ=";
54 # Remove unicode file names which leads to different checksums on HFS+
55 # vs. other filesystems because of unicode normalisation.
56 postFetch = ''
57 rm -r $out/test/test-suite/images/
58 '';
59 };
60
61 nativeBuildInputs = [
62 pkg-config
63 meson
64 ninja
65 docbook-xsl-nons
66 gobject-introspection
67 ] ++ lib.optionals (!stdenv.isDarwin) [
68 gtk-doc
69 ];
70
71 buildInputs = [
72 glib
73 libxml2
74 expat
75 (python3.withPackages (p: [ p.pycairo ]))
76 # Optional dependencies
77 libjpeg
78 libexif
79 librsvg
80 poppler
81 libtiff
82 fftw
83 lcms2
84 libspng
85 libimagequant
86 imagemagick
87 pango
88 matio
89 cfitsio
90 libwebp
91 openexr
92 openjpeg
93 libjxl
94 openslide
95 libheif
96 cgif
97 libarchive
98 libhwy
99 ] ++ lib.optionals stdenv.isDarwin [ ApplicationServices Foundation ];
100
101 # Required by .pc file
102 propagatedBuildInputs = [
103 glib
104 ];
105
106 mesonFlags = [
107 "-Dpdfium=disabled"
108 "-Dnifti=disabled"
109 ]
110 ++ lib.optional (!stdenv.isDarwin) "-Dgtk_doc=true"
111 ++ lib.optional (imagemagick == null) "-Dmagick=disabled"
112 ;
113
114 passthru = {
115 tests = {
116 pkg-config = testers.hasPkgConfigModules {
117 package = finalAttrs.finalPackage;
118 };
119 version = testers.testVersion {
120 package = finalAttrs.finalPackage;
121 command = "vips --version";
122 };
123 };
124 updateScript = nix-update-script {
125 extraArgs = [ "--version-regex" "v([0-9.]+)" ];
126 };
127 };
128
129 meta = with lib; {
130 changelog = "https://github.com/libvips/libvips/blob/${finalAttrs.src.rev}/ChangeLog";
131 homepage = "https://www.libvips.org/";
132 description = "Image processing system for large images";
133 license = licenses.lgpl2Plus;
134 maintainers = with maintainers; [ kovirobi anthonyroussel ];
135 pkgConfigModules = [ "vips" "vips-cpp" ];
136 platforms = platforms.unix;
137 mainProgram = "vips";
138 };
139})