{ lib, stdenv, fetchFromGitHub, fetchpatch
, pkg-config, cmake
, libpulseaudio, ncurses }:

stdenv.mkDerivation rec {
  pname = "pamix";
  version = "1.6";

  src = fetchFromGitHub {
    owner  = "patroclos";
    repo   = "pamix";
    rev    = version;
    sha256 = "1d44ggnwkf2gff62959pj45v3a2k091q8v154wc5pmzamam458wp";
  };

  patches = [
    # ncurses-6.3 support, included in next release
    (fetchpatch {
      name = "ncurses-6.3-p1.patch";
      url = "https://github.com/patroclos/PAmix/commit/3400b9c048706c572373e4617b4d5fcdb8dd2505.patch";
      sha256 = "0rw56a844pz876ad9p8hfvn2fkd5rh29gpp47h55g08spf0vwb2z";
    })
    (fetchpatch {
      name = "ncurses-6.3-p2.patch";
      url = "https://github.com/patroclos/PAmix/commit/5ef67fc5ef6fc0dc0b48ff07ba48093881561d9c.patch";
      sha256 = "0f8shpdv2swxdz04bkqgmkvl6c17r5mn4slzr7xd6pvw8hh51p4h";
    })
  ];

  preConfigure = ''
    substituteInPlace CMakeLists.txt --replace "/etc" "$out/etc/xdg"
  '';

  nativeBuildInputs = [ cmake pkg-config ];
  buildInputs = [ libpulseaudio ncurses ];

  meta = with lib; {
    description = "Pulseaudio terminal mixer";
    homepage    = "https://github.com/patroclos/PAmix";
    license     = licenses.mit;
    platforms   = platforms.linux;
    maintainers = with maintainers; [ ericsagnes ];
    mainProgram = "pamix";
  };
}
