Eu encontrei uma solução alternativa para isso, de aqui . O script para disponibilizar os comandos do Nix é originado em ~/.profile . Eu acho que o motivo eles não estão disponíveis com nix-copy-closure que ssh não fonte ~/.profile quando os comandos são executados de forma não interativa. Adicionando
command=". ~/.profile; if [ -n \"$SSH_ORIGINAL_COMMAND\" ]; then eval \"$SSH_ORIGINAL_COMMAND\"; else exec \"$SHELL\"; fi"
antes que minha chave pública ssh (e na mesma linha) em ~/.ssh/authorized_keys no servidor resolva o problema para mim.
Eu ainda gostaria de saber por que nix-copy-closure não está lidando com isso automaticamente.