Skip to content

[Question] Is there a way to support ?remote-program= in ssh url ? #298

Open
@573

Description

@573

Related #290, would it be possible to support what NixOS/nix#8292 (comment) suggests, via ssh_opts probably ?

This way non-NixOS targets could more easily benefit of https://github.com/serokell/deploy-rs, i. e. :

$ nix copy --substitute-on-destination --no-check-sigs --to ssh://nix-on-droid@smartphone\?remote-program=/etc/profiles/per-user/nix-on-droid/bin/nix-store /nix/store/yq15m37688hzfpmqgmhppn0wp4ppvygr-activatable-neofetch-unstable-2021-12-10
debug1: auto-mux: Trying existing master at '/home/nixos/.ssh/socket-nix-on-droid@nn.nn.nn.nn-nn'
debug2: fd 3 setting O_NONBLOCK
debug2: mux_client_hello_exchange: master version 4
debug3: mux_client_forwards: request forwardings: 0 local, 0 remote
debug3: mux_client_request_session: entering
debug3: mux_client_request_alive: entering
debug3: mux_client_request_alive: done pid = 20718
debug3: mux_client_request_session: session request sent
debug1: mux_client_request_session: master session id: 3
copying path '/nix/store/r1ma6z6i44yj3lwv5kc29wsrgylml3j1-neofetch-unstable-2021-12-10-man' from 'https://cache.nixos.org'...
copying path '/nix/store/x66almqzcwwywmsyhvkx7vcwpgyz02lc-giflib-5.2.2' from 'https://cache.nixos.org'...
copying path '/nix/store/79grpcy67lpyz36a9q6m3dpa0waj7xpn-lerc-4.0.0' from 'https://cache.nixos.org'...
copying path '/nix/store/c27whjwb134h1ldmczxfjyig46y0dlg6-libimagequant-4.3.0' from 'https://cache.nixos.org'...
copying path '/nix/store/db07vavvjbc0n2c1qw22g7zy771idcdr-lcms2-2.16' from 'https://cache.nixos.org'...
copying path '/nix/store/zspkk5cva1sddii4k5a7mppa2lk8qg0n-python3.11-defusedxml-0.7.1' from 'https://cache.nixos.org'...
copying path '/nix/store/81rhymr34gwz87xbmagxn6988k8p2p3l-python3.11-olefile-0.47' from 'https://cache.nixos.org'...
copying path '/nix/store/x5m8anfh367mj19m2jj74cicmmjw6h1p-python3.11-psutil-5.9.8' from 'https://cache.nixos.org'...
copying path '/nix/store/5qw8s8sp8mv7qgz7q2pd7l4y0yrpfa50-libdeflate-1.20' from 'https://cache.nixos.org'...
copying path '/nix/store/li8dw789c5piy8xkm40735p475dbm21c-python3.11-six-1.16.0' from 'https://cache.nixos.org'...
copying path '/nix/store/55mn7bzrzzigjbffi6brm08k34z35ssk-python3.11-attrs-23.2.0' from 'https://cache.nixos.org'...
copying path '/nix/store/zzscwsgzryppyb2yybv8hnwx93jp406g-pciutils-3.12.0' from 'https://cache.nixos.org'...
copying path '/nix/store/bn06khc46v7bzw4czq1kd9djmy1cqk2r-python3.11-docopt-0.6.2' from 'https://cache.nixos.org'...
copying path '/nix/store/6ib3fxmjyh5jjv63aw694pj3j23s4n6j-python3.11-xlib-0.33' from 'https://cache.nixos.org'...
copying path '/nix/store/2hvgk61j3rrr968r3nkbdy1fhwjd3las-libtiff-4.6.0' from 'https://cache.nixos.org'...
copying path '/nix/store/j52s6fdiv6iqgd5zdwzyckz1vciqskjb-openjpeg-2.5.2' from 'https://cache.nixos.org'...
copying path '/nix/store/x6ghh5kl26hcdyiigjh06wbymsv7dxad-libwebp-1.4.0' from 'https://cache.nixos.org'...
copying path '/nix/store/ix26ydhww3gnnjxp7yxknqkhzzw80sl0-python3.11-pillow-10.3.0' from 'https://cache.nixos.org'...
copying path '/nix/store/7r5llhz5ri066b1ifp4a9s76jw7h6b8l-python3.11-ueberzug-18.1.9' from 'https://cache.nixos.org'...
copying path '/nix/store/hijxfyd0fbzf1h2q5vlcgs8wklkwfslv-neofetch-unstable-2021-12-10' from 'https://cache.nixos.org'...

vs. (without PATH set to /etc/profiles/per-user/nix-on-droid/bin/ for ssh, redacted log bits)

$ nix shell nixpkgs#deploy-rs --command deploy -s .#sams9__x86_64-linux -- --impure
🚀 ℹ️ [deploy] [INFO] The following profiles are going to be deployed:
[sams9__x86_64-linux.system]
user = "nix-on-droid"
ssh_user = "nix-on-droid"
path = "/nix/store/yq15m37688hzfpmqgmhppn0wp4ppvygr-activatable-neofetch-unstable-2021-12-10"
hostname = "smartphone"
ssh_opts = ["-p", "8022", "-vvv"]

🚀 ℹ️ [deploy] [INFO] Building profile `system` for node `sams9__x86_64-linux`
🚀 ℹ️ [deploy] [INFO] Copying profile `system` to node `sams9__x86_64-linux`
OpenSSH_9.7p1, OpenSSL 3.0.14 4 Jun 2024
debug1: Reading configuration data /home/nixos/.ssh/config
debug3: /home/nixos/.ssh/config line 1: Including file /home/nixos/.ssh/config.d/morehosts depth 0
debug1: Reading configuration data /home/nixos/.ssh/config.d/morehosts
debug1: /home/nixos/.ssh/config.d/morehosts line 15: Applying options for smartphone
debug1: /home/nixos/.ssh/config line 4: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 5: Applying options for *
debug2: resolve_canonicalize: hostname nn.nn.nn.nn is address
debug1: multiplexing control connection
debug2: fd 5 setting O_NONBLOCK
debug3: fd 5 is O_NONBLOCK
debug1: channel 1: new mux-control [mux-control] (inactive timeout: 0)
debug3: channel_post_mux_listener: new mux channel 1 fd 5
debug3: mux_master_read_cb: channel 1: hello sent
debug2: set_control_persist_exit_time: cancel scheduled exit
debug3: mux_master_read_cb: channel 1 packet type 0x00000001 len 4
debug2: mux_master_process_hello: channel 1 client version 4
debug3: mux_master_read_cb: channel 1 packet type 0x10000004 len 4
debug2: mux_master_process_alive_check: channel 1: alive check
debug1: auto-mux: Trying existing master at '/home/nixos/.ssh/socket-nix-on-droid@nn.nn.nn.nn-8022'
debug2: fd 3 setting O_NONBLOCK
debug1: multiplexing control connection
debug2: fd 6 setting O_NONBLOCK
debug3: fd 6 is O_NONBLOCK
debug1: channel 2: new mux-control [mux-control] (inactive timeout: 0)
debug3: channel_post_mux_listener: new mux channel 2 fd 6
bash: line 1: nix-store: command not found
debug2: set_control_persist_exit_time: schedule exit in 600 seconds
debug3: mux_client_read_packet_timeout: read header failed: Broken pipe
debug2: Received exit status from master 127
error: cannot connect to 'nix-on-droid@smartphone'
🚀 ❌ [deploy] [ERROR] Failed to push profile to node sams9__x86_64-linux: sams9__x86_64-linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions