{ lib , stdenv , fetchurl , zlib , libX11 , libpng , libjpeg , gd , freetype , runCommand }: stdenv.mkDerivation (finalAttrs: { pname = "ploticus"; version = "2.42"; src = fetchurl { url = "mirror://sourceforge/ploticus/ploticus/${finalAttrs.version}/ploticus${lib.replaceStrings [ "." ] [ "" ] finalAttrs.version}_src.tar.gz"; sha256 = "PynkufQFIDqT7+yQDlgW2eG0OBghiB4kHAjKt91m4LA="; }; patches = [ # Replace hardcoded FHS path with $out. ./ploticus-install.patch # Set the location of the PREFABS directory. ./set-prefabs-dir.patch # Use gd from Nixpkgs instead of the vendored one. # This is required for non-ASCII fonts to work: # https://ploticus.sourceforge.net/doc/fonts.html ./use-gd-package.patch ]; buildInputs = [ zlib libX11 libpng gd freetype libjpeg ]; hardeningDisable = [ "format" ]; postPatch = '' substituteInPlace src/pl.h --subst-var out ''; preBuild = '' cd src ''; makeFlags = [ "CC:=$(CC)" ]; preInstall = '' mkdir -p "$out/bin" ''; postInstall = '' cd .. # Install the “prefabs”. mkdir -p "$out/share/ploticus/prefabs" cp -rv prefabs/* "$out/share/ploticus/prefabs" # Add aliases for backwards compatibility. ln -s "pl" "$out/bin/ploticus" ''; passthru.tests = { prefab = runCommand "ploticus-prefab-test" { nativeBuildInputs = [ finalAttrs.finalPackage ]; } '' # trivial test to see if the prefab path munging works mkdir $out/ pl -prefab scat inlinedata="A 1 2" x=2 y=3 -png -o $out/out.png ''; }; meta = with lib; { description = "Non-interactive software package for producing plots and charts"; longDescription = '' Ploticus is a free, GPL'd, non-interactive software package for producing plots, charts, and graphics from data. Ploticus is good for automated or just-in-time graph generation, handles date and time data nicely, and has basic statistical capabilities. It allows significant user control over colors, styles, options and details. ''; license = licenses.gpl2Plus; maintainers = with maintainers; [ pSub ]; homepage = "https://ploticus.sourceforge.net/"; platforms = with platforms; linux ++ darwin; }; })