Nixos, deux ans après

Posté le 20 December 2017

Ce post reprend en partie mon journal sur linuxfr

3615 MyLife

J’ai commencé Debian à l’époque de la Potato, année 2000. À l’époque dans mes 9 m² de Fleming (Orsay), je luttais sur mon DX4-100. Un mec sur l’RC est arrivé dans mon cagibi, a mis une disquette et l’installation se fit. (j’appris plus tard ce qu’est le PXE)

Et voilà, j’étais converti à Linux!

J’ai essayé bon nombre d’autres distributions connues Mandriva, Red Hat, CentOS, Ubuntu, SUSE, Arch Linux et des moins connues : Sourcemage. À chaque fois, je suis revenu sur Debian. Nous avons la chance sous GNU/Linux de ne pas avoir un modèle imposé. Une distribution, un gestionnaire de fenêtres, le courant doit passer rapidement. Si l’on se sent à l’aise, alors “use it!” , comme dit l’arbitre au rugby.

Cet amour dura 16 ans.

Découverte

Début 2016, en discutant avec Joris, j’ai découvert NixOS. Ma curiosité me poussa à regarder et surtout à essayer. Le principe est vraiment bizarre au premier abord :

  • une configuration du système dans un fichier ou deux…
  • un /etc en lecture seule, mais je déclare comment mon /etc/hosts ?

C’est quoi ce délire ?! Ah, non, c’est pas un délire, c’est vraiment un GNU/Linux avec une configuration dans un fichier ! Tout y est : montage de systèmes de fichiers, hôtes, utilisateurs, logiciels, configuration sshd, services…

Exemple :

  services = {
    
    openssh = {
      enable = true;
      passwordAuthentication=false;
      permitRootLogin="no";
    } ;

    xserver = {
      enable = true;
      autorun = true;
      windowManager.i3.enable = true;
      layout = "fr";
      xkbOptions = "eurosign:e";
      synaptics.enable = true;
      videoDrivers = [ "intel" ];
      displayManager.sessionCommands = "${pkgs.networkmanagerapplet}/bin/nm-applet &";
    };
  };

Et puis, en l’utilisant, je m’y sens bien :

  • la possibilité de sauvegarder la configuration système sur un fichier, direct dans mon gitlab framasoft
  • faire des retours sur snapshot quand on a tout foiré

    nixos-rebuild switch --rollback
  • plus besoin de se dire : " Où est ce satané fichier de conf ?“,”Merde, qu’est‐ce que j’ai modifié ? "

Si au début, c’est déroutant, la centralisation de la configuration devient vite un atout.

L’utilisateur

Un des aspects ultra interessant est la possibilité d’installer pour un utilisateur ses propres packages

nix-env -iA nixos.python3Full

Mais en fait .. Y a pas besoin d’installer python3Full => il existe le nix-shell. Ce dernier vous permet d’utiliser plusieurs versions d’un même logiciel sans forcément tout installer

katyucha@pc1$ nix-shell -p gcc5

[nix-shell:~]$ cc --version
gcc (GCC) 5.4.0

katyucha@pc1$ nix-shell -p gcc6

[nix-shell:~]$ cc --version
gcc (GCC) 6.4.0

D’ailleurs, quand j’ai développé ce projet, je n’ai eu aucun mal à utiliser un module python sans l’installer :

nix-shell --pure -p python36Packages.requests  --run "python main.py"

Créer son fichier nix

Bon, là fut une sale expérience : Il manquait le service pour vault. J’ai fait le fichier nix et j’ai créé ma MergeRequest, qui n’était surement pas la meilleure de l’année. Mais me faire forker, puis modifier par une personne, sans me donner aucune explication : c’est bof ! Et surtout, ils ne vont pas avoir de nouveaux contributeurs si personne t’explique et te guide au début. Je n’ai pas cherché plus loin et je n’ai pas eu d’autres besoins pour le moment.

Les conteneurs Nix

Les conteneurs Nix sont vraiment sympas. Entité réseau complete avec Ips, shell, packages installés dessus mais sans l’installation de l’OS. C’est entre la VM et le conteneur Docker. Je m’en sers pour éviter de travailler uniquement en localhost. Comme le reste de la configuration NixOs, ils sont complément déclaratifs. Je peux préparer un nix-container sur mon portable et le transposer sur mon serveur, juste en recopiant la définition. Je ferai un petit cours une autre fois mais la documentation officielle suffit.

Un point noir : L’espace disque

Aujourd’hui au taff, on déploie des disques systèmes de 15 Go avec Debian. Sur que ça ne tiendra pas avec Nix. Même si mon ordinateur me sert à faire plein de tests, je suis quand même à 35 Go sur le /

Nixos, pour une vie?

Le changement est brutal, le concept à appréhender, mais la finalité est belle. Pour le moment, je ne suis pas dans l’esprit de retourner sur Debian. Ma NixOS me plait. Mon serveur maison “petitlou” a basculé aussi sous Nixos. Je garde juste une Debian sur un mini ATX pour reproduire comme au taff.

Essayez.. et si vous aimez pas, revenez sur votre ancienne distrib.