Creation : Juillet 5, 2019 5:55 PM MAJ : juillet 17, 2019 7:05 PM
NixOs : mes recettes perso
Pourquoi cette page?
Le but de ce document est de garder trace de mes configurations. Ce sont souvent des choses simples mais qui bien que décrites dans la documentation ne sont pas toujours trés claires pour le béotien.
Surtout au début
Mettre à jour le système.
En tant que root passer la commande.
nixos-rebuild
dont les arguments et options permettent de reconstruire l'environnement du système
l'option --help : permets de connaitre la syntaxe des options
nixos-rebuild dry-build
pour connaitre ce qui sera reconstruitnixos-rebuild build
reconstruit une configuration mais ne l'active pas
nixos-rebuild boot
Construit èt n'active pas la nouvelle configuration, l' installe au niveau grubnixos-rebuild switch
Construit et active la nouvelle configuration , l'installe au niveau de grubnixos-rebuild switch --upgrade
: Construit et active la nouvelle configuration , l'installe au niveau de grub apràs avoir été cherché la dernière pour le channel.
NOTA : Toutes les modifications de configuration expliquées ci-dessous ne seront prises en compte que suite au lancement de la commande:
nix-rebuild switch
| nixos-rebuild switch --upgrade
Exemple : Tester ce qui va être reconstruit
nixos-rebuild dry-build
avec le channel courant
nicos-rebuild dry-build --upgrade
permets de connaitre tout ce qui va être mis à jour.
si on lance la commande : nixos-rebuild switch --upgrade
Changer le channel
Cette commande est utile pour passer d'un channel stable à unstable et inversement, ou bien pour changer de version.
nix-channel --add https://nixos.org/channels/nixos-version nixos
Mettre à jour le channel
nix-channel --update
Cette commande est l'équivalent de apt update
sous debian.
Gestion des utilisateurs et groupes
Dans la distribution Nixos les utilisateurs du systeme sont déclarés dans le fichier /etc/nixos/configuration.nix
Nixos installe par défaut des utilisateurs et groupes pour le systeme.. vous devez ajouter vos utilisateurs dans le fichier de configuration. Il en est de même pour les groupes
Ajouter un groupe
users.groups.postgres.gid = 1100 ;
Ajouter un utilisateur
Cela se fait en ajoutant dans le fichier configuration.nix l'utilisateur. * Le code est le suivant :
users.users.postgres = { isNormalUser = true; home = "/home/postgres"; group = "postgres" ; description = "postgres test"; extraGroups = [ "wheel" "networkmanager" ]; };
Installer des logiciels
Avec NixOs l'installation d'un logiciel peut s'éxécuter à plusieurs niveaux
- système
- utilisateur
- profil utilisateur -- n'existe pas
- Environnement : nix-shell
Système
Pour cela on utilise la configuration systeme voir le chapitre 6 du manual
Ainsi l'ajout dans la configuration de 'installation du paquets geany entrainera que l'application sera vu par tous les utilisateurs dans le path suivant:
/run/current-system/sw/bin/geany
Aprés la mise à jour du systeme
Utilisateur.
Exemple : installation de youtube-dl
-
le package existe - il ?
nix-env -q youtube-dl
> youtube-dl-2019.06.08
-
installation
nix-env -iA nixos.youtube-dl
La commande youtube-dl sera alors dans le path suivant :/home/pboizot/.nix-profile/bin/youtube-dl
Profil utilisateur
Cette notion n'existe pas sous Nixos, toutefois il est possible de créer des liens symboliques qui pointent vers les binaires de /nixos/store.
nix-build '\<nixpkgs>' -A postgresql_11 -o ~/app/binary/pg11
nix-build '\<nixpkgs>' -A postgresql_10 -o ~/app/binary/pg10
On aura alors pg10 -> /nix/store/17s870z83pdxiydnxdg23hyk8141fdw8-postgresql-10.9 pg11 -> /nix/store/88yxsbssvzrv22wymwy7m7ghpxy2fgnj-postgresql-11.4
On pourra ainsi mettre en place un script permettant de travailler soit avec une version soit avec une autre.
Solution fournie par un membre du forum : Discourt
Cette maniere de procéder permets de créer des liens symboliques vers les paquets qui sont aussi des racines GC, c'est-à-dire que leurs dépendances ne seront pas supprimées par le garbage collector jusqu'à ce que les liens symboliques eux-mêmes soient supprimés
Environnement
Le chapitre 10 de nix-pills aborde l'utilisation de nix-shell pour construire un environnement de developpement avec les bons packages.
Une utilisation simple de nix-shell, installant un package temporairement. Il est possible de lancer un environnement avec la commande nix-shell.
exemple : nix-shell -p postgresql_11
these paths will be fetched (5.22 MiB download, 23.10 MiB unpacked): /nix/store/88yxsbssvzrv22wymwy7m7ghpxy2fgnj-postgresql-11.4 /nix/store/y7wjpszq6hpc14azjzzdk8v9z67qyjqb-postgresql-11.4-lib copying path '/nix/store/y7wjpszq6hpc14azjzzdk8v9z67qyjqb-postgresql-11.4-lib' from 'https://cache.nixos.org'... copying path '/nix/store/88yxsbssvzrv22wymwy7m7ghpxy2fgnj-postgresql-11.4' from 'https://cache.nixos.org'...
Installer une VM VirtualBox
installation initiale
Le processus est assez simple puisqu'il existe une Appliance VirtualBox VirtualBox appliance, 64-bit Intel/AMD
La doc tient en qq lignes.
This is a demo appliance for VirtualBox (in OVA format) that has X11 and Plasma 5 enabled, as well as the VirtualBox guest additions. To use it, download the OVA file, open VirtualBox, run “File → Import Appliance” from the menu, select the OVA file, and click “Import”. You can then start the virtual machine. When the KDE login screen appears, you can log in as user demo, password demo. To obtain a root shell, run sudo -i in the KDE terminal (konsole).
Remarques 1. La configuration clavier : anglaise 2. Editeur par défaut nano 3. Utilisateur en login auto
Pour changer tout ceux-ci on procedera à une mise à niveau du système puis à des modifications du fichier configuration.nix
Mise à niveau du systeme
nixox-rebuild switch --upgrade
Modification de configuration.nix
- Création d'un utilisateur (ajout)
users.users.pierre = { isNormalUser = true; home = "/home/pierre"; description = "pierre test"; extraGroups = [ "wheel" "networkmanager" ]; };
- Changement de la configuartion clavier
# Enable X11 services.xserver.enable = true ; services.xserver.layout = "ch"; services.xserver.xkbVariant = "fr"; services.xserver.xkbOptions = "eurosign:e" ;
- Modification de la timezone
time.timeZone = "Europe/Zurich";
- Ajout de vim
environment.systemPackages = with pkgs; [ wget vim ];
- Suppression du login automatique
Changer la ligne
{ config, pkgs, ... }: par { config, pkgs, lib, ... }:
Ajouter la suppression en ajoutant cette surcharge
'services.xserver.displayManager.sddm.autoLogin.enable = lib.mkForce false;' car il est impossible de modifier le fichier de demo.nix se trouvant dans le répertoire '/nix/var/nix/profiles/per-user/root/channels/nixos/nixos/modules/profiles'
-
Relance de la configuration
nixos-rebuild switch --upgrade
-
reboot
Où est la configuration ?
Dans le fichier configuration.nix il y a un import.
imports = [ nixpkgs/nixos/modules/installer/virtualbox-demo.nix ];
Qu'est-ce qui est importé ?
la commande :
nix-instantiate --find-file nixpkgs/nixos/modules/installer/virtualbox-demo.nix
nous donne l'emplacement des fichiers
'/nix/var/nix/profiles/per-user/root/channels/nixos/nixos/modules/installer/virtualbox-demo.nix'
En lisant les fichiers on peut explorer la configuration....
cat /nix/var/nix/profiles/per-user/root/channels/nixos/nixos/modules/installer/virtualbox-demo.nix
imports = [ ../virtualisation/virtualbox-image.nix ../installer/cd-dvd/channel.nix ../profiles/demo.nix ../profiles/clone-config.nix ];
Intéressons nous au fichier demo.nix
cat /nix/var/nix/profiles/per-user/root/channels/nixos/nixos/modules/profiles/demo.nix
{ ... }:
{ imports = [ ./graphical.nix ];
users.users.demo = { isNormalUser = true; description = "Demo user account"; extraGroups = [ "wheel" ]; password = "demo"; uid = 1000; };
services.xserver.displayManager.sddm.autoLogin = { enable = true; relogin = true; user = "demo"; }; }
D'où la surcharge :
services.xserver.displayManager.sddm.autoLogin.enable = lib.mkForce false;
Surcharger
Nous avons vu dans le paragraphe précédent une surcharge pour inactiver le login automatique.
Je vous propose de voir coment régler par une surcharge un probleme d'icone sur une application.
Le problème
Une application n'affiche pas d'icones car KDE n'intègre pas les icones :hicolor-icon-theme
La solution
Créer un fichier config.nix dans l'environnement de l'utilisateur : /home/\
{ packageOverrides = pkgs: { tootle = pkgs.tootle.override { hicolor-icon-theme = pkgs.gnome3.adwaita-icon-theme; }; }; }
Résultat
C'est mieux avec des icones
Créé: July 13, 2020