{
  lib,
  stdenv,
}:

{
  src,
  script,
  ...
} @ args:
lib.hiPrio (stdenv.mkDerivation (
  {
    src = src;
    name = if lib.isDerivation src
      then "${src.name}-script-override"
      else "${builtins.baseNameOf src}-script-override";
    phases = [ "installPhase" "scriptOverridePhase" ];
    installPhase = ''
      runHook preInstall

      cp -r $src $out
      chmod u+w -R $out

      runHook postInstall
    '';
    scriptOverridePhase = script;
  } // lib.removeAttrs args [
    "src"
    "script"
  ]
))