diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/models.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/models.py index 5ee8d411ab0c..6c9f01a115f0 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/models.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/models.py @@ -122,9 +122,16 @@ class SSH: tty: bool @classmethod - def from_arg(cls, host: str | None, tty: bool | None) -> Self | None: + def from_arg(cls, host: str | None, tty: bool | None, tmp_dir: Path) -> Self | None: if host: - opts = os.getenv("SSH_OPTS", "").split() + opts = os.getenv("NIX_SSHOPTS", "").split() + [ + "-o", + "ControlMaster=auto", + "-o", + f"ControlPath={tmp_dir / "ssh-%n"}", + "-o", + "ControlPersist=60", + ] return cls(host, opts, bool(tty)) else: return None diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_models.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_models.py index 63cddc479f43..d2c0442b4369 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_models.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_models.py @@ -100,12 +100,34 @@ def test_profile_from_name(mock_mkdir: Any) -> None: mock_mkdir.assert_called_once() -def test_ssh_from_name(monkeypatch: Any) -> None: - assert m.SSH.from_arg("user@localhost", None) == m.SSH("user@localhost", [], False) - - monkeypatch.setenv("SSH_OPTS", "-f foo -b bar") - assert m.SSH.from_arg("user@localhost", True) == m.SSH( +def test_ssh_from_name(monkeypatch: Any, tmpdir: Path) -> None: + assert m.SSH.from_arg("user@localhost", None, tmpdir) == m.SSH( "user@localhost", - ["-f", "foo", "-b", "bar"], + [ + "-o", + "ControlMaster=auto", + "-o", + f"ControlPath={tmpdir / "ssh-%n"}", + "-o", + "ControlPersist=60", + ], + False, + ) + + monkeypatch.setenv("NIX_SSHOPTS", "-f foo -b bar", tmpdir) + assert m.SSH.from_arg("user@localhost", True, tmpdir) == m.SSH( + "user@localhost", + [ + "-f", + "foo", + "-b", + "bar", + "-o", + "ControlMaster=auto", + "-o", + f"ControlPath={tmpdir / "ssh-%n"}", + "-o", + "ControlPersist=60", + ], True, )