From c596592e731fd1775b08d16dd6a5d254123b4b80 Mon Sep 17 00:00:00 2001 From: Cnly Date: Wed, 4 Sep 2024 01:33:03 +0800 Subject: [PATCH] nixos-rebuild: add --no-ssh-tty flag --- .../os-specific/linux/nixos-rebuild/_nixos-rebuild | 1 + .../linux/nixos-rebuild/nixos-rebuild.8 | 11 +++++++++++ .../linux/nixos-rebuild/nixos-rebuild.sh | 14 ++++++++++++-- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/nixos-rebuild/_nixos-rebuild b/pkgs/os-specific/linux/nixos-rebuild/_nixos-rebuild index 84e8d223bd80..31e23136528d 100644 --- a/pkgs/os-specific/linux/nixos-rebuild/_nixos-rebuild +++ b/pkgs/os-specific/linux/nixos-rebuild/_nixos-rebuild @@ -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 diff --git a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.8 b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.8 index 9ef46b564dda..25ae9efba1c7 100644 --- a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.8 +++ b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.8 @@ -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 diff --git a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh index 54e9e92bb292..76d0c0bc09ff 100755 --- a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh +++ b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh @@ -32,6 +32,7 @@ specialisation= buildHost= targetHost= remoteSudo= +noSSHTTY= verboseScript= noFlake= attr= @@ -152,6 +153,9 @@ while [ "$#" -gt 0 ]; do --use-remote-sudo) remoteSudo=1 ;; + --no-ssh-tty) + noSSHTTY=1 + ;; --flake) flake="$1" shift 1 @@ -227,12 +231,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 }