Creation : June 5, 2019 6:06 PM MAJ : June 8, 2019 12:44 PM
Guix : Mes recettes perso
Pourquoi cette page?
L'idée de ce document est de garder trace de mes configurations. ce sont souvent des choses simples mais qui bienque décrite dans la documentation ne sont pas toujours trés claires. Surtout si on ne connait pas guile.
Mettre à jour le systeme.
Entant que root passer ces deux commandes.
guix pull guix system reconfigure /etc/config.scm
NOTA : Pour toutes les modifications de configuration expliquées cidessous, elles ne seront prises en compte que suite au lancement de la commande:guix system reconfigure /etc/config.scm
Fixer IP d'une interface.
Par défaut les interfaces sont configurées en DHCP au travers du services réseau voir doc 8.8.4 Services réseau. Dans ce chapitre de documentation il est indiqué comment configurer une interface réseau de façon statique. en donnant un exemple:
(static-networking-service "eno1" "192.168.1.82" )
c'est insuffisant, la reconfiguration renvoie le message d'erreur suivant :guix system: error: service 'networking' provided more than once
Une discusion sur IRC m'a permis de comprendre et corriger. Explication par roptat :
11:26:04 AM - roptat: le problème que tu avais avec « service 'networking' provided more than once », c'est que %desktop-services contient un service network-manager-service-type, qui fournit un service networking 11:26:29 AM - roptat: or tu ajoutes un static-networking-service, qui fournit aussi un service networking, mais ces deux services sont mutuellement exclusifs 11:26:56 AM - roptat: si tu changeais l'ordre, ça n'aurait rien fait : tu te serait quand même retrouvé avec deux services networking 11:27:28 AM - roptat: donc on utilise remove pour supprimer précisément le service networking dans %desktop-services, dont tu ne veux pas, pour qu'il n'y ait qu'un seul service networking
Configuration initiale avec l'ajout pour fixer IP :
(services (append (list (service gnome-desktop-service-type) (service openssh-service-type) (set-xorg-configuration (xorg-configuration (keyboard-layout keyboard-layout)) ) (static-networking-service "enp0s8" "192.168.56.200") %desktop-services) ))
Configuration finale :
(services (append (list (service gnome-desktop-service-type) (service openssh-service-type) (set-xorg-configuration (xorg-configuration (keyboard-layout keyboard-layout)) ) (static-networking-service "enp0s8" "192.168.56.200") ) (remove (lambda (service) (eq? (service-kind service) network-manager-service-type)) %desktop-services) ) )
NOTA Il est nécessaire d'ajouter (srfi srfi-1) sur la déclaration (use-modules gnu ) NOTA cela désactive le dhcp sur les autres interfaces
Remarques : Apprendre et comprendre guile est nécessaire
Gestion des utilisateurs et groupes
Dans la distribution Guix les utilisateurs du systeme sont déclaré dans le fichier config.scm Voir le paragraphe 8.5 Comptes utilisateurs
guix installe par défaut des utilisateurs et groupes
Ajouter un utilisateur
Cela se fait en ajoutant dans le fichier config.scm l'utilisateur. * Le code est le suivant :
Ajouter un groupe
Il faut ajouter dans le fichier de configuration une entrée groupe (groups (cons (user-group (name "postgres")) %base-groups) )
Supprimer un utilisateur existant
la suppression d'un utilisateur se fait en suprimant du fichier config.scm sa définition et en relançant la commande
guix system reconfigure /etc/config.scm
il faut ensuite supprimer le répertoire home et le profil utilisateur
Installer des logiciels
Avec guix SD comme dans Nixos l'instalation d'un logiciel peut s'éxécuter à plusieurs niveaux
- system Pour cela on utilise la configuration systeme voir les chapitre 8.1 Utiliser le système de configuration
ainsi l'ajout dans la configuration de 'installation du paquets youtube-dl entrainera que l'application sera vu par tous les utilisateurs dans le path suivant:
/run/current-system/profile/bin/youtube-dl
-
utilisateur. Exemple : installation de youtube-dl
-
le package existe - il ?
guix search youtube-dl
name: youtube-dl version: 2019.05.20 outputs: out systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux dependencies: location: gnu/packages/video.scm:1447:2 homepage: https://yt-dl.org license: Public Domain synopsis: Download videos from YouTube.com and other sites
description: Youtube-dl is a small command-line program to download videos from YouTube.com and many more sites. relevance: 22 -
installation
guix package
youtube-dl le path sera alors le suivant :/home/pbo/.guix-profile/bin/youtube-dl
-
profil utilisateur Dans le cas de postgresql nous avons besoin de plusieurs versions installées pour faire un upgrade majeur ave l'outil pg_upgrade.
Pour résoudre ce cas on installera chaque version dans un profil.
on crée un réprtoire pour mettre ces profils.
mkdir ~/app/postgres/
Nous installerons la version : 10.8 dans le profil /home/postgres/app/postgres/version/10
commande :
postgres@guix-pib ~$ guix install postgresql@10.8 -p ~/app/postgresql/version/10 The following package will be installed: postgresql 10.8 /gnu/store/5g707w1j565yyc250ifjx1mmqa55n0xr-postgresql-10.8
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% The following derivation will be built: /gnu/store/pbcx1idg37lsm5b2gs19az62rvaphjg1-profile.drv 0.1 MB will be downloaded: /gnu/store/s5k6sc82ylbgxajdjvk7ns7i17dvx62r-guile-gdbm-ffi-20120209.fa1d5b6 /gnu/store/rjymg2pnp7gdp59xqnkkbpd6ijhlx4zd-module-import-compiled The following profile hooks will be built: /gnu/store/06dna0fcyfkpnm9pnbcj9lyhgwmrlhd0-fonts-dir.drv /gnu/store/2wajp6ndh0qsckipf3k9jy63cwk66bvp-manual-database.drv /gnu/store/qzbpb2ci16mgj6nyyys9ys5j754s89v5-ca-certificate-bundle.drv building CA certificate bundle... downloading from https://ci.guix.gnu.org/nar/gzip/s5k6sc82ylbgxajdjvk7ns7i17dvx62r-guile-gdbm-ffi-20120209.fa1d5b6... guile-gdbm-ffi-20120209.fa1d5b6 48KiB 5.4MiB/s 00:00 [##################] 100.0%
downloading from https://ci.guix.gnu.org/nar/gzip/rjymg2pnp7gdp59xqnkkbpd6ijhlx4zd-module-import-compiled... module-import-compiled 92KiB 6.6MiB/s 00:00 [##################] 100.0%
building fonts directory... building database for manual pages... building /gnu/store/pbcx1idg37lsm5b2gs19az62rvaphjg1-profile.drv... 1 package in profile hint: Consider setting the necessary environment variables by running:
GUIX_PROFILE="/home/postgres/app/postgresql/version/10"
. "$GUIX_PROFILE/etc/profile"
Alternately, see `guix package --search-paths -p "/home/postgres/app/postgresql/version/10"'.
11.4 dans le profil /home/postgres/app/postgres/version/11
commande :
postgres@guix-pib ~$ guix install postgresql@11.4 -p ~/app/postgresql/version/11 substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% The following package will be installed: postgresql 11.4 /gnu/store/pl36b75qgqgmw215hwb4gw9v4rfm9y9c-postgresql-11.4
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% The following derivation will be built: /gnu/store/zj9459d5688457vqxdhf500c7la454wa-profile.drv 23.9 MB will be downloaded: /gnu/store/yl1vi61qmvvh83amwiwaik7s7jc03n5z-openssl-1.0.2p /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28 /gnu/store/a3p8zc23w5asxck5h4mswz4s8yl9s6pa-glibc-2.28-static /gnu/store/5fs0kysaspczmzic26yvkmp7hh21m8r7-postgresql-11.4 The following graft will be made: /gnu/store/zsinfcr0q84912w2qzpndcbi173jfzdj-postgresql-11.4.drv The following profile hooks will be built: /gnu/store/32i57j6jbxhrzf3jr31yx4mxqjsajpvr-ca-certificate-bundle.drv /gnu/store/9yndk5j5zmfx5lb2ic0li1pqjvk5y549-manual-database.drv /gnu/store/mklnw72ay77qkz7skm3wz70lqsxbwzi8-info-dir.drv /gnu/store/qw7ksdy6h3qylwq92v79ca569zkvxzyh-fonts-dir.drv downloading from https://ci.guix.gnu.org/nar/gzip/yl1vi61qmvvh83amwiwaik7s7jc03n5z-openssl-1.0.2p... openssl-1.0.2p 2.2MiB 22.7MiB/s 00:00 [##################] 100.0%
downloading from https://ci.guix.gnu.org/nar/lzip/5fs0kysaspczmzic26yvkmp7hh21m8r7-postgresql-11.4... postgresql-11.4 5.1MiB 2.0MiB/s 00:03 [##################] 100.0%
applying 1 graft for /gnu/store/zsinfcr0q84912w2qzpndcbi173jfzdj-postgresql-11.4.drv... building CA certificate bundle... building fonts directory... building directory of Info manuals... building database for manual pages... building /gnu/store/zj9459d5688457vqxdhf500c7la454wa-profile.drv... 1 package in profile hint: Consider setting the necessary environment variables by running:
GUIX_PROFILE="/home/postgres/app/postgresql/version/11"
. "$GUIX_PROFILE/etc/profile"
Alternately, see `guix package --search-paths -p "/home/postgres/app/postgresql/version/11"'.
Créé: July 13, 2020