NixOS, la distribution "reproductible, déclarative et fiable".

N'hésitez pas à présenter la distribution que vous aimez... ou que vous préférez à Zorin.
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 1


Message par jlb »

nixos-logo.png

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 !

nixos #1.jpg

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...

nixos #2.png



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.

nixos #3.png


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 :

nixos #4.png

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 !

    nixos #5.png

    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.

    nixos #6.png

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 :

    Code : Tout sélectionner

    nix-env --uninstall nom-du-paquet
    
    ... mais le paquet n'est pas supprimé, son accès est simplement désactivé : on ne sait jamais, on pourrait regretter...

  • 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)

nixos #7.png




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
... d'ajouter votre contenu :
 

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
... et d'enregistrer.

Pas besoin de l'explorateur de fichiers ! 🙃





 
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par jlb le jeu. 20 avr. 2023 16:54, modifié 4 fois.
1 J'aime ce message
Avatar du membre
simon511000
Modérateur global
Modérateur global
Messages : 89
Enregistré(e) le : ven. 6 avr. 2018 08:10
Localisation : Reims, France
Nb de « J’aime » donnés: 35
Nb de « J’aime » reçus: 25
A été remercié(e) : 16 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 2


Message par simon511000 »

Merci beaucoup @jib pour cet excellent article, ça me tenterait bien de tester NixOS un jour!

D'ailleurs, je tiens à préciser que le gestionnaire de packet Nix est disponible sur toutes les distributions, c'est très pratique pour installer des logiciels souvent absents des autres gestionnaires de packet comme Discord ou Google Chrome par exemple 😁
0 J'aime ce message
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 3


Message par jlb »

simon511000 a écrit : ven. 31 mars 2023 21:31 D'ailleurs, je tiens à préciser que le gestionnaire de packet Nix est disponible sur toutes les distributions
Tout à fait, @simon511000👏

Je ne l'ai pas mentionné pour ne pas surcharger les explications ou ajouter une note supplémentaire, mais on voit sur la copie d'écran du mode d'installation "nix-env" qu'il est aussi question de systèmes "Non NixOS".

J'ai d'ailleurs essayé Nix sur Ubuntu Budgie — on peut aussi l'installer sur MacOS et... sur Windows, si on a (encore ?) le WSL (Windows Subsystem for Linux).
Mais je l'ai désinstallé assez rapidement car si Nix s'intègre et fonctionne sans problème sur un autre OS, il ajoute de fait son système à un autre système, ce qui prend de la place...

Le prochain article expliquera pourquoi NixOS est bien bâti autour de Nix.


 
2 J'aime ce message
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 4


Message par jlb »

#2 On soulève le capot

J'espère que mon approche pratique n'a pas pas occulté les principaux avantages de NixOS pour un utilisateur "ordinaire" — enfin, pour quelqu'un qui n'est pas un développeur :
  • Son aspect véritablement multi-utilisateur pour le partage d'un ordi.
  • Sa facilité à cloner le système dans le cadre d'un réseau familial ou d'une petite entreprise, par exemple.
  • La tranquillité qu'apporte la certitude de pouvoir revenir rapidement et à coup sûr à une version antérieure — faut-il rappeler ces "points de restauration" de Windows sur lesquels on comptait et qui n'ont pas fonctionné ou les dégâts faits par une restauration sous Timeshift, sans parler du temps passé ?
  • La sécurité que procure la gestion transactionnelle et les mises à jour "atomiques". Non, non, votre distribution ne vous explosera pas entre les doigts, c'est tout le contraire, rien — ou presque — ne pourra la casser.
    Ce nouveau concept informatique renoue avec le sens étymologique du mot "atome" par lequel les philosophes anciens désignaient le plus petit élément de matière considéré comme indivisible (du grec ἄτομος, "qu'on ne peut pas couper, indivisible") — depuis, sa fission est au cœur des préoccupations de notre époque...
Comme l'a signalé @simon511000 dans son article sur Fedora Silverblue, on rencontre de plus en plus souvent cette dernière caractéristique sur les distributions récentes en cours de développement — j'en profite pour préciser que NixOS est issu d'un projet universitaire démarré en 2003 et qui a su évoluer peu à peu.

Mais trêve de considérations oiseuses ! Comme dirait Michel Chevalet : "NixOS, comment ça marche ?"



Quand on lance l'explorateur de fichiers pour la première fois, on découvre un répertoire personnel des plus classiques :

nix #1.png


Le "système de fichiers" ne dépayse pas non plus. A regarder rapidement, on retrouve la même structure hiérarchique et les mêmes répertoires que sur les autre distributions Linux... à quelques répertoires en moins, "lib" en particulier :

nix #2.png



Si on ouvre certains de ces répertoires, on constate que "etc" contient bien les fichiers de configuration des applications :

nix #3.png


En revanche "bin" et "usr", qui sont les plus garnis sur une distribution "ordinaire", sont... vides, à l'exception d'un unique lien :

nix #4.png



Mais votre œil de lynx n'aura pas manqué de repérer le répertoire "nix", qu'on ne trouve nulle part ailleurs.
Comme son nom l'indique, c'est là que le gestionnaire Nix, stocke les paquets — plus précisément dans le sous-répertoire "store" le bien nommé :

nix #5.png


Entrons dans le "magasin" pour vérifier.
Non seulement tous les paquets sont là, mais ils sont méthodiquement rangés, chacun dans un sous-répertoire particulier dont le nom est unique :

nix #6.png


Ceux qui vérifient l'intégrité des ISOs qu'ils téléchargent reconnaîtront un "hachage cryptographique" dans la série de chiffres et de lettres qui précède le nom de l'application et son numéro de version.
En fait, ce hachage contient toutes les dépendances du paquet, ce qui le rend absolument unique et... je passe la main à la documentation officielle, qui est plutôt claire sur ce point : 😅
Cela permet de nombreuses fonctionnalités puissantes :

Des versions multiples : Vous pouvez installer plusieurs versions ou variantes d'un paquet en même temps. Cela est particulièrement important lorsque différentes applications dépendent de différentes versions d'un même paquet — cela permet d'éviter le "DLL hell" (enfer des DLL) : grâce au système de hachage, les différentes versions d'un paquet se trouvent dans des répertoires différents dans le magasin Nix, de sorte qu'elles n'interfèrent pas les unes avec les autres.
Une conséquence importante est que des opérations telles que la mise à niveau ou la désinstallation d'une application ne peuvent pas endommager d'autres applications, puisque ces opérations ne mettent jamais à jour ni ne suppriment des fichiers utilisés par d'autres paquets.

Des dépendances complètes : Lorsque vous créez un paquet pour un système de gestion de paquets (.deb, par exemple), vous êtes censé déclarer ses dépendances, mais vous ne pouvez pas facilement garantir que votre déclaration de dépendances est complète : si vous oubliez une dépendance que vous avez installée séparément sur votre machine, le paquet peut se construire et fonctionner correctement sur votre machine, mais échouer sur la machine de l'utilisateur final.
Nix s'assure que les spécifications des dépendances des paquets sont complètes : un processus de construction ne trouvera que les ressources qui ont été déclarées explicitement comme dépendances, mais il ne peut pas construire tant que tout ce dont il a besoin n'a pas été correctement déclaré. Si la construction va jusqu'au bout, ce sera la preuve la déclaration était complète.
Une fois la compilation terminée, les dépendances en cours d'exécution sont détectées automatiquement.

Un support multi-utilisateur : Des utilisateurs peuvent installer des logiciels sans droits supplémentaires et en toute sécurité, l'ensemble de paquets que possède chaque utilisateur dans le magasin Nix apparaissant dans son PATH. Si un utilisateur installe un paquet qu'un autre utilisateur a déjà installé auparavant, le paquet ne sera pas construit ou téléchargé une seconde fois. En même temps, il n'est pas possible pour un utilisateur d'injecter un cheval de Troie dans un paquet qui pourrait être utilisé par un autre utilisateur.

Des mises à niveau et des retours en arrière atomiques : Comme les opérations de gestion des paquets n'écrasent jamais les paquets mais ajoutent simplement de nouvelles versions dans des répertoires différents du magasin Nix, elles sont "atomiques". Ainsi, lors d'une mise à jour d'un paquet, à aucun moment le paquet ne contient en même temps des fichiers de l'ancienne version et des fichiers de la nouvelle version — ce qui serait mauvais car le programme pourrait planter s'il était lancé à ce moment-là.

Et comme les paquets ne sont pas écrasés, les anciennes versions sont toujours présentes après une mise à niveau.

CQFD ! 🙃



Puisque j'avais pris Etcher pour exemple dans mon premier article, ouvrons son sous-répertoire :

nix #7.png

Je n'ai pas totalement développé l'arborescence pour pouvoir faire la copie d'écran, mais vous pouvez constater que toutes les dépendances propres, non seulement à Etcher, mais à sa version 1.7.9, sont contenues dans ce sous-répertoire unique.




Je sais ce que vous pensez : c'est bien beau, tout ça, mais on comprend mieux le poids du répertoire "nix" !
De plus, les avantages présentés ci-dessus ne concernent pas tout le monde.

Certes, mais vous comprenez aussi pourquoi ce n'est pas forcément une bonne idée d'installer Nix sur un autre OS — même si on peut le faire — pour une ou deux applications qu'on n'aurait pas trouvées ailleurs.
Et c'est à ce prix que tout le monde pourra trouver dans Nixos une distribution pour son usage. Cette fois, qui peut le plus, peut aussi le moins — quand je vois un telle clairvoyance de conception, je m'étonne encore plus que la documentation de NixOS ne soit accessible qu'à des utilisateurs pour le moins "avertis"... 

D'ailleurs, les systèmes de conteneurs sont-ils plus économes en espace ? Quelqu'un pourrait-il me dire ? Je n'ai jamais essayé...

A titre de comparaison, VanillaOS, un de ces nouveaux OS qu'évoquait Simon dans sa présentation, réclame au moins 50 Go pour accepter de s'installer parce que ses développeurs ont fait un autre choix : au lieu du magasin unique de NixOS, l'application sur laquelle repose VanillaOS, abroot crée deux répertoires "root" (A et B) 😂 entre lesquels elle établit un système d'échange — si cette distribution vous tente, attendez un peu pour l'essayer : la toute prochaine version abandonne Ubuntu pour Debian !

Bref, si on fait le ménage de temps à autre, on s'interdit peut-être de remonter plus loin en arrière, mais le répertoire "store" de NixOS sera contenu dans des limites acceptables. 


Merci d'avoir lu ces deux copieux articles — mais il fallait bien expliquer un peu...

N'hésitez pas à essayer NixOS : je répondrai à vos questions pour le cas où vous rencontreriez des problèmes d'installation ou d'intégration dans le menu de démarrage, sur les multi-boot en particulier. 🙂
 
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
3 J'aime ce message
Avatar du membre
roger
Administrateur
Administrateur
Messages : 2420
Enregistré(e) le : mer. 4 avr. 2018 15:54
Localisation : Normandie ( Orne )
Système(s) d'exploitation :
Linux Mint Cinamon,
LMDE 4 & LMDE 5,
Windows 10 Pro sur SSD

Le tout installé sur 2 SSD et 3 Disques Durs branchés dans ma tour.


LMDE 5 :P
A ma préférence entre autre sur le reste.

Petit secret ci dessous...
Image
Firefox étant mon fidèle compagnon depuis sa création.
Bien, entendu j'ai aussi d'autres navigateurs web installés sur mon pc...
Nb de « J’aime » donnés: 1352
Nb de « J’aime » reçus: 346
A remercié : 826 fois
A été remercié(e) : 213 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 5


Message par roger »

Moi j'en connais un qui d'ici peu de temps va "migrer" d'une Dame en V5 vers un M'sieur qui à l'air de lui en offrir bien plus une fois que j'ai vu sous le capot comme dirait l'ami @jlb  :).

Mister @Blind114 va falloir que tu prenne des congés payés pour venir avant Noël me faire un tiot ménage dans ma machine et mes distros....bon sang quand on me montre un si beau dessert que ce NixOs je peux pas le laisser à déguster à ma voisine arf!!!
jlb a écrit : sam. 1 avr. 2023 11:11
Merci d'avoir lu ces deux copieux articles — mais il fallait bien expliquer un peu...
Copieux certes mais avec les bons arguments pour vraiment tenter l'expérience jusqu'au bout et pourquoi pas adopter ce nouveau système d'exploitation qui prend le contre-pied de tout les autres et se soucie vraiment des gens qui vont l'utiliser sans se prendre la tête. Simplicité et fiabilité sont les deux mamelles des débutants tout comme des avertis qui veulent un système basé sur du linux.
Tu peux compter sur moi quand j'aurais pu installer cette distribution pour revenir vers toi JLB si je n'arrive pas à mes fin ou pour un complément d'infos si besoin était.
Roger
 
0 J'aime ce message
La science c'est comme la culture : 👣
On la sème, cultive , récolte ( PAS LE POGNON MAIS LE BOULOT !!! ) et surtout on la partage en commun ...
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 6


Message par jlb »

roger a écrit : sam. 1 avr. 2023 21:20 oi j'en connais un qui d'ici peu de temps va "migrer" d'une Dame en V5 vers un M'sieur qui à l'air de lui en offrir bien plus une fois que j'ai vu sous le capot comme dirait l'ami @jlb  :).
Festina lente.jpg

Hâte-toi lentement, @roger, ne répudie pas Elsie avant que j'aie publié le retour de mon expérience de ce matin ! 😧

Vous pouvez essayer NixOS, mais il faut un troisième volet à ma présentation pour qu'elle soit complète et vraiment fiable pour un utilisateur lambda.
Il comportera sans doute au minimum un quatrième alias et quelques recommandations importantes...
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
0 J'aime ce message
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 7


Message par jlb »

#3 Mésaventure

Le problème, quand on découvre, c'est qu'on tâtonne, et qu'il arrive qu'on fasse des bêtises. Cela vaut pour le montage de meubles en kit — même quand la documentation est censée être "intuitive" — comme pour les OS.
Or, celle de NixOS est loin de l'être, c'est un lieu commun sur le net... 😷

J'ai donc essayé tout ce qui se présentait comme ça se présentait... Et comme mon système prenait tournure au fur et à mesure que j'apprenais et que tout allait bien tant que je faisais ce que je vous ai expliqué, je ne voulais pas formater la partition pour repartir à zéro.
C'est pourtant ce qu'on devrait faire systématiquement : c'est toujours plus facile la seconde fois.

Bref, lorsque j'ai voulu expérimenter un upgrade du système (je ne l'avais pas croisé jusque-là), ce qui devait arriver arriva : les 30 Go de ma partition s'avérèrent insuffisants... et l'avertissement n'est tombé que lorsqu'il ne me restait plus que 300 Mo — sur Arch Linux, Pacman évalue d'abord la place disponible avant de faire les mises à jour. 😶

Certes, le système n'était pas cassé et j'ai pu redémarrer, mais je me suis retrouvé avec des tonnes de paquets installés mais inutiles faute de pouvoir finaliser l'upgrade, et l'obligation de les supprimer — mais surtout d'apprendre à le faire vraiment — si je voulais continuer à utiliser mon système.



Et j'ai compris que, tant qu'on est en phase d'apprentissage, il ne faut pas mélanger les modes d'installation avant d'avoir (pu avoir) les idées claires, même et surtout si NixOS en propose plusieurs. 

Heureusement, j'ai aussi découvert — au détour d'une page sur un autre sujet — que, comme NixOS est multi-utilisateur et qu'on peut installer des applications sans droits supplémentaires ("sudo") avec le mode "nix-env", la même commande fait deux choses différentes suivant qu'on l'utilise avec ou sans "sudo" — c'est logique, mais ça ne pourrait pas être clairement mis à plat dès le début ?  :rage:

tip.png

Ainsi "nix-collect-garbage -d" nettoie le compte utilisateur et "sudo nix-collect-garbage -d" nettoie le système, ou plutôt ce qui relève de l'administrateur, vous suivez ?
 
  • J'ai donc "désinstallé" les applications que j'avais d'abord installées en tant que simple utilisateur — mais qui, je vous le rappelle, ne sont pas vraiment désinstallées tant qu'on ne les a pas officiellement supprimées (cf. Corbeille vs Suppression sur Linux).
    Ce n'est pas très compliqué :

    Code : Tout sélectionner

    nix-env --uninstall neofetch (nom-du-paquet)
    
  • Puis j'ai transféré ces applications sur le système en inscrivant leur nom dans le fichier de configuration, mais sans régénérer la configuration :

    Code : Tout sélectionner

    sudo nano /etc/nixos/configuration.nix
    
    
      environment.systemPackages = with pkgs; [
        appimage-run
        brave
        cinnamon.warpinator
        pcloud
        deadbeef-with-plugins
        easytag
        etcher
        fsearch
        geany
        git
        kshisen
        ksnip
        micro
        neofetch
        onlyoffice-bin
        papirus-icon-theme
        plank
        thunderbird
     ];
    
  • Après quoi, au lieu d'utiliser mes alias en "sudo", j'ai entré :

    Code : Tout sélectionner

    nix-collect-garbage -d
    
    ... ce qui a nettoyé mon compte utilisateur, et j'ai fait un :
     

    Code : Tout sélectionner

    sudo nix-collect-garbage -d
    
    ... pour nettoyer l'ensemble. J'ai récupéré des Go d'espace... 😯

  • Enfin, j'ai reconstruit la configuration et relancé le système :

    Code : Tout sélectionner

    sudo nixos-rebuild switch
    
    Et roule ma poule, comme disait Fred Dryer à Stepfanie Kramer dans la version française de "Rick Hunter".


                


Morale #2 :  “It’s easy when you know how” — [ce n'est pas compliqué, mais] c'est plus facile quand on sait comment faire —, comme j'ai lu sur un forum à propos de NixOS.

J'ai d'ailleurs amélioré mon alias en découvrant incidemment une fonction qui n'était documentée nulle part :  "sudo nixos-rebuild edit" ouvre le fichier de configuration avec l'éditeur par défaut (nano), mais de façon plus élégante que "sudo nano /etc/nixos/configuration.nix".


Voici donc mes nouveaux alias dans le fichier ".bashrc" :
 

Code : Tout sélectionner

alias gc='sudo nix-collect-garbage' # Nettoie le système sans supprimer les entrées de démarrage.
alias gd='sudo nix-collect-garbage -d && sudo nixos-rebuild switch' # Nettoie le système, supprime les entrées de démarrage et bascule sur la nouvelle version.
alias re='sudo nixos-rebuild edit && sudo nixos-rebuild switch && sudo pkill -u $USER' # Édite le fichier de configuration, reconstruit la configuration et bascule sur la nouvelle version.

Mais comme je vous sens déçus qu'il n'y ait pas de nouvel alias comme je l'avais annoncé, je vous propose d'ajouter celui-ci — à condition de n'avoir pas fait un "gd" avant !
 

Code : Tout sélectionner

alias rr='sudo nixos-rebuild --rollback switch' # Revient à la version précédente.

Donc, tant que vous ne maîtrisez pas tout, restez-en au mode "système" et inscrivez toutes les applications dans le fichier de configuration, d'autant que c'est comme ça qu'on exploite le mieux les avantages de NixOS.
Mais prévoyez assez large pour pouvoir l'essayer sans mauvaise surprise — 40 Go devraient aller — et faites le ménage régulièrement !


Il y aura bien sûr une suite, et surtout, une synthèse pour que vous puissiez utiliser NixOS tranquillement. 😅
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par jlb le mar. 18 avr. 2023 10:45, modifié 2 fois.
2 J'aime ce message
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 8


Message par jlb »

#4 Le facteur humain

Hier soir, j'ai essayé d'installer un pilote NVIDIA pour voir si le rendu serait meilleur — quelle idée, vu il était déjà très bon...

Donc, j'ai inscrit le nom du paquet dans le fichier de configuration et j'ai lancé la reconstruction, laquelle a déclenché la compilation du noyau : le système assure la compilation après avoir vérifié qu'il n'y a rien de précompilé à télécharger depuis le cache.

cache.nixos.png

Comme le processus était compliqué, ça a duré un certain temps, mais il est allé jusqu'à son terme sans erreur bloquante.

Le hic, c'est qu'au redémarrage, le serveur X11 qui assure l'interface graphique ne s'est pas lancé... 😟

Un piqûre de rappel en quelque sorte : comme je n'avais jamais eu ce genre de problème, je commençais à me dire que NixOS était beaucoup trop précautionneux dans sa conception.



Vous voulez la bonne, ou la mauvaise nouvelle, vu qu'elles vont toujours par deux ?

Bon d'accord, la bonne d'abord : j'ai booté sur l'avant-dernière version du système qui s'est évidemment lancée sans aucun problème. 🍾

La mauvaise, c'est que NixOS a beau avoir été conçu pour être incassable, il n'est pas à l'abri d'une erreur humaine — on s'en doutait, mais que celui qui n'a jamais fait de bêtises me jette la première pierre...



Un peu perturbé par mon euphorie, j'ai lancé un processus de reconstruction pour transformer la version qui bootait en version par défaut et j'ai fait le ménage après.

C'était bien le principe, sauf que :
  • Je n'ai pas réfléchi que cette version comportait la ligne qui avait déclenché le problème dans son fichier de configuration et... qu'il aurait fallu que je la supprime avant de lancer une reconstruction. 😷
  • Et que, comme j'avais fait le ménage sans vérifier que ça marchait, je n'avais plus aucun recours ! 😶


Pas grave : c'était sans doute un acte manqué, vu que je me reprochais de ne pas réinstaller mon système pour repartir d'une configuration propre sur laquelle je ne reproduirais pas les tâtonnements de mes débuts.


... Et, du coup, j'aurai une autre bonne nouvelle à vous annoncer — qui concernera aussi les utilisateurs de Zorin, Ubuntu, etc. 🤠
 
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
1 J'aime ce message
“It’s easy when you know how.” 
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 9


Message par jlb »

Oui, bon, je sais, vous préféreriez que je vous donne NixOS clefs en main... mais il faut que j'en fasse vraiment le tour pour ne pas dire de bêtises.
Mais ça viendra, promis !


#5 Optimisation du magasin

La courbe d'apprentissage — essentiellement due à l'obligation d'élargir les sources de documentation — amène à se demander pourquoi cet excellent système n'est pas configuré au mieux dès l'installation... 😶

Par exemple, Nix (le gestionnaire de paquets) crée des liens symboliques vers les répertoires du magasin "/nix/store" où les paquets sont entreposés.

Mais on découvre incidemment qu'on peut gagner de l'espace en établissant des liens en dur (hard links) — et pas qu'un peu, mon neveu, comme le terminal ne manque pas de vous rappeler au moindre nettoyage :
 

Code : Tout sélectionner

[...]

deleting unused links...
note: currently hard linking saves 1375.18 MiB
991 store paths deleted, 281.50 MiB freed
... et que ça peut se faire automatiquement, moyennant l'ajout d'une ligne au fichier de configuration : (1)
 

Code : Tout sélectionner

nix.settings.auto-optimise-store = true;


... Sauf que, si vous avez découvert le truc après avoir installé tous vos logiciels bien-aimés, il faut d'abord procéder manuellement parce que l'optimisation automatique ne s'appliquera qu'aux nouveaux paquets que vous téléchargerez.

Entrez cette ligne — si vous avez tardé à percuter, comme moi lors de ma première installation, vous avez largement le temps de prendre un ☕, ou autre chose en fonction de l'heure de la journée ou de vos goûts :
 

Code : Tout sélectionner

sudo nix-store --optimise

En revanche, lorsque j'ai réinstallé mon système en remplaçant le fichier de configuration par défaut par mon fichier personnalisé, tout s'est fait en un clic : mes logiciels installés, l'optimisation aussi, etc.

🙃

Envoyé depuis NixOS.


               
 (1)  Comme je sais d'expérience que tout ceci est très abstrait, voici le début de mon fichier de configuration ("/etc/nixos/configuration.nix"), avec la fameuse ligne telle que je l'ai intégrée — assortie d'un petit commentaire dans la langue de Shakespeare : 😅
 

Code : Tout sélectionner

# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{ config, pkgs, ... }:

{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];

# Automatic store optimisation
nix.settings.auto-optimise-store = true;






 
Modifié en dernier par jlb le mar. 18 avr. 2023 19:23, modifié 2 fois.
2 J'aime ce message
“It’s easy when you know how.” 
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 10


Message par jlb »

#6 Optimisation (bis)

NixOS n'échappe pas à la règle : mis à part Solus dont la swappiness est réglée sur "10" à l'installation, tous les OS renvoient "60".  Autrement dit, les échanges se font sur le disque dès que la RAM est occupée à 40%, ce qui n'est pas la meilleure façon de tirer parti de son matériel — le sujet a été plusieurs fois évoqué sur le forum.

Pour vérifier :
 

Code : Tout sélectionner

cat /proc/sys/vm/swappiness

Pour que NixOS utilise la RAM plutôt que le disque, éditez le fichier de configuration, ajoutez-y ces lignes, reconstruisez la configuration et basculez dessus — l'alias "re" (voir ci-dessus) s'occupe de tout, sauf d'ajouter les lignes dans le fichier et d'enregistrer la modification :
 

Code : Tout sélectionner

   boot.kernel.sysctl = {
    "vm.swappiness" = 10;
    "vm.vfs_cache_pressure" = 50;
   };


Mettez-les par exemple à la fin du fichier, juste avant l'accolade fermante :
 

Code : Tout sélectionner

   boot.kernel.sysctl = {
    "vm.swappiness" = 10;
    "vm.vfs_cache_pressure" = 50;
   };
}


Je vous prépare un patch de synthèse qu'il sera plus facile de placer à cet endroit. 😊
 
Modifié en dernier par jlb le dim. 23 avr. 2023 18:07, modifié 1 fois.
2 J'aime ce message
“It’s easy when you know how.” 
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 11


Message par jlb »

#7 De l'un des intérêts de NixOS

L'inconvénient des distributions "bleeding edge" — sur le fil du rasoir —, c'est que les dernières livraisons des logiciels peuvent être boguées.
C'est le cas de la version 42.5 de Simple Scan : le scanner de mon multifonction Canon MG5750 est un scanner "à plat", mais on me dit qu'il faudrait que je remplisse le bac d'alimentation pour pouvoir copier... 😶
Pourtant NixOS, même dans sa version "unstable", n'est pas Arch Linux. (1)
Je pense plutôt que les développeurs de Simple Scan n'ont pas vérifié cette version — le problème est connu sur le net. On s'étonne après que les distributions de "bons pères de famille" ne proposent que des versions datées des logiciels...


Mais il paraît qu'avec NixOS, on peut installer concomitamment plusieurs versions du même logiciel.
Si on se demandait à quoi ça pouvait bien servir, voici l'occasion de le comprendre et de le vérifier... sauf que le moteur de recherche de Nix ne propose que les canaux "22.11" et "unstable" (le futur "23.05")...
Comment savoir quelles étaient les versions précédentes de Simple Scan et comment les installer ?



Figurez-vous qu'un fan de NixOS, partant du même constat, a créé un moteur de recherche ad hoc... et que la documentation officielle n'en fait même pas mention !
Heureusement qu'au détour d'un forum, un autre passionné a donné l'adresse dudit moteur — en réponse à l'utilisateur qui le remerciait, il a expliqué qu'il l'avait fait dans l'espoir que le monde finirait par connaître ce site. 👍

On choisit sa version de NixOS dans la liste déroulante et on entre le nom du logiciel dans la boîte du dessous... en espérant que ce soit le bon : ce n'est pas "gnome.simple-scan", mais "simple-scan" :

nix-package-versions #1.png


La requête retourne 34 versions de Simple Scan, de la 3.16.0.1 du 25 mai 2015 à la 42.5 du 3 mars 2023.

Puisque c'est la version qui débloque, essayons la 42.1 du 15 septembre 2022 :

nix-package-versions #2.png


Il manque juste un bouton pour copier les lignes — certains sites vous rendent difficiles ! 🤭 —, mais c'est nickel, on vous propose quatre façons d'essayer ou d'installer le logiciel.
Je choisis celle que je connais déjà ("nix-env") et je copie-colle cette ligne dans le terminal pour installer Simple Scan en tant qu'utilisateur :

nix-package-versions #3.png


Je referme la session, je me reconnecte et... Simple Scan fonctionne dans sa version 42.1 !

nix-package-versions #4.png


Désolé pour Xsane qui marchait très bien et qui permettait plein de réglages velus, mais les interfaces "Linux" éclatées façon GIMP années 2010, pour l'usage que j'en ai, je n'y tiens pas vraiment...

Il n'y a plus qu'à supprimer "gnome.simple-scan" du fichier de configuration, reconstruire, relancer, et faire un peu de ménage. Avec mes alias, ça se fait en tapant "re" puis "gd"... 🙃



               
 (1) ... qui, même en version LTS, vient d'installer d'office la version 44.0 de Simple Scan, laquelle n'arrive même plus à se connecter à mon scanner. :rage:
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
2 J'aime ce message
“It’s easy when you know how.” 
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 12


Message par jlb »

#8 La configuration des périphériques, ou les joies du Do it Yourself (Débrouille-toi Bilou) !

Qui ne s'est jamais dit qu'un système qui n'embarquerait que le strict nécessaire serait préférable à ces distributions boursouflées dont il faut désinstaller les logiciels superflus pour les remplacer par ceux que l'on voudrait ?

De ce point de vue, NixOS vous plairait certainement : même si je préfère Brave à Firefox, Thunderbird à Geary et que je n'ai rien à faire de HexChat, son environnement Cinnamon n'est pas surchargé. (1)

En revanche, certains modules brillent par leur absence : celui des imprimantes dans le panneau des paramètres système, par exemple...
Sur ce plan, NixOS pousse le bouchon un peu loin puisqu'il faut tout faire soi-même pour adapter le système au matériel, et d'abord configurer les services nécessaires.  :rage:

Mais comme vous l'aurez compris si vous avez lu mon dernier post, je suis parvenu à connecter mon multifonction Canon MG5750 (par WiFi). C'est donc possible :

printing #1.png


J'avoue que j'appréhendais cette étape : sur Arch Linux, j'avais carrément renoncé à connecter mon imprimante jusqu'au jour où j'ai déniché (par hasard) une vidéo (en anglais, bien sûr) qui expliquait comment faire...

Peut-être ai-je appris à composer avec l'éparpillement des informations, mais ça s'est passé plus facilement avec NixOS.
Un conseil : même s'il n'est pas parfait, préférez le wiki (non officiel) et évitez de commencer par le manuel officiel (installé avec la distribution) qui est — à tout le moins — rébarbatif et décourageant. 😷 Quand on a un peu appris, on commence à savoir où trouver l'information que l'on souhaite et à tirer profit de ses explications.

Le wiki, par exemple, dispose d'une boîte de recherche qui suggère "Printing" dès que vous tapez "pr" :

printing #2.png

Oui, ça reste de l'anglais et ce n'est pas tout cuit pour autant, mais pièce à pièce, le puzzle s'assemble et vous finissez par ajouter ce bloc de lignes au fichier de configuration — je vous ai rédigé des commentaires en français 😃 :
 

Code : Tout sélectionner

  # Activation du service d'impression.
  services.printing.enable = true;
  # Affichage du module de configuration
  programs.system-config-printer.enable = true;
  # Chargement du pilote Canon
  services.printing.drivers = with pkgs; [
      cnijfilter2
  ];
  # Activation des protocoles réseau
  services.avahi.enable = true;
  services.avahi.nssmdns = true;
  # Ouverture du parefeu pour le WiFi
  services.avahi.openFirewall = true;


Il y a déjà du mieux :

printing #3.png


J'aurais pu me passer du pilote Canon, mais la qualité d'impression est moins bonne, et je l'ai trouvé en tapant "Canon" dans le moteur de recherche de paquets.
En revanche, le pilote du scanner n'y est pas. Mais les copies sont de qualité, contrairement aux autres distributions (Zorin compris) dont les fonds sont bleutés sans le pilote propriétaire — est-ce dû au kernel 6.1 ?


Ceci dit, pour pouvoir l'installer, il faut autoriser les logiciels propriétaires, soit en cochant une case pendant l'installation du système, soit en ajoutant après coup cette ligne au fichier de configuration :
 

Code : Tout sélectionner

# Allow unfree packages
  nixpkgs.config.allowUnfree = true;
  
De plus, il faut avoir croisé l'information selon laquelle les pilotes ne s'installent pas comme le site l'indique — ce ne sont pas des paquets comme les autres —, mais comme je l'ai fait ci-dessus :

printing #4.png


En revanche pour le scanner, c'est bien dans la liste des paquets que ça se passe : 
 

Code : Tout sélectionner

  environment.systemPackages = with pkgs; [
    ...
    sane-airscan
    sane-backends
    ]

    
Mais c'était sans compter avec un bug de Simple Scan😶


Bref, tout est facile quand on sait comment faire...

J'espère donc que vous aurez plus facile pour installer votre imprimante — tiens, les expressions franc-comtoises me reviennent... 🤔
J'espère aussi que vous comprenez pourquoi j'ai adopté cette signature et que vous n'avez pas pensé que je me la jouais.



               
 (1) Bizarre, je n'ai vu Geary nulle part dans le fichier de configuration — Firefox y est...

Quelques essais plus tard...
  • Le moteur de recherche trouve bien ces paquets installés lors de la création du système mais il est impossible de les supprimer "à la main" vu que le répertoire "/nix/store" est cadenassé pour garantir son immuabilité. Il existe bizarrement une instruction pour le déverrouiller, mais cela risque d'entraîner l'effondrement du système. Je n'essaierai donc pas.
  • Pas plus que je n'essaierai une autre instruction qui permet de passer outre les avertissements et de supprimer les paquets à partir du terminal même s'ils sont considérés comme "vivants" : là encore, il y a un risque de destruction en chaîne...
  • Et comme Geary ne fait pas strictement partie de l'environnement Cinnamon, on ne peut pas l'en exclure comme on pourrait le faire sur l'environnement Gnome auquel il appartient.
On dira donc que sur ce point, NixOS ne permet pas ce que d'autres distributions acceptent, mais que ce n'est pas très grave étant donné que cela ne concerne que deux applications — ai-je précisé qu'il n'y a aucune suite bureautique pré-installée ?

J'ai désactivé leurs entrées dans le menu, et tant pis s'il reste quelques paquets superflus... 🙁
 
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
1 J'aime ce message
“It’s easy when you know how.” 
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 13


Message par jlb »

#9 Où nous parlerons activation des formats Flatpak et AppImage et pêche à la ligne

Comme d'autres distributions, NixOS est doté d'un système de détection qui lui permet de s'adapter automatiquement à votre matériel — du moins celui auquel il a pu accéder lors de l'installation.
Mais vous devez avoir compris que (presque) rien n'est pré-installé ou pré-configuré sur le plan des logiciels ou des services. 

Par exemple, il faudra activer par vous-mêmes le support des formats Flatpak et AppImage.


Cette fois, la documentation est facile à trouver dans le wiki ou le manuel, en s'aidant du moteur de recherche du site ou de "CRTL F" et du mot-clef qui va bien.


1. Flatpak

Et comme c'est plutôt simple, vous repartez rapidement avec les lignes à copier-coller dans le fichier de configuration :
 

Code : Tout sélectionner

# Enable Flatpak support
  xdg.portal.enable = true;
  services.flatpak.enable = true;

Même éparpillée et aride, que ferait-on sans la documentation ?
Certes, mais comme aurait dit Lao-Tseu : "Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours." 😇



Vous vous rappelez peut-être que je vous avais conseillé d'ajouter ce site à la barre des favoris de votre navigateur pour rechercher les applications à installer.
Or, à droite de l'onglet "Packages" et ses 80 000 paquets, il y a un onglet "Options" qui en propose plus de 10 000.
La première fois, j'avoue que je me suis demandé ce que je pourrais bien en faire, vu que je ne savais ni quoi ni comment chercher.

C'est pourtant tout bête : tapez "flatpak" et l'index vous remonte deux options — pour "gnome", c'est plusieurs pages !

options #1.png

Cliquez sur ces options pour obtenir des explications sur leur effet, leur réglage par défaut et le type de paramètre à renseigner. C'est concis, voire lapidaire et parfois redondant par rapport à l'intitulé de l'option, mais que dire d'autre dans le cas présent ?

options #2.png

Copiez le nom de la fonction, ajoutez le signe " = " (entre deux espaces) suivi de l'opérateur booléen "true" (sans guillemets) et — ce qu'on ne vous dit pas —, d'un point-virgule. Et voilà l'option qui activera le support du format Flatpak : 
 

Code : Tout sélectionner

services.flatpak.enable = true;

Oui, je sais, le site de Flatpak vous l'aurait bien mieux expliqué, ainsi que la suite de la configuration, mais c'était pour prendre un exemple et vous apprendre à pêcher. 😶



2. AppImage

Là, ce n'est pas une option à activer, mais une application à installer : NixOS n'acceptant de paquets pré-compilés que les siens et ceux de Flatpak, c'est l'application "appimage-run" qui se chargera de faire l'interface — manuel (paragraphe 7.1.2.2) ou recherche de paquets.

Ajoutez "appimage-run" à la liste des applications système : 
 

Code : Tout sélectionner

  environment.systemPackages = with pkgs; [
    appimage-run

Appimage-run est moins pratique que AppImageLauncher que @roger nous avait présenté, qui rend les AppImages exécutables et les intègre dans le menu, mais bon... au lieu d'entrer cette ligne dans le terminal avec les références de la version, sauf à renommer l'archive : 😷
 

Code : Tout sélectionner

appimage-run balenaEtcher-1.18.4-x64.AppImage
... un clic droit vous propose d'ouvrir l'AppImage avec "appimage-run" :

appimages #1.png

... ce qu'il fera sans même que vous en ayez préalablement autorisé l'exécution :

appimages #2.png



Finalement, la fameuse "courbe d'apprentissage" de NixOS, c'est juste comme la rando sur le GR 10 dans certaines vallées des Pyrénées : lorsqu'on part du village, c'est bien raide au début, mais au bout d'une heure ou deux, le relief s'aplanit et s'ouvre vers d'autres horizons. Il reste souvent plusieurs ressauts à franchir. Ils dépriment le novice qui espère chaque fois que le col est là, mais on s'y fait.

C'est sans doute pour ça qu'on trouve plus rapidement et qu'on comprend mieux après quelque temps.

🙃
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
2 J'aime ce message
“It’s easy when you know how.” 
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 14


Message par jlb »

#10 Canaux, mise à jour et automatisation(s).

Comme je vous l'avais expliqué au début, il existe (principalement) deux types de "canaux" :
  • Les canaux stables ("nixos-22.11" à l'heure actuelle), qui ne reçoivent que des corrections de bugs et des mises à niveau de paquets, et dont la mise à jour d'un canal peut entraîner la mise à niveau du noyau Linux de 4.19.34 — pour reprendre l'exemple du manuel — à 4.19.38 (correction de bugs), mais pas de 4.19.x à 4.20.x (changement majeur susceptible de provoquer des dysfonctionnements). Les canaux stables sont généralement maintenus jusqu'à la création de la branche stable suivante.
  • Le canal instable ("nixos-unstable"), qui correspond à la branche principale de développement de NixOS, et peut donc subir des changements radicaux entre les mises à jour du canal.
Par défaut, vous êtes abonnés au canal stable en vigueur au moment où vous installez votre système.

Ceci dit, même si le manuel déconseille le canal "unstable" pour les systèmes de production, vous vous doutez bien que je n'ai pas pu m'empêcher de m'y abonner "to live on the bleeding edge", comme dit le manuel ! 🤭 (1)

C'est comme ça que j'ai découvert que la version stable du mois prochain (23.05) devrait intégrer l'environnement Budgie... et que j'ai même pu l'essayer en primeur dans sa toute dernière version 10.7.1 : il suffit de remplacer "cinnamon" par "budgie" dans le fichier de configuration. 🙃 (2)



Je vous avais dit qu'il était facile de basculer d'un canal sur l'autre, mais je n'avais pas expliqué comment faire pour ne pas surcharger ma présentation :
  • Vérifiez le canal auquel vous êtes abonnés :

    Code : Tout sélectionner

    sudo nix-channel --list
    
  • Pour basculer d'un canal sur un autre, entrez cette ligne pour passer au canal "unstable" : 

    Code : Tout sélectionner

    sudo nix-channel --add https://nixos.org/channels/nixos-unstable nixos
    
  • ... ou celle-ci pour revenir au canal stable du moment :

    Code : Tout sélectionner

    sudo nix-channel --add https://nixos.org/channels/nixos-22.11 nixos
    
    ⚠ N'oubliez pas d'ajouter "nixos" à la fin de la ligne. 

  • Après quoi, effectuez une mise à jour vers la dernière version du canal choisi :

    Code : Tout sélectionner

    sudo nixos-rebuild switch --upgrade
    


C'est aussi cette ligne qu'il vous faudra entrer périodiquement pour mettre votre système à jour.

C'est la version condensée de ces deux instructions :
 

Code : Tout sélectionner

sudo nix-channel --update nixos
sudo nixos-rebuild switch

J'en ai d'ailleurs fait un alias que j'ai ajouté à mon fichier ".bashrc" :
 

Code : Tout sélectionner

alias ru='sudo nixos-rebuild switch --upgrade' # Mise à jour du système


Mais peut-être préféreriez-vous que le système se charge automatiquement des mises à jour ?

Dans ce cas, ajoutez ces trois lignes à votre fichier de configuration et lancez un "nixos-rebuild switch" :
 

Code : Tout sélectionner

system.autoUpgrade.enable = true;
system.autoUpgrade.allowReboot = true;
system.autoUpgrade.channel = https://nixos.org/channels/nixos-22.11;
  • La première est celle qui active la mise à jour automatique.
  • La seconde autorise le système à rebooter si la nouvelle génération contient un noyau, un initrd ou des modules de noyau différents... et si vous êtes pressés de l'essayer. 
  • La troisième précise le canal, mais ce n'est pas nécessaire pour un utilisateur unique : comme le manuel l'explique à propos d'un usage multi-utilisateurs, les canaux sont définis pour chaque utilisateur. Cela signifie que l'exécution de "nix-channel --add" en tant qu'utilisateur non root (ou sans sudo) n'affectera pas la configuration dans "/etc/nixos/configuration.nix".


En fait, c'était pour vous montrer une façon plus élégante de rédiger votre déclaration et de mieux comprendre comment les noms des options sont composés :
 

Code : Tout sélectionner

### automatic upgrade
  system.autoUpgrade = {
      enable = true;
      allowReboot = true;      
      channel = "https://nixos.org/channels/nixos-unstable";
  };

Mais bon, cette ligne suffit pour activer les mises à jour automatiques de votre installation :
 

Code : Tout sélectionner

### automatic upgrade
  system.autoUpgrade.enable = true;

               

Tant que j'en suis à évoquer l'automatisation de certaines tâches, on peut aussi automatiser le nettoyage du système.
L'instruction "nix.gc" (garbage collect), moins radicale que le "nix-collect-garbage -d" de mon alias, minimisera le risque de faire des bêtises en conservant les générations des sept derniers jours : (3)
 

Code : Tout sélectionner

### clean system
nix.gc = {
  automatic = true; # Activation du service
  dates = "weekly"; # Périodicité officiellement préconisée
  options = "--delete-older-than 7d"; # Générations à conserver
  };

Ce qui peut se regrouper avec l'optimisation du système dont je vous ai déjà parlé — histoire d'appliquer ce que vous venez de comprendre sur la structuration des déclarations :
 

Code : Tout sélectionner

### system optimisation and cleaning
nix = {
  settings.auto-optimise-store = true;
  gc = {
    automatic = true;
    dates = "weekly";
    options = "--delete-older-than 7d";
  };
};

Oui, je sais... ça fait huit lignes au lieu de quatre... 😶



               
 (1) Mon système n'en est pas instable pour autant...

 (2) Le moteur de recherche de paquets permet de déposer une "packaging request" dans le cas où vous ne trouveriez pas ce que vous désirez.

packaging request.png

La requête concernant l'environnement Budgie a donc été satisfaite — autre atout de NixOS, la communauté semble à l'écoute et très active. 👍

 (3) Pour découvrir d'autres options de déclenchement du nettoyage automatique — en particulier celles en relation avec l'espace disponible —, cherchez "nix.gc" dans le moteur de recherche d'options et consultez cette page pour plus d'explications sur la périodicité.





 
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
2 J'aime ce message
“It’s easy when you know how.” 
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 15


Message par jlb »

#11 Une petite séance de TP pour terminer ?

Pour clore cette présentation — qui s'est transformée en feuilleton 😷 —, je vous propose quelques travaux pratiques (TP) dans une machine virtuelle (VM).

Si vous ne l'avez pas déjà fait, installez "Gnome-Boxes" alias "Machines" en suivant les explications données dans ce sujet :

Téléchargez ensuite l'ISO de l'installateur de NixOS — pour ce que vous avez à faire, l'environnement Gnome conviendra mieux que KDE.
 
  • Lancez "Machines".
  • Créez la machine virtuelle "depuis un fichier" en sélectionnant l'ISO que vous avez téléchargée.
  • L'installateur Calamares est simple et sympa.
  • Choisissez le français — par ordre alphabétique après "suomi" (finlandais) 🤭 — pour traduire l'interface :

    nixos vm #1.png

  • Les deux étapes suivantes (fuseau horaire et clavier) sont conséquemment pré-renseignées.
  • Créez votre compte puis choisissez l'environnement de bureau qui vous convient et acceptez les programmes non libres.
  • Au moment de définir le type d'installation, cliquez sans crainte sur "Effacer le disque" : ce n'est pas votre DD que vous allez effacer, vous êtes bien dans une machine virtuelle...

    nixos vm #2.png


Huit minutes plus tard (sur mon ordinateur "normal"), même si la barre de progression s'est bloquée sur 46% — le bouton "Togle log" prouve que ça travaille là dessous — l'installation est terminée et vous découvrez NixOS dans l'environnement de bureau que vous avez choisi.


               



On pourrait faire plus simple pour ce TP, mais puisque vous aurez à utiliser Nano en utilisant mes alias, autant vous familiariser avec lui. De plus, c'est l'éditeur par défaut de la plupart des distributions Linux. 
  • Depuis la VM, (1)  lancez le navigateur, connectez-vous à zorinos.fr, revenez sur le message que vous êtes en train de lire et téléchargez ce fichier :

    nixos tp.txt
  • Ouvrez-le.
  • Tapez successivement "CRTL A" et "CTRL C" pour sélectionner tout son contenu et le copier.

Contrairement à la plupart des distributions Linux, NixOS ne prévoit pas de fichier caché ".bashrc" à la racine de votre répertoire personnel.
  • Pour le créer, lancez le terminal ("CTRL Alt t" en principe) et tapez :

    Code : Tout sélectionner

    nano .bashrc
    
  • Avec la souris, collez le contenu que vous avez précédemment copié dans le fichier.
  • Puis faites "CTRL O" + "Entrée" pour enregistrer la modification et "CTRL X" pour quitter Nano.

Refermez le terminal, puis rouvrez-le.
Normalement il devrait afficher les alias dont je vous ai parlé... et un message d'erreur.


Tapez "re" (comme rebuild edit), lisez les avertissements d'usage et entrez votre mot de passe.

Vous revoilà dans Nano, mais cette fois pour éditer le fameux fichier de configuration "/etc/nixos/configuration.nix" dont tout dépend — et qu'il faudra sauvegarder en lieu sûr (clef ou cloud) pour pouvoir réinstaller votre système en cas de pépin.
  • Avec la flèche basse du clavier, déroulez presque complètement le fichier jusqu'à ce que vous rencontriez ces lignes :

    Code : Tout sélectionner

    # List packages installed in system profile. To search, run:
      # $ nix search wget
      environment.systemPackages = with pkgs; [
      #  vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
      #  wget
      ];
    

    Celle qui nous intéresse est en blanc, au milieu de lignes commentées en bleu pétrole :

    Code : Tout sélectionner

    environment.systemPackages = with pkgs; [
    
  • Déplacez le curseur jusqu'à la fin de la ligne (ou utilisez la touche "Fin" de votre clavier).
  • Faites "Entrée" pour créer une nouvelle ligne.
  • Tapez-y "neofetch" (sans les guillemets).
  • "CTRL O" + "Entrée" pour enregistrer la modification et "CTRL X" pour quitter l'éditeur... et la suite du processus se lance.
    Nix (le gestionnaire de paquets de NixOS)...
    • reconstruit la configuration ;
    • crée une nouvelle "génération" ;
    • en fait la nouvelle version par défaut ;
    • et ferme la session.
Lorsque vous vous serez reconnecté, lancez le terminal.

Félicitations !  🍾 
Vous venez d'installer votre premier programme de manière "déclarative" : il sera visible sur l'ensemble du système, que vous soyez administrateur (root) ou utilisateur.

nixos vm #6.png

Refermez la machine virtuelle, soit en utilisant les boutons de l'environnement que vous avez installé, soit en forçant l'arrêt (bouton "Big Mac" de "Machines").
Relancez-la — oui, le GRUB de NixOS est presque aussi moche que celui d'Ubuntu. 🙄

Choisissez "NixOS - All configurations" :

nixos vm #4.png

Vous avez bien deux versions — deux "générations" — de votre système :

nixos vm #5.png

Si jamais la version 2 (que vous avez créée en installant Neofetch) ne bootait pas ou présentait des défauts, il suffirait de choisir la version 1 pour reprendre la main sur votre système.

Mais puisqu'on sait qu'elle marche, bootez sur la version 2 et tapez "gd" dans le terminal.
Vous avez supprimé la version 1, désormais inutile.


Les 20 Go par défaut de la VM ne vous permettront pas de faire des folies, mais vous pourrez installer quelques logiciels, et essayer une grande partie de ce que je vous ai expliqué.

Amusez-vous, c'est sans risques ! 🙃


               
 (1) Vous avez créé votre VM en deux clics, mais si elle communique avec l'internet, elle n'a pas de rapports avec votre ordinateur.
Pour corriger ce manque, consultez ce sujet.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
1 J'aime ce message
“It’s easy when you know how.” 
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 16


Message par jlb »

#12 Des pilotes propriétaires

Les derniers problèmes d'un membre du forum avec le chipset graphique de son ordinateur m'ont donné envie d'essayer d'installer le pilote NVIDIA ad hoc sur NixOS, pour voir.
Et comme j'avais autorisé les logiciels non-libres au moment de l'installation, autant en profiter...

Sinon, ajoutez seulement cette ligne au fichier de configuration :
  
 

Code : Tout sélectionner

 # Allow unfree packages
  nixpkgs.config.allowUnfree = true;


Si l'étiquette "NVIDIA" n'était pas encore collée à côté de celle d'Intel en bas à gauche du clavier de mon portable, Neofetch m'aurait précisé le modèle de la carte sans que je le lui demande — comme quoi, ce petit truc n'est pas qu'un gadget : (1)
GPU: NVIDIA NVIDIA Corporation GeForce 820M

Une rapide recherche sur le site NVIDIA :

nvidia #1.png

C'est la version 430 qui correspond au modèle 820M :

nvidia #2.png

nvidia #3.png


J'ouvre donc le manuel de NixOS et "CTRL F nvidia" me renvoie au paragraphe 10.3 qui explique comment déclarer un pilote de cette marque.

Puisqu'il y a deux méthodes, j'essaye d'abord la première en ajoutant cette ligne au fichier de configuration : 
 

Code : Tout sélectionner

services.xserver.videoDrivers = [ "nvidia" ];

La reconstruction déclenche la compilation du noyau (qui en est à la version 6.1.24).

C'est bien long (environ 5 minutes) et finalement très décevant car même si le processus est allé jusqu'au bout en dépit de multiples avertissements à propos de déclarations dépréciées, le serveur X11 ne s'est pas déclenché au reboot : il faut dire que cette méthode avait installé la version 530 qui ne convient pas à ma carte. J'aurais pu m'en douter... 😷

Pas grave : avec NixOS il suffit de booter sur la génération précédente et de ne pas oublier de corriger le fichier de configuration dans lequel l'instruction fautive figure toujours.

Ça tombe bien, il me reste à essayer la seconde méthode pour cartes "legacy" — après tout mon Acer date de 2014, je crois, et c'est un "héritage" de ma fille...

Je corrige donc la ligne en précisant la version souhaitée :
 

Code : Tout sélectionner

services.xserver.videoDrivers = [ "nvidiaLegacy430" ];


Pas de compilation cette fois... mais le processus s'arrête net. 😶

Ce qu'il y a de bien avec NixOS, c'est que le terminal vous explique systématiquement ce qui ne va pas, avec des couleurs, des développements et des conseils circonstanciés — pour les fautes de syntaxe, il y a même une petite flèche rouge à l'endroit précis où ça cloche.

Le problème vient du fait que le manuel, censé correspondre à la version 22.11 de NixOS, n'a pas été actualisé.

On m'explique en effet que depuis la version 19, ce genre de pilote ne se déclare plus de cette façon, mais comme ceci :
 

Code : Tout sélectionner

services.xserver.videoDrivers = [
  "config.boot.kernelPackages.nvidiaPackages.legacy_430"
  ];


Qu'à cela ne tienne !

Deux minutes plus tard, je reboote sur mon nouveau pilote.
Pas besoin de ligne de commande pour vérifier que le pilote NVIDIA a pris le relais : le rendu visuel parle de lui même, les caractères sont plus arrondis et tout est mieux léché.


Encore un point qui plaide en faveur de NixOS ! 🙃
 

               
 (1) Au fait, je ne vous avais jamais montré ça ?

neofetch #1.png

Bon, d'accord, c'est au redémarrage... Mais c'est sans SSD ni tricherie dont je serais techniquement incapable et ça comprend l'entrée d'un mot de passe de 9 caractères sans aucune virtuosité dactylographique.

Il y a des OS plus légers si on se réfère à la mémoire mobilisée, mais ils sont plus lents au démarrage.
Sur ce point, Ubuntu Budgie ressemble assez à NixOS.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par jlb le mar. 18 avr. 2023 10:47, modifié 2 fois.
1 J'aime ce message
“It’s easy when you know how.” 
Avatar du membre
Maxnat
Membre confirmé
Membre confirmé
Messages : 35
Enregistré(e) le : dim. 18 déc. 2022 17:49
Localisation : environs de Tours - 37
Nb de « J’aime » donnés: 26
Nb de « J’aime » reçus: 40
A remercié : 85 fois
A été remercié(e) : 26 fois
Genre :

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 17


Message par Maxnat »

Merci @jlb pour ce tuto très complet, bien documenté et bien didactique.

Je n'ai pas eu le loisir de parcourir le GR10. Mais comme j'ai plus confiance dans mes mollets que dans mes neurones, j'aurais tendance à privilégier un parcours sportif.
Toutefois, je vais essayer de me motiver pour essayer cette distribution mais, avant,  il me faut acquérir beaucoup plus de connaissances dans le vaste domaine qu'est LINUX afin de mieux comprendre tous les aspects de ce tuto.

Vaste programme en perspective pour moi.

Cordialement

 
2 J'aime ce message
Une grenouille au fond d'un puits n'aperçoit qu'un tout petit bout du ciel - Jigoro Kano
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 18


Message par jlb »

Merci pour ta réponse et tes gentillesses, @Maxnat
 
Maxnat a écrit : lun. 17 avr. 2023 18:21 Je n'ai pas eu le loisir de parcourir le GR10. Mais comme j'ai plus confiance dans mes mollets que dans mes neurones, j'aurais tendance à privilégier un parcours sportif.
Toutefois, je vais essayer de me motiver pour essayer cette distribution mais, avant,  il me faut acquérir beaucoup plus de connaissances dans le vaste domaine qu'est LINUX afin de mieux comprendre tous les aspects de ce tuto.

Le GR 10 est aussi difficile que ce que tu envisages, du moins si on compte redescendre dans la vallée tous les soirs, parce que le lendemain il faut remonter. Avec une tente légère, on peut faire plusieurs jours en autonomie et voir des marmottes, des isards... quand les randonneurs sont redescendus.

Ne cherche pas d'abord à comprendre Linux —  est-ce que j'y comprends quelque chose ? Essaie le TP dans la VM, au moins tu verras à quoi ressemble NixOS. 

🍻
1 J'aime ce message
“It’s easy when you know how.” 
Avatar du membre
jlb
Membre émérite
Membre émérite
Messages : 2675
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 310
Nb de « J’aime » reçus: 1325
A remercié : 448 fois
A été remercié(e) : 854 fois

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 19


Message par jlb »

#13 Retour sur la "courbe d'apprentissage" et conclusion

Cela fait bientôt deux mois que j'ai découvert NixOS.
A un moment, j'ai pensé que j'avais été un peu fou d'avancer que NixOS ferait une excellente distribution grand public et qu'il faudrait que j'en rabatte.

Mais maintenant, je peux tranquillement affirmer que, même si les possibilités de NixOS sont bien plus vastes et plus puissantes que celles que je vous ai présentées, ce n'est pas uniquement une distribution pour développeurs et qu'il peut s'utiliser au quotidien sans compétences informatiques extraordinaires (1) — pour peu qu'on vous ouvre la voie, ce que je me suis efforcé de faire.


Certes, une bêtise m'a obligé à réinstaller le système, mais ça n'enlève rien à sa fiabilité.
Ce fut d'ailleurs un petit mal pour un grand bien : j'ai repris mon apprentissage sur des bases plus conscientes en me concentrant sur la spécificité de NixOS que j'avais contournée, la gestion déclarative — la seule méthode qui permette de profiter pleinement de sa conception. (1)

Faites une copie du fichier de configuration "/etc/nixos/configuration.nix" et conservez-la précieusement. Si jamais vous deviez réinstaller votre système — ou si vous vouliez le dupliquer sur un autre ordinateur — il suffirait de remplacer le contenu du fichier de configuration initial par celui du vôtre et de reconstruire la configuration pour retrouver vos logiciels et vos services au redémarrage.

Il serait même possible de le faire dès l'installation ou de confectionner une ISO, mais je n'ai pas exploré cette piste. Et d'ailleurs à quoi bon ? Le vrai problème avec NixOS, c'est qu'on se demande pourquoi il permet autant de choses qui ne manqueraient pas — et qui occultent un peu ses qualités fondamentales.


Pour achever de convaincre les réfractaires au terminal, je peux certifier que mes cinq alias assurent une administration sans ligne de commande et sans risque, qu'il s'agisse d'installer des logiciels, de mettre le système à jour ou de faire le ménage périodiquement.

Si on automatise ces deux dernières tâches, le seul alias vraiment essentiel est celui-ci : 
 

Code : Tout sélectionner

alias re='sudo nixos-rebuild edit && sudo nixos-rebuild switch && sudo pkill -u $USER' # Edition du fichier de configuration, reconstruction et bascule sur la nouvelle version.


Enfin, ce n'est pas par goût personnel que je vous dis qu'il n'est pas plus compliqué de chercher les logiciels sur un site plutôt que dans une "logithèque" et de copier leur nom dans un fichier texte plutôt que de cliquer sur un bouton.
J'ai essayé le Nix Software Center que j'avais évoqué. Il marche très bien, mais il installe les applications en mode "utilisateur". Je l'ai donc abandonné. (2)


Bref, give NixOS a try🙃
Il va de soi que je répondrai à toutes les questions que vous voudrez bien me poser pour vous aider à installer NixOS "en dur".


Mais je ne peux pas terminer sans remercier ceux qui m'ont suivi dans cette présentation qui a pris des proportions imprévues — vous avez dû constater que je me suis pris au jeu — ni sans remercier zorinos.fr de m'avoir laissé la faire. 😄


               
 (1) Même si on peut parfaitement penser le contraire.

 (2) Pour l'installer, il faut d'abord basculer sur le canal "unstable".
Pour se faire une simple idée de Nix Software Center, mieux vaut essayer SnowflakesOS, la distribution "grand public" en interface graphique que son développeur a élaborée à partir de NixOS — mais le projet semble en standby.
2 J'aime ce message
“It’s easy when you know how.” 
Avatar du membre
Maxnat
Membre confirmé
Membre confirmé
Messages : 35
Enregistré(e) le : dim. 18 déc. 2022 17:49
Localisation : environs de Tours - 37
Nb de « J’aime » donnés: 26
Nb de « J’aime » reçus: 40
A remercié : 85 fois
A été remercié(e) : 26 fois
Genre :

NixOS, la distribution "reproductible, déclarative et fiable".

Message n° 20


Message par Maxnat »

Bonjour @jlb ,

Si je n'ai pas eu le loisir de parcourir le GR10, il n'empêche, sans vouloir me vanter, que mes mollets sont bien aguerris et que cela fait plusieurs dizaines d'années qu'ils sont sortis du "puits" (GR5, GR400, Tyrol autrichien et bien d'autres ...).

Par contre il n'en est pas de même pour Linux car il y a quand même, pour un "béotien" tel que moi, un minimum de vocabulaire technique spécifique à acquérir et tu contribues à cela avec tous tes articles (ou posts) multi-sujets.
Petit exemple, tu écris dans ton message #4 :
La sécurité que procure la gestion transactionnelle et les mises à jour "atomiques". Non, non, votre distribution ne vous explosera pas entre les doigts, c'est tout le contraire, rien — ou presque — ne pourra la casser.
Ce nouveau concept informatique renoue avec le sens étymologique du mot "atome" par lequel les philosophes anciens désignaient le plus petit élément de matière considéré comme indivisible (du grec ἄτομος, "qu'on ne peut pas couper, indivisible") — depuis, sa fission est au cœur des préoccupations de notre époque...
J'ai donc cherché à comprendre ce que voulait dire : "La sécurité que procure la gestion transactionnelle et les mises à jour "atomiques" ".
C'est comme ça et je n'y peux rien au risque de passer pour un "pinailleur".

Cependant, j'ai suivi ton conseil en créant une V.M. qui n'est pas "Machine" (n'a pas voulu se lancer) mais Virt-Manager.
Je te tiendrai au courant un peu plus tard car des tâches extérieures liées à la saison m'attendent. je vais donc y travailler épisodiquement.

Cordialement
2 J'aime ce message
Une grenouille au fond d'un puits n'aperçoit qu'un tout petit bout du ciel - Jigoro Kano
Répondre

Créer un compte ou se connecter pour rejoindre la discussion

Vous devez être membre pour pouvoir répondre

Créer votre compte

Inscrivez-vous pour rejoindre notre communauté.
Participez aux discussions !
Créez vos propres sujets !

S’enregistrer

Membre déjà inscrit