nixos-rebuild: add --no-ssh-tty flag (#339388)

This commit is contained in:
Robert Hensing 2024-10-15 10:10:21 +02:00 committed by GitHub
commit 6f1890f3e6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 24 additions and 2 deletions

View File

@ -36,6 +36,7 @@ _nixos-rebuild() {
--rollback
--specialisation -c # name
--use-remote-sudo
--no-ssh-tty
--build-host # host
--target-host # host
# Used with list-generations

View File

@ -37,6 +37,7 @@
.Op Fl -build-host Va host
.Op Fl -target-host Va host
.Op Fl -use-remote-sudo
.Op Fl -no-ssh-tty
.br
.Op Fl -verbose | v
.Op Fl -quiet
@ -392,6 +393,16 @@ system with
.Ic sudo Ns
\&. Setting this option allows deploying as a non-root user.
.
.It Fl -no-ssh-tty
When set, nixos-rebuild will not request a tty when executing commands on the
.Fl -target-host
system with
.Ic ssh Ns
\&. This may help avoid corrupted terminal output when running multiple
nixos-rebuild commands in parallel, but may also prevent the remote
.Ic sudo
from working properly.
.
.It Fl -file Ar path , Fl f Ar path
Enable and build the NixOS system from the specified file. The file must
evaluate to an attribute set, and it must contain a valid NixOS configuration

View File

@ -32,6 +32,7 @@ specialisation=
buildHost=
targetHost=
remoteSudo=
noSSHTTY=
verboseScript=
noFlake=
attr=
@ -163,6 +164,9 @@ while [ "$#" -gt 0 ]; do
--use-remote-sudo)
remoteSudo=1
;;
--no-ssh-tty)
noSSHTTY=1
;;
--flake)
flake="$1"
shift 1
@ -238,12 +242,18 @@ targetHostCmd() {
}
targetHostSudoCmd() {
local t=
if [[ ! "${noSSHTTY:-x}" = 1 ]]; then
t="-t"
fi
if [ -n "$remoteSudo" ]; then
useSudo=1 SSHOPTS="$SSHOPTS -t" targetHostCmd "$@"
useSudo=1 SSHOPTS="$SSHOPTS $t" targetHostCmd "$@"
else
# 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 "$@"
# But if the user really doesn't want it, don't do it.
SSHOPTS="$SSHOPTS $t" targetHostCmd "$@"
fi
}