Aller au contenu

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

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 packageyoutube-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"'.