{
  stdenv,
  lib,
  fetchFromGitHub,
  boost,
  cmake,
  git,
}:

stdenv.mkDerivation rec {
  pname = "openttd-grfcodec";
  version = "unstable-2021-03-10";

  src = fetchFromGitHub {
    owner = "OpenTTD";
    repo = "grfcodec";
    rev = "045774dee7cab1a618a3e0d9b39bff78a12b6efa";
    sha256 = "0b4xnnkqc01d3r834lhkq744ymar6c8iyxk51wc4c7hvz0vp9vmy";
  };

  buildInputs = [ boost ];
  nativeBuildInputs = [
    cmake
    git
  ];

  installPhase = ''
    mkdir -p $out/bin
    cp -a grfcodec grfid grfstrip nforenum $out/bin/
  '';

  meta = with lib; {
    description = "Low-level (dis)assembler and linter for OpenTTD GRF files";
    homepage = "http://openttd.org/";
    license = licenses.gpl2Plus;
    maintainers = with maintainers; [ ToxicFrog ];
  };
}