nixos-rebuild: Add tty only to "sudo-able" commands for target

This solves again the problem solved by 09fd207cb8.

To quote:

> We always want to use `ssh -t` to force PTY allocation as there may be
> interactive SSH prompts like trusting unknown hosts.

However, the creation of a pseudoterminal causes the remote stdout and stderr
to point to the same tty, resulting in a single stream in the ssh client,
which breaks other usages of ssh, such as `--build-host`.

Hence, this commit only sets the flag for invocations that need it -
or would need it if sudo were disabled. That should help with development
and gives a somewhat more consistent user experience.
This commit is contained in:
Robert Hensing 2024-01-14 01:14:33 +01:00
parent 99d3e0c168
commit 472dfb3888

View file

@ -196,9 +196,11 @@ targetHostCmd() {
targetHostSudoCmd() {
if [ -n "$remoteSudo" ]; then
useSudo=1 targetHostCmd "$@"
useSudo=1 SSHOPTS="$SSHOPTS -t" targetHostCmd "$@"
else
targetHostCmd "$@"
# While a tty might not be necessary, we apply it to be consistent with
# sudo usage, and an experience that is more consistent with local deployment.
SSHOPTS="$SSHOPTS -t" targetHostCmd "$@"
fi
}