====== 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.