{ lib, mkDerivation, fetchFromGitHub, pkg-config, cmake, libX11, libXtst, qtbase, qttools, qtx11extras }:
mkDerivation rec {
  pname = "qjoypad";
  version = "4.3.1";

  src = fetchFromGitHub {
    owner = "panzi";
    repo = pname;
    rev = "v${version}";
    hash = "sha256:1w26ddxb1xirb7qjf7kv9llxzjhbhcb7warnxbx41qhbni46g26y";
  };

  nativeBuildInputs = [ pkg-config cmake qttools ];
  buildInputs = [ libX11 libXtst qtbase qtx11extras ];

  meta = with lib; {
    description = "Program that lets you use gaming devices anywhere";
    longDescription = ''
      A simple Linux/QT program that lets you use your gaming devices
      where you want them: in your games! QJoyPad takes input from a
      gamepad or joystick and translates it into key strokes or mouse
      actions, letting you control any XWindows program with your game
      controller. This lets you play all those games that for some
      reason don't have joystick support with your joystick. QJoyPad
      also gives you the advantage of multiple saved layouts so you
      can have a separate setting for every game, or for every class
      of game! That way you can play your games the way you want, not
      the way the programmers decided, and you can have the same
      button be "fire" in every one of your space fighters. QJoyPad
      gives you the freedom and flexibility to really take advantage
      of gaming devices in Linux, and makes the Linux gaming
      experience just a little bit nicer.
    '';
    homepage = "https://github.com/panzi/qjoypad/";
    license = lib.licenses.gpl2Only;
    maintainers = with maintainers; [ astsmtl ];
    platforms = with platforms; linux;
    mainProgram = "qjoypad";
  };
}
