Subject: “guix copy” to host with daemon listening on TCP fails

From: Ricardo Wurmus <[email-masked]>
Date: Wed, 05 May 2021 18:04:16 +0200

There are two hosts running Guix.  The target host runs 
“guix-daemon” with “--listen=0.0.0.0:9999”; it does not listen on 
a local socket file.  Trying to copy store items to the target 
host fails with this backtrace:

--8<---------------cut here---------------start------------->8---
[me@here:~] (1028) $ guix copy --to=there /gnu/store/…-profile
Backtrace:
          12 (primitive-load 
          "/gnu/store/9qjkzhlwj2792iczsyfx9n7c23g…")
In guix/ui.scm:
  2165:12 11 (run-guix-command _ . _)
In ice-9/boot-9.scm:
  1736:10 10 (with-exception-handler _ _ #:unwind? _ # _)
  1731:15  9 (with-exception-handler #<procedure 7fa3ef9d0150 at 
  ic…> …)
  1736:10  8 (with-exception-handler _ _ #:unwind? _ # _)
In guix/store.scm:
   636:37  7 (thunk)
   1305:8  6 (call-with-build-handler _ _)
   1305:8  5 (call-with-build-handler #<procedure 7fa3ef9db5d0 at 
   g…> …)
In guix/status.scm:
    799:4  4 (call-with-status-report _ _)
In guix/scripts/copy.scm:
    76:25  3 (_)
In guix/ssh.scm:
   485:39  2 (send-files #<store-connection 256.99 7fa3ef9d6f00> _ 
   #f …)
In ice-9/boot-9.scm:
  1669:16  1 (raise-exception _ #:continuable? _)
  1669:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1669:16: In procedure raise-exception:
In procedure struct-vtable: Wrong type argument in position 1 
(expecting struct): #f
--8<---------------cut here---------------end--------------->8---

The (guix ssh) appears to assume that the remote daemon listens on 
a socket file.  Telling the daemon to also listen on a socket file 
works around this problem<.

-- 
Ricardo