{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config
, tokyocabinet, ncurses
, cairo ? null, pango ? null
, enableCairo ? stdenv.isLinux
}:

assert enableCairo -> cairo != null && pango != null;

stdenv.mkDerivation rec {
  pname = "duc";
  version = "1.4.5";

  src = fetchFromGitHub {
    owner = "zevv";
    repo = "duc";
    rev = version;
    sha256 = "sha256-ZLNsyp82UnsveEfDKzH8WfRh/Y/PQlXq8Ma+jIZl9Gk=";
  };

  nativeBuildInputs = [ autoreconfHook pkg-config ];
  buildInputs = [ tokyocabinet ncurses ] ++
    lib.optionals enableCairo [ cairo pango ];

  configureFlags =
    lib.optionals (!enableCairo) [ "--disable-x11" "--disable-cairo" ];

  meta = with lib; {
    homepage = "http://duc.zevv.nl/";
    description = "Collection of tools for inspecting and visualizing disk usage";
    license = licenses.gpl2Only;

    platforms = platforms.all;
    maintainers = [ ];
    mainProgram = "duc";
  };
}
