Je ne sais pas vous, mais moi, ce que j'aime bien, c'est découvrir des systèmes d'exploitation un peu originaux, moins accessibles, qui changent d'Ubuntu et de Debian qui m'ennuient un peu...
C'est comme ça qu'après Arch Linux, Solus et KaOS, je me suis laissé tenter par l'argumentaire de NixOS :
NixOS est une distribution unique dans la manière dont elle aborde tous les aspects, du noyau à la configuration en passant par les applications.
Elle est construite sur le gestionnaire de paquets Nix et tout, du noyau à la configuration, est basé sur lui. Tous les paquets sont isolés les uns des autres, ce qui garantit qu'ils sont reproductibles et qu'ils n'ont pas de dépendances non déclarées. Ainsi, si un paquet fonctionne sur une machine, il fonctionnera également sur une autre.
Nix garantit que l'installation ou la mise à jour d'un paquet ne peut pas endommager d'autres paquets. Il vous permet de revenir à des versions antérieures et garantit qu'aucun paquet ne se trouve dans un état incohérent lors d'une mise à niveau.
La fonction d'isolation vous permet également d'essayer de nouveaux outils sans hésitation, de créer des environnements de développement, etc.
Après quelques semaines de familiarisation, j'en viens à penser que NixOS ferait une excellente distribution grand public... si elle était juste un plus accessible et si sa learning curve (courbe d'apprentissage) était un peu moins pentue. (1)
Pas à ce point, rassurez-vous !
Histoire de vous mettre le pied à l'étrier si jamais vous aviez envie de l'essayer, je vous propose de découvrir NixOS par la pratique plutôt que d'en évoquer la théorie, certains concepts ne faisant pas vraiment sens pour moi...
#1 Première approche
L'ISO d'installation est déclinée en deux versions (Gnome et Plasma), mais l'excellent installateur Calamares offre le choix entre huit environnements de bureau : Gnome, Plasma (KDE), Xfce, Panthéon (ElementaryOS), Cinnamon (Mint), MATE, Enlightenment et LXQt.
J'ai choisi Cinnamon parce qu'il est configurable à souhait — et qu'il a le meilleur applet météo du monde...
Mais s'approprier un OS, ce n'est pas seulement personnaliser le bureau, c'est aussi installer les logiciels qu'on veut — ou désinstaller ceux qu'on ne veut pas.
Au crédit de NixOS, l'installation n'impose que le strict nécessaire — on peut d'ailleurs choisir de se passer d'interface graphique.
Comme pour n'importe quel OS, il faut donc avant tout apprendre à installer des logiciels et pour cela, à communiquer avec Nix, le gestionnaire de paquets autour duquel la distribution est bâtie.
Avant qu'on ne découvre (par hasard) l'existence d'un "Nix Software Center" ouvertement inspiré du "Logiciels" de Gnome, rechercher un paquet rappelle la façon de faire sur Arch Linux... tant qu'on n'a pas installé Pamac, le gestionnaire de paquets graphique de Manjaro...
On se rend donc à cette adresse — on la met dans la barre des favoris — et on tape sa requête.
Vous remarquerez au passage que le magasin est un des mieux fournis de la Linuxsphère et qu'il existe deux "canaux" : celui de la version courante (22.11) et celui de la version dite "unstable" qui deviendra la prochaine version courante (23.05), puisqu'il y a deux livraisons par an, en mai et en novembre. L'installation vous abonne par défaut à la version courante, mais il est facile de basculer plus tard sur le canal "unstable".
Comme pour d'autres OS, les distributions ont un petit nom. Désolé, @roger , ce n'est pas un prénom féminin , mais un nom d'animal, sans épithète fantaisiste comme chez Ubuntu :
- 22.11 : Raccoon (raton laveur)
- 23.05 : Stoat (hermine).
Première originalité sympathique, la fiche du logiciel vous propose de l'essayer sans vraiment l'installer ! NixOS étant très concerné par la sécurité et la stabilité, c'est une de ses nombreuses façons de vous éviter de mettre votre système en danger :
Autre originalité, la présence de deux modes d'installation :
- Le premier ("nix-env"), avec sa ligne de commande un peu sibylline à entrer dans le terminal, rappelle Pacman, le gestionnaire de paquets en ligne de commande d'Arch Linux. Sauf qu'ici, vous pouvez la copier-coller !
Notez qu'il n'y a pas besoin d'une élévation des droits (sudo) pour installer un paquet en choisissant cette méthode : NixOS, qui est conçu, entre autres, pour être multi-utilisateur, va jusqu'au bout de la logique puisque ce mode d'installation n'affectera que l'environnement de l'utilisateur... qui devra en contrepartie se charger de la mise à jour de "ses" logiciels. Pour faciliter la tâche, il existe aussi un "home manager", mais je ne l'ai pas encore essayé...
- La seconde méthode ("NixOS configuration"), est la plus exotique, mais c'est celle qui permet de bénéficier des avantages conceptuels de Nix et d'assurer la fiabilité et la reproductibilité de votre système.
Il faut ajouter le nom du logiciel à la rubrique "environment.systemPackages" du fichier de configuration de NixOS (/etc/nixos/configuration.nix) et mettre le système à jour. (2)
Mais cette fois, il faut des droits, puisque le logiciel apparaîtra dans les environnements de tous les utilisateurs.
Pour vous donner une idée plus précise, voici la rubrique "environment.systemPackages" de mon fichier de configuration. Elle s'étoffe peu à peu au fil des logiciels que j'ai "déclarativement" installés — en bon blaireau ordonné, je les ai classés par ordre alphabétique :
Code : Tout sélectionner
environment.systemPackages = with pkgs; [
appimage-run
cinnamon.warpinator
deadbeef-with-plugins
easytag
etcher
fsearch
geany
git
hdparm
ksnip
neofetch
onlyoffice-bin
pcloud
thunderbird
];
D'autres n'y figurent pas (le navigateur Brave, par exemple) parce que je n'avais pas encore compris les avantages de cette méthode... et que je les ai pas réinstallés depuis.
Vous vous en doutez, la méthode de désinstallation diffère en fonction du mode d'installation :
- Nix-env :... mais le paquet n'est pas supprimé, son accès est simplement désactivé : on ne sait jamais, on pourrait regretter...
Code : Tout sélectionner
nix-env --uninstall nom-du-paquet
- NixOS configuration : on supprime l'application de la liste et on met le système à jour.
Compliqué ? Fastidieux ? Que nenni : avec trois alias de deux lettres — c'est moi qui les ai faits ! —, je gère tout mon système, et avec l'aide-mémoire, c'est facile de se les rappeler ! (3)
L'alias "nc"(comme "Nix configuration") vous demande de vous identifier pour pouvoir éditer le fichier de configuration avec Nano — que vous pouvez remplacer par "Xed", mais le terminal sera encombré d'avertissements.
Collez ensuite le nom du paquet à l'endroit voulu — ou supprimez-le — et enregistrez.
La fermeture de l'éditeur déclenche la mise à jour du système, ferme la session et qui s'ouvrira sur cette nouvelle version lorsque vous vous reconnecterez.
De nombreuses lignes dépaysantes s'affichent dans le terminal, mais tout se passe très vite, la plupart des logiciels étant déjà pré-compilés.
Comme annoncé, cette mise à jour n'écrase pas la configuration précédente. De plus elle est sécurisée :
NixOS a une approche transactionnelle de la gestion de la configuration : les changements de configuration tels que les mises à niveau sont atomiques. Cela signifie que si la mise à niveau vers une nouvelle configuration est interrompue — par exemple, en cas de coupure de courant à mi-parcours — le système restera dans un état cohérent : il démarrera soit dans l'ancienne, soit dans la nouvelle configuration. Dans la plupart des autres systèmes, vous vous retrouverez dans un état incohérent, et votre machine pourrait même ne plus démarrer.
En cas de problème, le menu de démarrage affiche les versions successives du système — en langage Nixos on parle de "generations" — vous permettant de reprendre la main.
L'alias "rb" (pour "rebuild") fera de la version sur laquelle vous avez booté la version par défaut.
Là encore, ce rollback se fait en une grosse poignée de secondes... Rien à voir avec Timeshift !
On peut aussi le faire au terminal, mais passons...
C'est sûr, toutes ces "generations" prennent de la place, vu qu'il ne s'agit pas seulement du noyau mais de la totalité de la configuration. Il faut donc périodiquement faire le ménage.
L'alias "gc" (pour "garbage collection") supprimera toutes les anciennes versions — par précaution, on peut régler le nombre de mises à jour à conserver, celles qu'on a faites dans les deux derniers jours, par exemple, avec une autre commande :
Code : Tout sélectionner
nix-env --delete-generations 2d
Intéressant, non ?
Et encore, ce n'est que la pointe de la partie émergée de l'iceberg, mais ça suffit amplement pour utiliser Nixos au quotidien et profiter d'une distribution rapide et fiable — sauf à y mettre vraiment du sien.
Un petit comparatif, pour terminer ?
Si le sujet vous intéresse, la prochaine fois nous soulèverons le capot pour approfondir la compréhension du fonctionnement de NixOS.
N'hésitez pas à poser des questions, je m'efforcerai d'y répondre.
(1) La faute surtout à une documentation en anglais, mais surtout dispersée, aride et faite en dépit du bon sens et de la progressivité. C'est sûr, NixOS est un système d'exploitation extrêmement puissant, mais rien n'est fait pour le mettre à la portée de l'utilisateur lambda, ce qui est bien regrettable : qui peut le plus devrait pouvoir le moins...
Heureusement qu'il existe des sites d'amateurs qui ont essayé de compenser ce défaut rédhibitoire ! Celui-ci, par exemple que... je viens de découvrir !
(2) Il suffit de remplacer le fichier de configuration pour cloner une installation.
(3) Les alias sont à placer dans le fichier caché ".bashrc" à la racine de votre répertoire personnel. NixOS ne possédant pas nativement ce fichier, le plus simple, pour le créer, est d'entrer l'une ou l'autre de ces deux lignes dans le terminal en fonction de l'éditeur que vous préférez :
Code : Tout sélectionner
xed .bashrc
nano .bashrc
Code : Tout sélectionner
alias nc='sudo nano /etc/nixos/configuration.nix && sudo nixos-rebuild switch && sudo pkill -u $USER' # Edition du fichier de configuration
alias gc='sudo nix-collect-garbage -d && sudo nixos-rebuild switch' # Nettoyage du système
alias rb='sudo nixos-rebuild switch' # Mise à jour du système
neofetch
grep ^alias ~/.bashrc
Pas besoin de l'explorateur de fichiers !