Cómo empaquetar un binario en GNU Guix: el caso de Caddy

Fuentes: Packaging a Caddy binary in GNU Guix: a practical walkthrough

El gestor de paquetes funcional GNU Guix permite definir paquetes reproducibles a partir de código fuente o, como alternativa más sencilla, de un binario ya compilado. Este artículo recorre, paso a paso, la creación de un paquete para Caddy, el servidor web con TLS automático, dentro de Guix 1.5.0.

Un paquete en Guix se declara mediante un registro que reúne metadatos (nombre, versión, sinopsis, descripción, licencia y página web), el origen del recurso y las instrucciones de construcción. En el ejemplo, el paquete Caddy 2.11.4 se obtiene del tarball oficial de GitHub mediante el método url-fetch y un hash sha256 en base32 (1fbvxj6mifdqhwm5s1f8snr805k0anllzlri7cg9l61rgj8vyzsj) que garantiza la integridad del contenido. El hash inicial se calcula con el comando guix download, que además almacena una copia en el store.

Como el binario ya viene compilado, no se necesita ninguna dependencia de construcción: basta con el build-system copy-build-system y un install-plan que copie el ejecutable a bin/. El resultado se instala en /gnu/store y queda disponible al añadirlo como paquete de usuario, de sistema o dentro de un servicio.

Este enfoque es útil cuando el software aún no está empaquetado en Guix —como ocurre con Caddy, mientras un grupo de voluntarios prepara la versión desde fuente con sus dependencias en Go— y sirve como primera toma de contacto con el sistema de empaquetado funcional de Guix.