Subject: [bug#58381] [PATCH 1/3] gnu: Add go-github-com-go-piv-piv-go.

From: Nicolas Graves <[email-masked]>
Date: Tue, 11 Oct 2022 14:18:30 +0200

On 2022-10-11 11:48, Christopher Baines wrote:

> What relation does pcsc-lite have to this package, and why does it need
> to be propagated?
>
> If this can be avoid, that would be good. Otherwise it would be good to
> mention why the propagation is needed in a comment.

For piv-go, in their README:

To build on Linux, piv-go requires PCSC lite. To install on Debian-based distros, run:
sudo apt-get install libpcsclite-dev

==> So probably no need to propagate here.

----

For yubikey-agent:

The package relies on pcscd (daemon) to run on linux, which is already
available in guix. Maybe it's better to say that in the README ? Instead
of the package, what it needs is actually the service.

I've also written some tested lines for a yubikey-agent
configuration/feature (as done in the RDE project) shepherd service,
although as it is really tiny, I didn't know if I should've contributed
this.

It looks like that, and did work (it also depends on the acceptance of
the patch https://issues.guix.gnu.org/52900 in this case):

(define* (feature-yubikey-agent
          #:key
          (yubikey-agent yubikey-agent))
  "Configure Yubikey-Agent."
  (ensure-pred file-like? yubikey-agent)

  (define (get-system-services _)
    (list
     (service pcscd-service-type)
     (udev-rules-service
      'yubikey
      (file->udev-rule
       "70-u2f.rules"
       (file-append libfido2 "/udev/rules.d/70-u2f.rules")))))

  ;; (define (get-home-services config)
  ;;   (list
  ;;    ;; MAYBE: It should be installed system-wide?
  ;;    (simple-service
  ;;     'yubikey-agent-add-yubikey-agent-package
  ;;     home-profile-service-type
  ;;     (list yubikey-agent))
  ;;    (simple-service
  ;;    'start-yubikey-agent-at-startup
  ;;    home-shepherd-service-type
  ;;    (list (shepherd-service
  ;;           (documentation "Run the yubikey-agent.")
  ;;           (provision '(yubikey-agent))
  ;;           (requirement '())
  ;;           (start #~(make-forkexec-constructor
  ;;                     (list (string-append
  ;;                            #$yubikey-agent "/bin/yubikey-agent")
  ;;                            "-l" "/tmp/yubikey-agent.sock")))
  ;;           (stop #~(make-kill-destructor)))))))

  (feature
   (name 'yubikey-agent)
   (values `((yubikey-agent . ,yubikey-agent)))
   (system-services-getter get-system-services)
   ;; (home-services-getter get-home-services)
   ))

I'm not sure what would be the guideline here regarding doing or
avoiding propagations. WDYT? (I'm sending a V2 once I have a clearer
idea of what makes sense).

---

>From the package README:

On Arch, use [the `yubikey-agent` package](https://aur.archlinux.org/packages/yubikey-agent/) from the AUR.

```
git clone https://aur.archlinux.org/yubikey-agent.git
cd yubikey-agent && makepkg -si

systemctl daemon-reload --user
sudo systemctl enable --now pcscd.socket
systemctl --user enable --now yubikey-agent

export SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/yubikey-agent/yubikey-agent.sock"
```
-- 
Best regards,
Nicolas Graves