{
  lib,
  stdenv,
  fetchFromGitHub,
  cmake,
  nasm,
  cpuinfo,
  libdovi,
  hdr10plus ? null,

}:

stdenv.mkDerivation (finalAttrs: {
  pname = "svt-av1-psy";
  version = "3.0.2";

  src = fetchFromGitHub {
    owner = "gianni-rosato";
    repo = "svt-av1-psy";
    rev = "v${finalAttrs.version}";
    hash = "sha256-le/t03vM4WyBswDOLiI3yUnsvpY0jVXeupkkCt8UrXE=";
  };

  nativeBuildInputs = [
    cmake
    nasm
  ];
  makeBuildType = "Release";

  buildInputs = [
    cpuinfo
    libdovi
  ]
  ++ 
  (lib.optionals (hdr10plus!=null) [hdr10plus]);

  cmakeFlags = [
    "-DSVT_AV1_LTO=ON"
    "-DUSE_EXTERNAL_CPUINFO=ON"
    "-DLIBDOVI_FOUND=ON"
  ]
  ++
  (lib.optionals (hdr10plus!=null) ["-DLIBHDR10PLUS_RS_FOUND=ON"]);

  meta = with lib; {
    homepage = "https://github.com/gianni-rosato/svt-av1-psy";
    description = "The Scalable Video Technology for AV1 (SVT-AV1 Encoder and Decoder) with perceptual enhancements for psychovisually optimal AV1 encoding";

    longDescription = ''
      SVT-AV1-PSY is the Scalable Video Technology for AV1 (SVT-AV1 Encoder and Decoder) with perceptual enhancements for psychovisually optimal AV1 encoding.
      The goal is to create the best encoding implementation for perceptual quality with AV1.
    '';

    license = with licenses; [
      aom
      bsd3
    ];
    platforms = platforms.unix;
  };
})