====== Guix ======
* [[https://connect.ed-diamond.com/GNU-Linux-Magazine/glmfhs-113/deploiements-reproductibles-dans-le-temps-avec-gnu-guix]]
* [[https://lists.gnu.org/archive/html/guix-devel/2020-08/msg00168.html|Dealing with foreign distros without nscd]]
* [[https://www.futurile.net/2023/12/04/guile-repl-with-guix-package-repl-queries/|A side of Guile: The Guile REPL and investigating Guix packages]]
* [[https://fabionatali.com/posts/compartmentalisation-by-means-of-virtualisation/|Compartmentalisation by means of virtualisation]]
==== Faire des expériences reproductibles ====
- Figer les canaux :
guix describe -f channels > guix-channels.scm
- Lancer la machine à voyager dans le temps de Guix :
guix time-machine --channels=guix-channels.scm -- shell ma_commande
==== Indiquer un dépôt Git Guix alternatif ====
guix pull --url=https://codeberg.org/guix/guix-mirror.git
==== Indiquer l'emplacement des définitions des paquets ====
Utiliser le paramètre ''-L'' ou la variable environnement ''GUIX_PACKAGE_PATH''.
==== Indicateur d’environnement Guix dans le prompt de ZSH ====
On peut modifier le thème utilisé de cette façon :
function guix_env()
{
if [ -n "$GUIX_ENVIRONMENT" ]
then
echo '[guix]'
fi
}
# ...
PROMPT='...$(guix_env)'
==== Compiler Guix ====
* [[https://guix.gnu.org/manual/devel/fr/html_node/Construire-depuis-Git.html#Construire-depuis-Git]]
git clone https://git.savannah.gnu.org/git/guix.git
cd guix
guix shell git -D guix --pure
./bootstrap
./configure --localstatedir=/var
make
./pre-inst-env guix describe
Ne pas faire de ''guix pull'', sinon il récupère la version indiquée dans le ''$HOME'', qui est probablement antérieure à celle dans le dépôt Git.
=== Récupérer un patch ===
Vu sur IRC, apparemment on peut faire :
curl https://issues.guix.gnu.org/issue//patch-set -q -o - | git am
wget -qO- https://issues.guix.gnu.org/issue/$1/patch-set $2 | git am --patch-format mbox -3
==== Mettre à jour un paquet ====
* https://guix.gnu.org/manual/fr/html_node/Invoquer-guix-refresh.html
./pre-inst-env guix refresh $paquet
./pre-inst-env guix refresh $paquet -u
./pre-inst-env guix build $paquet
Si on est courageux, il est possible de connaître la liste des dépendances inverses du paquet mis à jour, pour essayer de les construire également :
./pre-inst-env guix refresh -l $paquet
=== Envoyer un patch ===
* [[https://www.tournier.info/posts/2021-10-12-add-guix-package.html]]
* [[https://guix.gnu.org/manual/devel/fr/html_node/Configurer-Git.html]]
Sur Debian, il faut installer le paquet ''git-email''.
git config --local include.path ../etc/git/gitconfig
git commit
git format-patch --base=origin/master -1
git send-email --to=guix-patches@gnu.org 0001-*.patch
Il faut auparavant avoir ajouté dans le ''.git/config'' la configuration SMTP pour envoyer le mail:
[sendemail]
smtpEncryption = tls
smtpServer = smtp.server.com
smtpUser = user
smtpServerPort = 587 # port à utiliser même si un autre est configuré dans Thunderbird
=== Reviewer des patchs ===
* [[https://libreplanet.org/wiki/Group:Guix/PatchReviewSessions2024]]
* [[https://www.youtube.com/watch?v=8m8igXrKaqU#__do_not_save__| Guix patch reviews using Mumi by Jgart]]
=== Manipuler des rapports de bugs ===
* https://guix.gnu.org/manual/devel/en/html_node/Debbugs-User-Interfaces.html (paquet ''mumi'')
==== Forcer la reconstruction d'un paquet ====
guix build --check --no-grafts hello
==== Débugguer le packaging ====
On peut remplacer partout une expression par
(pk 'unlabel (expression))
Il est aussi possible de demander une évaluation des paquets, sans vraiment construire :
guix build -L . $paquet -n
On peut obtenir la dérivation avec
guix build -L . $paquet -n -d
et parcourir les fichiers ''builder'' qu'elle référence pour savoir quelles sont les commandes de compilation utilisées.
Pour afficher les fichiers de dérivations correctement formattés, on peut utiliser [[https://gitlab.com/zimoun/guix-drv]] ou
guix shell emacs guile emacs-geiser emacs-geiser-guile emacs-guix -- emacs /gnu/store/.....drv
On peut ensuite faire Entrée quand le curseur est sur un chemin de fichier pour ouvrir ce fichier.