{ fetchurl, fetchpatch, lib, stdenv, libGLU, libGL, libglut, SDL
, libXi, libSM, libXmu, libXext, libX11 }:

stdenv.mkDerivation rec {
  pname = "plib";
  version = "1.8.5";

  src = fetchurl {
    # XXX: The author doesn't use the orthodox SF way to store tarballs.
    url = "https://plib.sourceforge.net/dist/${pname}-${version}.tar.gz";
    sha256 = "0cha71mflpa10vh2l7ipyqk67dq2y0k5xbafwdks03fwdyzj4ns8";
  };

  patches = [
    (fetchpatch {
      url = "https://sources.debian.net/data/main/p/plib/1.8.5-7/debian/patches/04_CVE-2011-4620.diff";
      sha256 = "1b7y0vqqdzd48q68ldlzw0zzqy9mg4c10a754r4hi3ldjmcplf0j";
    })
    (fetchpatch {
      url = "https://sources.debian.net/data/main/p/plib/1.8.5-7/debian/patches/05_CVE-2012-4552.diff";
      sha256 = "0b6cwdwii5b5vy78sbw5cw1s96l4jyzr4dk69v63pa0wwi2b5dki";
    })
    (fetchpatch {
      url = "https://sources.debian.org/data/main/p/plib/1.8.5-13/debian/patches/08_CVE-2021-38714.patch";
      sha256 = "sha256-3f1wZn0QqK/hPWCg1KEzbB95IGoxBjLZoCOFlW98t5w=";
    })
  ];

  propagatedBuildInputs = [
    libGLU libGL libglut SDL

    # The following libs ought to be propagated build inputs of Mesa.
    libXi libSM libXmu libXext libX11
  ];

  meta = {
    description = "Suite of portable game libraries";

    longDescription = ''
      PLIB includes sound effects, music, a complete 3D engine, font
      rendering, a simple Windowing library, a game scripting
      language, a GUI, networking, 3D math library and a collection of
      handy utility functions.  All are 100% portable across nearly
      all modern computing platforms.  What's more, it's all available
      on line - and completely free.  Each library component is fairly
      independent of the others - so if you want to use SDL, GTK,
      GLUT, or FLTK instead of PLIB's 'PW' windowing library, you can.
    '';

    license = lib.licenses.lgpl2Plus;

    homepage = "https://plib.sourceforge.net/";
    platforms = lib.platforms.linux;
  };
}
