· Cambiar idioma (Actualmente: Español)

Sí se puede: canales privados en GNU Guix

Octubre 09, 2020 17:05 -0500

Por varias razones necesito distribuir, de manera privada, software y otros artefactos digitales a sistemas GNU Guix usando repositorios de git con autenticación vía SSH. Esto no está documentado, pero sí se puede hacer.

Un paquete correspondiente a algún tipo de software disponible en un repositorio privado de git se define normalmente, solo que para el campo source se asigna un registro del tipo git-checkout en vez de un registro del tipo origin (ver Código 1).

(source
 (git-checkout
  (url "git@gitlab.com:luis-felipe/guile-lab.git")
  (commit (string-append "v" version))))
      
Código 1. Ejemplo de valor del campo source para un paquete correspondiente a una biblioteca de software privada llamada guile-lab.

Desafortunadamente, el tipo de dato git-checkout no está documentado, pero está definido en el módulo (guix git) de Guix.

Respecto al canal privado, también se define como cualquier otro canal, solo que los usuarios lo agregarían a su lista de canales usando el URL para conexión con SSH (ver Código 2).

(cons (channel
       (name 'luflac-x)
       (url "git@gitlab.com:luis-felipe/guix-channel-x.git"))
      %default-channels)
      
Código 2. Lista de canales de un usuario que agrega un canal privado llamado luflac-x.

Eso es todo. Lástima la falta de documentación, porque hace meses que estuve buscando hacer esto mismo, pero, por la información disponible, concluí que no se podía, pero sí.

Temas relacionados: