From c67eb446daa24665dd0599cc9cba2ae4ad7a7d4f Mon Sep 17 00:00:00 2001 From: "Wael M. Nasreddine" Date: Wed, 13 Jul 2022 14:58:42 -0700 Subject: [PATCH 1/3] wkhtmltopdf-bin: add support for Linux --- .../graphics/wkhtmltopdf-bin/default.nix | 91 +++++++++++++++---- pkgs/top-level/all-packages.nix | 4 +- 2 files changed, 74 insertions(+), 21 deletions(-) diff --git a/pkgs/tools/graphics/wkhtmltopdf-bin/default.nix b/pkgs/tools/graphics/wkhtmltopdf-bin/default.nix index 3c2b446a8e1c..2218d2528c03 100644 --- a/pkgs/tools/graphics/wkhtmltopdf-bin/default.nix +++ b/pkgs/tools/graphics/wkhtmltopdf-bin/default.nix @@ -1,28 +1,76 @@ -{ stdenv, lib, fetchurl, wkhtmltopdf, xar, cpio }: +{ lib +, autoPatchelfHook +, cpio +, freetype +, zlib +, openssl +, dpkg +, fetchurl +, gcc-unwrapped +, libjpeg8 +, libpng +, fontconfig +, stdenv +, wkhtmltopdf +, xar +, xorg +}: -stdenv.mkDerivation rec { +let + darwinAttrs = rec { + version = "0.12.6-2"; + src = fetchurl { + url = "https://github.com/wkhtmltopdf/packaging/releases/download/${version}/wkhtmltox-${version}.macos-cocoa.pkg"; + sha256 = "sha256-gaZrd7UI/t6NvKpnEnIDdIN2Vos2c6F/ZhG21R6YlPg="; + }; - pname = "wkhtmltopdf-bin"; - version = "0.12.6-1"; - sha256 = "1db59kdprzpmvdj1bg47lmfgi3zlvzvqif11sbym9hw61xy6gp3d"; - src = fetchurl { - url = - "https://github.com/wkhtmltopdf/packaging/releases/download/${version}/wkhtmltox-${version}.macos-cocoa.pkg"; - inherit sha256; + nativeBuildInputs = [ xar cpio ]; + + unpackPhase = '' + xar -xf $src + zcat Payload | cpio -i + tar -xf usr/local/share/wkhtmltox-installer/wkhtmltox.tar.gz + ''; + + installPhase = '' + mkdir -p $out + cp -r bin include lib share $out/ + ''; }; - buildInputs = [ xar cpio ]; + linuxAttrs = rec { + version = "0.12.6-3"; + src = fetchurl { + url = "https://github.com/wkhtmltopdf/packaging/releases/download/${version}/wkhtmltox-${version}.archlinux-x86_64.pkg.tar.xz"; + sha256 = "sha256-6Ewu8sPRbqvYWj27mBlQYpEN+mb+vKT46ljrdEUxckI="; + }; - unpackPhase = '' - xar -xf $src - zcat Payload | cpio -i - tar -xf usr/local/share/wkhtmltox-installer/wkhtmltox.tar.gz - ''; + nativeBuildInputs = [ autoPatchelfHook ]; - installPhase = '' - mkdir -p $out - cp -r bin include lib share $out/ - ''; + buildInputs = [ + xorg.libXext + xorg.libXrender + + freetype + openssl + zlib + + (lib.getLib fontconfig) + (lib.getLib gcc-unwrapped) + (lib.getLib libjpeg8) + (lib.getLib libpng) + ]; + + unpackPhase = "tar -xf $src"; + + installPhase = '' + mkdir -p $out + cp -r usr/bin usr/include usr/lib usr/share $out/ + ''; + }; +in +stdenv.mkDerivation ({ + pname = "wkhtmltopdf-bin"; dontStrip = true; @@ -46,6 +94,9 @@ stdenv.mkDerivation rec { ''; license = licenses.gpl3Plus; maintainers = with maintainers; [ nbr ]; - platforms = [ "x86_64-darwin" ]; + platforms = [ "x86_64-darwin" "x86_64-linux" ]; }; } +// lib.optionalAttrs (stdenv.hostPlatform.isDarwin) darwinAttrs +// lib.optionalAttrs (stdenv.hostPlatform.isLinux) linuxAttrs +) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c3ce352d912d..0118d7a13263 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12027,7 +12027,9 @@ with pkgs; wkhtmltopdf = libsForQt514.callPackage ../tools/graphics/wkhtmltopdf { }; - wkhtmltopdf-bin = callPackage ../tools/graphics/wkhtmltopdf-bin { }; + wkhtmltopdf-bin = callPackage ../tools/graphics/wkhtmltopdf-bin { + libjpeg8 = libjpeg.override { enableJpeg8 = true; }; + }; wml = callPackage ../development/web/wml { }; From bb3f5dda652dd27880f26ceceedf6cccfe926650 Mon Sep 17 00:00:00 2001 From: "Wael M. Nasreddine" Date: Tue, 19 Jul 2022 09:12:45 -0700 Subject: [PATCH 2/3] wkhtmltopdf-bin: add myself as maintainer --- pkgs/tools/graphics/wkhtmltopdf-bin/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/graphics/wkhtmltopdf-bin/default.nix b/pkgs/tools/graphics/wkhtmltopdf-bin/default.nix index 2218d2528c03..166df83b63f7 100644 --- a/pkgs/tools/graphics/wkhtmltopdf-bin/default.nix +++ b/pkgs/tools/graphics/wkhtmltopdf-bin/default.nix @@ -93,7 +93,7 @@ stdenv.mkDerivation ({ There is also a C library, if you're into that kind of thing. ''; license = licenses.gpl3Plus; - maintainers = with maintainers; [ nbr ]; + maintainers = with maintainers; [ nbr kalbasit ]; platforms = [ "x86_64-darwin" "x86_64-linux" ]; }; } From 19603a74aabdda566be3f21efc8daee020b276b9 Mon Sep 17 00:00:00 2001 From: "Wael M. Nasreddine" Date: Tue, 19 Jul 2022 09:17:07 -0700 Subject: [PATCH 3/3] wkhtmltopdf-bin: runHook pre/post install phases --- pkgs/tools/graphics/wkhtmltopdf-bin/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/tools/graphics/wkhtmltopdf-bin/default.nix b/pkgs/tools/graphics/wkhtmltopdf-bin/default.nix index 166df83b63f7..6f41f2826b2d 100644 --- a/pkgs/tools/graphics/wkhtmltopdf-bin/default.nix +++ b/pkgs/tools/graphics/wkhtmltopdf-bin/default.nix @@ -33,8 +33,10 @@ let ''; installPhase = '' + runHook preInstall mkdir -p $out cp -r bin include lib share $out/ + runHook postInstall ''; }; @@ -64,8 +66,10 @@ let unpackPhase = "tar -xf $src"; installPhase = '' + runHook preInstall mkdir -p $out cp -r usr/bin usr/include usr/lib usr/share $out/ + runHook postInstall ''; }; in