{ lib, stdenv, fetchurl }:

stdenv.mkDerivation rec {
  pname = "trezor-udev-rules";
  version = "unstable-2019-07-17";

  udevRules = fetchurl {
    # let's pin the latest commit in the repo which touched the udev rules file
    url = "https://raw.githubusercontent.com/trezor/trezor-firmware/68a3094b0a8e36b588b1bcb58c34a2c9eafc0dca/common/udev/51-trezor.rules";
    sha256 = "0vlxif89nsqpbnbz1vwfgpl1zayzmq87gw1snskn0qns6x2rpczk";
  };

  dontUnpack = true;

  installPhase = ''
    cp ${udevRules} 51-trezor.rules
    mkdir -p $out/lib/udev/rules.d
    # we use trezord group, not plugdev
    # we don't need the udev-acl tag
    substituteInPlace 51-trezor.rules \
      --replace 'GROUP="plugdev"' 'GROUP="trezord"' \
      --replace ', TAG+="udev-acl"' ""
    cp 51-trezor.rules $out/lib/udev/rules.d/51-trezor.rules
  '';

  meta = with lib; {
    description = "Udev rules for Trezor";
    license = licenses.gpl3;
    maintainers = with maintainers; [ prusnak ];
    platforms = platforms.linux;
    homepage = "https://github.com/trezor/trezor-firmware/tree/master/common/udev";
  };
}
