Probando Guix
Capítulo 4: Agregando un canal público.
Una vez más ha vuelto esta serie, luego de un breve descanso que permite hacer lindos experimentos con Guix. Si bien en otras distros también existen repositorios personales (como los ppa's y AUR), en Guix la construcción de los mismos se ve facilitada por la extensibilidad de Guile-Scheme.
Se puede tener una máquina personal dedicada a compilar los programas que la usuaria estima convenientes y luego hacer las actualizaciones desde ahí ya pre-compiladas, porque al ser construcciones reproducibles, los estados generados en /gnu/store
serán siempre los mismos.
Además de esa facilidad, las usuarias de Guix pueden mantener recetas de configuración de paquetes (que idealmente sigan las posturas éticas del Software Libre) escritas en la implementación de Scheme llamada Guile; estas recetas se pueden mantener en un repositorio público (indicando desde dónde descargar el código fuente) para compartir nuevos paquetes definidos según las reglas que detalla el manual.
Una vez las usuarias tienen un canal escrito con las definiciones necesarias, se puede incluir en la ruta de descargas mediante el siguiente procedimiento, que se detalla en profundidad en esta sección del manual.
Se debe crear un archivo de configuración en la ruta ~/.config/guix/channels.scm
, si la usuaria desea usar otra fuente para descargar los paquetes principales de guix (diferentes de los oficiales de GNU), lo que debe incluir es lo siguiente:
;; Le dice a "guix pull" que use un repositorio local.
(list (channel
(name 'guix)
(url "<https://ejemplo.org/mi-guix.git>")
(branch "super-hacks")))
Así, cuando se invoque guix pull
para calcular las diferencias de las fuentes con el local, se hará la derivación desde https://ejemplo.org/mi-guix.git
.
Pero si lo que desea la usuaria es seguir usando las fuentes oficiales de GNU, entonces no es necesario que se agregue un canal llamado 'guix
; haré énfasis en esto: Para guix, las fuentes personales o de voluntarias mantenedoras se llaman canales.
Si la usuaria quiere configurar un canal que tiene sólo nuevos paquetes (sin reemplazar las fuentes de GNU), lo que debe hacer es editar ~/.config/guix/channels.scm
y agregar lo siguiente:
;; Añade mis paquetes personales a aquellos que Guix provee.
(cons (channel
(name 'mis-paquetes-personales)
(url "<https://ejemplo.org/paquetes-personales.git>"))
%default-channels)
Y luego de esto, ejecutar guix pull
lo que actualizará todos los canales desde los que se buscan definiciones de paquetes.
Aplicando el uso de canales: instalación de telega.el
Ahora veamos un ejemplo real en que esto puede ser útil, el mantenedor de este canal se ha dedicado a empaquetar tanto tdlib (la librería que se usa para generar clientes de Telegram) y telega.el lo que es de especial interés tanto para el autor de este blog, como para unos amigos integrantes del canal 4libertades Chile.
Los procedimientos para usar telega desde Emacs son los siguientes:
- Instalar
emacs
yemacs-guix
desde guix (lo que hace de este gestor de paquetes una dependencia fuerte). - Añadir el canal de https://git.sr.ht/~brettgilio/cfg.
- Instalar
emacs-telega
desde el nuevo canal. - Instalar
emacs-visual-fill-column
desde guix.
Para instalar guix en una máquina hospedera con una distribución diferente a Guix system, es recomendable revisar esta entrada del blog (sigo recalcando lo de leer el manual). Luego de eso, se procede a instalar la versión de Emacs y el paquete emacs-guix que está en los repositorios oficiales de GNU Guix (esto es porque esa versión de Emacs lee lo que está en la /gnu/store
además de los clásicos directorios de configuración para Emacs).
Esto se hace simplemente mediante:
guix package -i emacs emacs-guix
o
guix install emacs emacs-guix
Luego pasamos a editar los canales que formarán parte de nuestros repositorios en ~/.config/guix/channels.scm
, sin alterar el original de GNU, sería un archivo en blanco al que agregar lo siguiente:
;; Canal de Brett, para su config
(cons (channel
(name 'brett)
(url "<https://git.sr.ht/~brettgilio/cfg>"))
%default-channels)
Y para que se actualicen los canales nuevos, actualizamos las fuentes mediante:
guix pull
Lo que entrega el mensaje de que hay nuevos paquetes disponibles (los que están definidos en esa configuración).
Una vez listo esto, se puede instalar emacs-telega
y
emacs-visual-fill-column
invocando guix package de la siguiente forma:
guix install emacs-telega emacs-visual-fill-column
Con este conjunto de procedimientos listos, basta con que la usuaria haga correr la versión de Emacs instalada mediante guix (que será la única que reconozca estos paquetes recién instalados) y correr M-x guix-emacs-autoload-packages
, luego de eso invocar a Telega mediante M-x telega
.
Actualización
Desde hace unas semanas que tanto TDLib como emacs-telega están disponibles en la rama master de guix, por lo que añadir el canal de Brett no es necesario.
Sin embargo, esta entrada de blog quedará como ejemplo e instructivo para esta función tan versátil de guix.