{ lib, stdenv, fetchurl, fetchpatch, libxml2, ncurses, bison, flex }:

stdenv.mkDerivation rec {
  pname = "tiptop";
  version = "2.3.1";

  src = fetchurl {
    url = "${meta.homepage}/releases/${pname}-${version}.tar.gz";
    sha256 = "10j1138y3cj3hsmfz4w0bmk90523b0prqwi9nhb4z8xvjnf49i2i";
  };

  patches = [
    (fetchpatch {
      name = "reproducibility.patch";
      url = "https://salsa.debian.org/debian/tiptop/raw/debian/2.3.1-1/debian/patches/0001-fix-reproducibility-of-build-process.patch";
      sha256 = "116l7n3nl9lj691i7j8x0d0za1i6zpqgghw5d70qfpb17c04cblp";
    })

    # Pull upstream patch for ncurses-6.3
    (fetchpatch {
      name = "ncurses-6.3.patch";
      url = "https://gitlab.inria.fr/rohou/tiptop/-/commit/a78234c27fdd62fed09430d998950e49e11a1832.patch";
      sha256 = "1k55agdri7iw3gwm4snj3ps62qzmxlqr6s0868l8qamjw38z9g00";
    })
  ];

  postPatch = ''
    substituteInPlace ./configure --replace -lcurses -lncurses
  '';

  nativeBuildInputs = [ flex bison ];
  buildInputs = [ libxml2 ncurses ];

  env.NIX_CFLAGS_COMPILE = "-I${libxml2.dev}/include/libxml2";

  meta = with lib; {
    description = "Performance monitoring tool for Linux";
    homepage = "http://tiptop.gforge.inria.fr";
    license = licenses.gpl2Only;
    platforms = platforms.linux;
    maintainers = [ ];
  };
}

