{
  lib,
  stdenv,
  fetchpatch2,
  fetchurl,
  cmake,
  pkg-config,
  gettext,
  gtk2,
  libcanberra,
  libnotify,
  sqlite,
  libxdmcp,
  libpthread-stubs,
  harfbuzz,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "libgaminggear";
  version = "0.15.1";

  src = fetchurl {
    url = "mirror://sourceforge/libgaminggear/libgaminggear-${finalAttrs.version}.tar.bz2";
    sha256 = "0jf5i1iv8j842imgiixbhwcr6qcwa93m27lzr6gb01ri5v35kggz";
  };

  patches = [
    (fetchpatch2 {
      url = "https://aur.archlinux.org/cgit/aur.git/plain/cmake_min_version.patch?h=libgaminggear&id=bfe7db62db76dbcefa8ba47640a35c80183f91d3";
      hash = "sha256-loznfqxlucYlDUSYotMdUBmivKu+DD+OYhRIWpcrSgE=";
    })
  ];

  outputs = [
    "dev"
    "out"
    "bin"
  ];

  nativeBuildInputs = [
    cmake
    pkg-config
    gettext
  ];

  propagatedBuildInputs = [
    gtk2
    libcanberra
    libnotify
    sqlite
    libxdmcp
    libpthread-stubs
  ];

  cmakeFlags = [
    "-DINSTALL_CMAKE_MODULESDIR=lib/cmake"
    "-DINSTALL_PKGCONFIGDIR=lib/pkgconfig"
    "-DINSTALL_LIBDIR=lib"
  ];

  # https://sourceforge.net/p/libgaminggear/discussion/general/thread/b43a776b3a/
  env.NIX_CFLAGS_COMPILE = toString [ "-I${harfbuzz.dev}/include/harfbuzz" ];

  postFixup = ''
    moveToOutput bin "$bin"
  '';

  meta = {
    description = "Provides functionality for gaming input devices";
    homepage = "https://sourceforge.net/projects/libgaminggear/";
    platforms = lib.platforms.linux;
    license = lib.licenses.gpl2Plus;
  };
})
