import ./make-test-python.nix (
  { lib, pkgs, ... }:
  let
    pythonShebang = pkgs.writeScript "python-shebang" ''
      #!/usr/bin/python
      print("OK")
    '';

    bashShebang = pkgs.writeScript "bash-shebang" ''
      #!/usr/bin/bash
      echo "OK"
    '';
  in
  {
    name = "envfs";
    nodes.machine.services.envfs.enable = true;

    testScript = ''
      start_all()
      machine.wait_until_succeeds("mountpoint -q /usr/bin/")
      machine.succeed(
          "PATH=${pkgs.coreutils}/bin /usr/bin/cp --version",
          # check fallback paths
          "PATH= /usr/bin/sh --version",
          "PATH= /usr/bin/env --version",
          "PATH= test -e /usr/bin/sh",
          "PATH= test -e /usr/bin/env",
          # no stat
          "! test -e /usr/bin/cp",
          # also picks up PATH that was set after execve
          "! /usr/bin/hello",
          "PATH=${pkgs.hello}/bin /usr/bin/hello",
      )

      out = machine.succeed("PATH=${pkgs.python3}/bin ${pythonShebang}")
      print(out)
      assert out == "OK\n"

      out = machine.succeed("PATH=${pkgs.bash}/bin ${bashShebang}")
      print(out)
      assert out == "OK\n"
    '';
  }
)