{
  lib,
  python3,
  runCommandLocal,
  makeWrapper,
}: let
  write_python = {
    name,
    dependencies_system ? [],
    dependencies_python ? _: [],
    keepPath ? false,
  }: let
    src = ./${name}.py;
    dependencies =
      [(python3.withPackages dependencies_python)]
      ++ dependencies_system;
    path_setting =
      if keepPath
      then "--prefix PATH :"
      else "--set PATH";
  in
    runCommandLocal name {
      nativeBuildInputs = [makeWrapper] ++ dependencies;
    }
    ''
      install -m755 ${src} -D "$out/bin/${name}"
      patchShebangs "$out/bin/${name}"
      wrapProgram "$out/bin/${name}" ${path_setting} ${lib.makeBinPath dependencies};
    '';
in
  write_python {
    name = "nato";
    dependencies_python = ps: [];
  }