{ lib, stdenv, fetchFromGitHub,
  autoconf, automake, libtool, cmake,
  rtl-sdr, libao, fftwFloat
} :
let
  src_faad2 = fetchFromGitHub {
    owner = "dsvensson";
    repo = "faad2";
    rev = "b7aa099fd3220b71180ed2b0bc19dc6209a1b418";
    sha256 = "0pcw2x9rjgkf5g6irql1j4m5xjb4lxj6468z8v603921bnir71mf";
  };

  version = "1.0";

in stdenv.mkDerivation {
  pname = "nrsc5";
  inherit version;

  src = fetchFromGitHub {
    owner = "theori-io";
    repo = "nrsc5";
    rev = "v${version}";
    sha256 = "09zzh3h1zzf2lwrbz3i7rif2hw36d9ska8irvxaa9lz6xc1y68pg";
  };

  postUnpack = ''
    export srcRoot=`pwd`
    export faadSrc="$srcRoot/faad2-prefix/src/faad2_external"
    mkdir -p $faadSrc
    cp -r ${src_faad2}/* $faadSrc
    chmod -R u+w $faadSrc
  '';

  postPatch = ''
    sed -i '/GIT_REPOSITORY/d' CMakeLists.txt
    sed -i '/GIT_TAG/d' CMakeLists.txt
    sed -i "s:set (FAAD2_PREFIX .*):set (FAAD2_PREFIX \"$srcRoot/faad2-prefix\"):" CMakeLists.txt
  '';

  nativeBuildInputs = [ cmake autoconf automake libtool ];
  buildInputs = [ rtl-sdr libao fftwFloat ];

  cmakeFlags = [ "-DUSE_COLOR=ON" "-DUSE_FAAD2=ON" ];

  meta = with lib; {
    homepage = "https://github.com/theori-io/nrsc5";
    description = "HD-Radio decoder for RTL-SDR";
    platforms = lib.platforms.linux;
    license = licenses.gpl3Plus;
    maintainers = with maintainers; [ markuskowa ];
    mainProgram = "nrsc5";
  };
}

