1{ lib, pkgs, ... }:
2let
3 pythonShebang = pkgs.writeScript "python-shebang" ''
4 #!/usr/bin/python
5 print("OK")
6 '';
7
8 bashShebang = pkgs.writeScript "bash-shebang" ''
9 #!/usr/bin/bash
10 echo "OK"
11 '';
12in
13{
14 name = "envfs";
15 nodes.machine.services.envfs.enable = true;
16
17 testScript = ''
18 start_all()
19 machine.wait_until_succeeds("mountpoint -q /usr/bin/")
20 machine.succeed(
21 "PATH=${pkgs.coreutils}/bin /usr/bin/cp --version",
22 # check fallback paths
23 "PATH= /usr/bin/sh --version",
24 "PATH= /usr/bin/env --version",
25 "PATH= test -e /usr/bin/sh",
26 "PATH= test -e /usr/bin/env",
27 # also picks up PATH that was set after execve
28 "! /usr/bin/hello",
29 "PATH=${pkgs.hello}/bin /usr/bin/hello",
30 )
31
32 out = machine.succeed("PATH=${pkgs.python3}/bin ${pythonShebang}")
33 print(out)
34 assert out == "OK\n"
35
36 out = machine.succeed("PATH=${pkgs.bash}/bin ${bashShebang}")
37 print(out)
38 assert out == "OK\n"
39 '';
40}