Subject: Re: [bug#37083] [PATCH 0/1] (Help needed!) machine: Implement 'digital-ocean-environment-type'.

From: [email-masked] (Jakob L. Kreuze)
Date: Sat, 21 Sep 2019 16:56:36 -0400

Hey Ludovic,

Ludovic Courtès <[email-masked]> writes:

> Presumably there’s more than one service of type
> ‘shepherd-root-service-type’ in the ‘services’ field? Let me know if I
> can help.

Sorry about how long this has been taking, I've been plucking away at it
on the weekends, but I've reached the point where I have to admit that
I'm stuck and I really need help if I'm ever going to finish this.

I have this procedure to create a static networking service for the
Digital Ocean droplet based on an API response:

(define (add-static-networking target network)
  "Return an <operating-system> based on TARGET with a static networking
configuration for the public IPv4 network described by the alist NETWORK."
  (operating-system
    (inherit (machine-operating-system target))
    (services (cons (static-networking-service "eth0"
                        (assoc-ref network "ip_address")
                        #:netmask (assoc-ref network "netmask")
                        #:gateway (assoc-ref network "gateway")
                        #:name-servers '("84.200.69.80" "84.200.70.40"))
                    (operating-system-services
                     (machine-operating-system target))))))

And when this operating system is deployed with the basic SSH
environment-type, I get the following backtrace:

Backtrace:
           6 (apply-smob/1 #<catch-closure 23ab600>)
In ice-9/boot-9.scm:
    705:2  5 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
    619:8  4 (_ #(#(#<directory (guile-user) 24a1140>)))
In guix/ui.scm:
  1692:12  3 (run-guix-command _ . _)
In guix/store.scm:
   623:10  2 (call-with-store _)
In srfi/srfi-1.scm:
    640:9  1 (for-each #<procedure 4fbf800 at guix/scripts/deploy.s…> …)
In guix/scripts/deploy.scm:
    96:20  0 (_ _)

guix/scripts/deploy.scm:96:20: Throw to key `srfi-34' with args `(#<condition %compound [service: #<<service> type: #<service-type openssh 4246960> value: #<<openssh-configuration> openssh: #<package [email-masked] gnu/packages/ssh.scm:165 3315210> pid-file: "/var/run/sshd.pid" port-number: 22 permit-root-login: #t allow-empty-passwords?: #f password-authentication?: #t public-key-authentication?: #t x11-forwarding?: #f allow-agent-forwarding?: #t allow-tcp-forwarding?: #t gateway-ports?: #f challenge-response-authentication?: #f use-pam?: #t print-last-log?: #t subsystems: (("sftp" "internal-sftp")) accepted-environment: () log-level: info extra-content: "" authorized-keys: () %auto-start?: #t>> target-type: #<service-type shepherd-root 2c4ac30> message: "more than one target service of type 'shepherd-root'"] 5579510>)'.

I have no idea where to begin with this. Why would the OpenSSH service
be giving me this "more than one target service of type 'shepherd-root'"
error?

Regards,
Jakob