Unverified Commit 6f1890f3 authored by Robert Hensing's avatar Robert Hensing Committed by GitHub
Browse files

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

parents cab4f47a c596592e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+11 −0
Original line number Diff line number Diff line
@@ -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
+12 −2
Original line number Diff line number Diff line
@@ -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
}