{
  lib,
  stdenv,
  fetchFromGitHub,
  fetchpatch,
  autoreconfHook,
}:

stdenv.mkDerivation rec {
  pname = "libinotify-kqueue";
  version = "20240724";

  src = fetchFromGitHub {
    owner = "libinotify-kqueue";
    repo = "libinotify-kqueue";
    rev = version;
    sha256 = "sha256-m59GWrx5C+JXDbhVdKx+SNSn8wwIKyW+KlXabNi17A0=";
  };

  patches = [
    # https://github.com/libinotify-kqueue/libinotify-kqueue/pull/23
    (fetchpatch {
      name = "add-configure-caching.patch";
      url = "https://github.com/libinotify-kqueue/libinotify-kqueue/commit/81a8f05c1ce6df819dc898f3754c9c874ee24b10.patch";
      hash = "sha256-imKS2DuQrHSMnJH1gOYrVSeWTe2nhcl8Gm9IX5B9ZqI=";
    })
  ];

  nativeBuildInputs = [ autoreconfHook ];

  configureFlags =
    lib.optionals (with stdenv; buildPlatform != hostPlatform && hostPlatform.isFreeBSD)
      [
        "ik_cv_have_note_extend_in=yes"
        "ik_cv_have_note_extend_out=yes"
        "ik_cv_have_o_path=yes"
        "ik_cv_have_o_empty_path=yes"
        "ik_cv_have_at_empty_path=yes"
      ];

  checkFlags = [ "test" ];

  meta = {
    description = "Inotify shim for macOS and BSD";
    homepage = "https://github.com/libinotify-kqueue/libinotify-kqueue";
    license = lib.licenses.mit;
    maintainers = [ ];
    platforms = with lib.platforms; darwin ++ freebsd ++ netbsd ++ openbsd;
  };
}
