machines: fix remote-program for darwin nix copy

MacOS doesn't come with a proper login shell for ssh and therefore
doesn't have nix in $PATH as it doesn't source /etc/profile.
This restores the remote-program parameter that was accidentally
removed in commit cff5d61f26.
This commit is contained in:
Jörg Thalheim
2025-06-17 12:50:48 +02:00
parent 79f1bed800
commit 62a1f1a9a9

View File

@@ -55,6 +55,12 @@ def upload_sources(machine: Machine, ssh: Remote) -> str:
is_local_input(node) for node in flake_data["locks"]["nodes"].values() is_local_input(node) for node in flake_data["locks"]["nodes"].values()
) )
# Construct the remote URL with proper parameters for Darwin
remote_url = f"ssh://{ssh.target}"
# MacOS doesn't come with a proper login shell for ssh and therefore doesn't have nix in $PATH as it doesn't source /etc/profile
if machine._class_ == "darwin":
remote_url += "?remote-program=bash -lc 'exec nix-daemon --stdio'"
if not has_path_inputs: if not has_path_inputs:
# Just copy the flake to the remote machine, we can substitute other inputs there. # Just copy the flake to the remote machine, we can substitute other inputs there.
path = flake_data["path"] path = flake_data["path"]
@@ -62,7 +68,7 @@ def upload_sources(machine: Machine, ssh: Remote) -> str:
[ [
"copy", "copy",
"--to", "--to",
f"ssh://{ssh.target}", remote_url,
"--no-check-sigs", "--no-check-sigs",
path, path,
] ]
@@ -84,7 +90,7 @@ def upload_sources(machine: Machine, ssh: Remote) -> str:
"flake", "flake",
"archive", "archive",
"--to", "--to",
f"ssh://{ssh.target}", remote_url,
"--json", "--json",
flake_url, flake_url,
] ]