L’heure du test est un rendez‐vous qui vous propose de nombreux tests et guides d’installation de distributions, étape par étape et en exposant leurs avantages et leurs inconvénients.
Aujourd’hui, on s’attaque à une distribution qui est un peu particulière, j’ai nommé NixOS !
Sommaire
- NixOS ?
- Télécharger NixOS
- Installer NixOS
- Découverte de NixOS
- Conclusion
NixOS ?
NixOs dont le slogan est « La distribution purement fonctionnelle » est une distribution GNU/Linux avec une approche unique pour la gestion des paquets et la configuration.
NixOS est construit au‐dessus du gestionnaire de paquets Nix, qui est déclaratif, ce qui rend les mises à niveau de paquets fiables et présente de nombreux autres avantages.
Vous pouvez configurer votre système dans le langage de NixOS via un ensemble de fichiers de configuration.
NixOS possède un mécanisme de mise à jour et de retour en arrière. Imaginons que vous changiez une configuration ou que vous fassiez une mise à jour d’un logiciel de votre système qui le fait planter, vous pouvez revenir en arrière en annulant les modifications effectuées.
De même, il est possible de mélanger des paquets sources et binaires.
Télécharger NixOS
Pour télécharger NixOS, cela se passe ici : télécharger NixOS.
Vous avez le choix entre différentes installations :
- en téléchargeant l’ISO pour ensuite la graver sur un CD/DVD ou sur une clef USB (disponible en 32 bits et 64 bits) vous avez deux possibilités : soit prendre un CD autonome (live CD) pour pouvoir tester NixOS sans l’installer, soit télécharger l’installation minimale pour uniquement l’installer ;
- via une machine tout prête pour être importée dans VirtualBox, mais uniquement pour l’architecture 64 bits ;
- pour l’installer sur l’hébergement Amazon EC2 ;
- ou pour la plate‐forme Microsoft Azure.
Pour VirtualBox, comme dit précédemment, vous pouvez utiliser une image tout prête de la machine, mais c’est plus ludique de faire tout le processus d’installation.
Installer NixOS
Configuration du BIOS
Commencez par démarrer sur votre CD/DVD ou via votre clef USB. En changeant l’ordre d’amorçage dans votre BIOS, si ce n’est pas déjà fait, ou en accédant au menu d’amorçage rapide.
Ensuite, vous vous retrouvez devant la console root.
Configurer votre clavier
Commencez par mettre le terminal en clavier Francais (AZERTY) avec : loadkeys fr
. Si vous êtes en bépo : loadkeys fr-bepo
.
Connexion à Internet
Tout d’abord :
- si vous êtes en Wi‐Fi, vous devez configurer votre accès à Internet ;
- si vous êtes en Ethernet, la connexion se fait automatiquement.
Ensuite, on va tester pour voir si on est bien connecté à Internet, car c’est nécessaire pour installer le système en faisant un : ping www.google.fr
. Si vous recevez une réponse, c’est que c’est bon !
Partitionnement
Ensuite, on va partitionner notre disque dur en utilisant l’utilitaire fdisk
et mkfs.etx4
.
Commencez par lister vos partitions sur vos disques en faisant : fdisk -l
.
Formatez ensuite la première partition pour installer le système :mkfs.ext4 -L nixos /dev/sda1
On configure NixOS
Pour configurer NixOs il faut éditer le fichier : /mnt/etc/nixos/configuration.nix
. Grâce à ce fichier de configuration vous pouvez paramétrer tout de votre système Nix.
Que ce soit :
- la configuration du système horaire ;
- le chargeur de boot par exemple Grub ;
- la configuration des utilisateurs de la machine ;
- les paquet de base disponibles pour tous les utilisateur de la machine ;
- la configuration de votre serveur graphique type Xorg ou encore Wayland ;
- la configuration du réseau ;
- la configuration de votre gestionnaire de bureau KDE, Gnome, E17, XFCE et autres et votre gestionnaire de fenêtre awesome, twm, i3, openbox, compiz.
On monte la partition /dev/sda1
qui a comme libellé « nixos » dans /mnt
:mount LABEL=nixos /mnt
Ensuite, on va générer un fichier de configuration initial :nixos-generate-config --root /mnt
Ensuite, on peut commencer à configurer NixOS à notre sauce :nano /mnt/etc/nixos/configuration.nix
Configurer Grub
Ajoutez tout d’abord le démarrage sur le premier disque /dev/sda
:boot.loader.grub.device = "/dev/sda";
Configurer NixOS pour VirtualBox
Si vous êtes sous VirtualBox, dans le fichier, ajoutez la ligne permettant à NixOS de savoir qu’il se situe dans une machine virtuelle :virtualisation.virtualbox.guest.enable = true;
Ajoutez la ligne pour désactiver la vérification des journaux du système de fichiers :boot.initrd.checkJournalingFS = false;
Configurer l’interface graphique
Installer X.org
Vous pouvez activer l’affichage de l’écran de connexion (par exemple sddm) dès le démarrage : services.xserver.displayManager.sddm.enable = true;
et activer l’utilisateur par défaut avec :
services.xserver.displayManager.sddm.autoLogin = {
user = "votre_login";
enable = true;
};
Installer un gestionnaire de bureau
Si vous voulez installer, par exemple :
-
KDE 5 :
services.xserver.desktopManager.kde5.enable = true;
; -
GNOME 3 :
services.xserver.desktopManager.gnome3.enable = true;
; -
Xfce :
services.xserver.desktopManager.xfce.enable = true;
; -
E17 :
services.xserver.desktopManager.e17.enable = true;
.
Installer un gestionnaire de fenêtres
C’est le même principe pour les gestionnaires de fenêtres. Par exemple, pour installer twm :services.xserver.windowManager.twm.enable = true;
Pour Awesome :services.xserver.windowManager.awesome.enable = true;
Installer des applications pour tous les utilisateurs
On peut installer une application pour tous les utilisateurs. Par exemple, pour Emacs, vous devez écrire :environment.systemPackages = [ pkgs.emacs ];
Finalisation de l’installation
Une fois votre système configuré, vous pouvez lancer l’installation de NixOS :nixos-install
Découverte de NixOS
Le gestionnaire de paquetages Nix
L’une des particularités de NixOS est que vous pouvez installer des applications sans droit root. Dans ce cas, l’application est uniquement visible sur le compte d’utilisateur pour lequel vous l’avez installée.
Installer et désinstaller une application pour un compte utilisateur
L’installation d’une application se fait via la commande :nix-env --install firefox
On peut voir que Firefox est installé.
Maintenant essayons de désinstaller Firefox :nix-env --uninstall firefox
Revenir en arrière
Bien sûr, là, Firefox est désinstallé ; mais pas vraiment, car si vous faites un :nix-env --rollback
Alors, Firefox est de retour ; cette commande annule l’action précédente, c’est‐à‐dire la désinstallation de Firefox.
Nettoyer le cache
Vu que le paquet n’est pas totalement désinstallé, cela occasionne des pertes d’espace disque ; une des solutions est de lancer la commande :nix-env --delete-generations old
suivie par :nix-collect-garbage
pour supprimer complètement les programmes désinstallés.
Attention, si vous n’avez plus d’espace disque, certains programmes qui ont besoin d’écrire des choses sur le disque peuvent refuser de fonctionner et cela peut provoquer une instabilité du système.
Pour lister l’ensemble des paquets présents sur Nix : nix-env -qa
.
Le système de channel
NixOS possède un système de canal qui permet de choisir les versions sur lesquelles on veut faire des mises à jour.
Lister les channels
Pour savoir le canal qu'on suit taper simplement :nix-channel --list
Pour connaître la liste des canaux que vous pouvez utiliser, vous pouvez aller sur le dépôt de NixOS, les canaux que vous pouvez suivre commencent par le préfixe nixos-
.
Changer de channel
Supposons que vous souhaitiez suivre le canal de mise à jour de la version 14.12 de NixOS. Vous pouvez simplement le suivre en tapant : nix-channel --add https://nixos.org/channels/nixos-14.12 nixos
(root)
Et ensuite taper :nixos-rebuild switch --upgrade
(root)
Pour mettre à jour vers cette version. Si, par exemple, vous étiez à la 16.09, vous rétrogradez vers la 14.12.
Conclusion
NixOS est vraiment une super distribution, peu importe l’erreur que vous faites, vous pouvez revenir en arrière. La configuration du système est très simple, vous n’avez pas à jongler avec les fichiers de configuration, tout se fait dans un seul. Et, ça, c’est cool !
Note finale : 9/10
Aller plus loin
- Site officiel de la distribution (1505 clics)
- Page Wikipédia de NixOS (547 clics)
- Dépêche très complète sur NixOS (554 clics)
- Dépêche précédente sur NixOS (134 clics)
# Euh…
Posté par barmic . Évalué à 0.
J'aurais plutôt
disécris :Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
# configuration
Posté par Goffi (site web personnel, Mastodon) . Évalué à 7.
Ce n'est pas la première fois que j'en entends parler, et c'est vraiment intéressant, merci pour la dépêche.
Comment ça marche pour le fichier de configuration unique ? Le coup des paquets, des locales, etc pas de soucis. Mais pour les fichiers de confs dans les différents formats, il faut bien que ça passe par /etc/ non ? Si la conf est générée depuis le fichier unique, comment est faite la correspondance (mapping) ? Est-ce qu'il n'y a pas un risque qu'une option ne soit pas disponible ? Et la doc du coup est totalement différente non ?
exemple concret : comment je change mon port ssh ? Comment je décide de quels services démarrent avec un fichier unique ?
[^] # Re: configuration
Posté par Katyucha (site web personnel) . Évalué à 3.
Par exemple =>
Ma conf de ssh
openssh = {
enable = true;
passwordAuthentication=false;
permitRootLogin="no";
} ;
Tu me parles du port => Je regarde le fichier descriptif :
https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/networking/ssh/sshd.nix
Donc j'aurais juste à rajouter, par exemple :
ports = [44] ;
Et pour ta deuxième question => Bah regarde la description de mon openssh => enable = true ;
vala :)
[^] # Plus difficile
Posté par Arthur Accroc . Évalué à 6.
Bon, les fichiers de configuration, il gère.
J’ai regardé aussi pour X.org, il semble que NixOS permette assez librement les configurations habituelles (utile par exemple pour une configuration fine du pavé tactile).
Par contre, supposons que je veuille modifier un fichier qui n’est pas un fichier de configuration.
Par exemple, modifier la disposition de clavier Bépo pour échanger les guillemets français et les chevrons.
Sur une distribution classique, je peux soit modifier la disposition Bépo existante dans le fichier
/usr/share/X11/xkb/symbols/fr
façon sagouin, soit ajouter une nouvelle disposition dans ce fichier ou dans un fichier indépendant, mais dans ce cas il faut que je la déclare dans/usr/share/X11/xkb/rules/evdev.xml
(voire dans d’autres fichiers du répertoirerules
) pour qu’elle soit correctement prise en compte. En tout cas, il faut modifier au moins un fichier existant.De ce que j’ai compris de NixOS, on n’est pas sensé écrire directement dans les fichiers du système et comme ça n’est pas considéré comme un fichier de configuration, il n’y a certainement pas de fichier xkb.nix (en tout cas, je n’en ai pas vu) permettant de le gérer. Donc comment peut-on procéder pour faire ce genre de modification ?
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Plus difficile
Posté par barmic . Évalué à 3.
Créer un paquet nix pour ça ? Ça n'a pas l'air bien compliqué.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Plus difficile
Posté par Arthur Accroc . Évalué à 2.
Reste la question de savoir si tu es obligé de refaire le paquet de xkb, ce qui implique de le refaire à chaque nouvelle version.
Avec les .deb (bien compliqués pour le coup), il me semble qu’un mécanisme (dont le nom ne me revient malheureusement pas…) rend possible de faire un paquet qui puisse modifier automatiquement un fichier d’un autre paquet quand celui-ci est mis à jour (une complication plus utile que de conserver un tas de trucs historiques qui ne servent plus depuis des années…).
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Plus difficile
Posté par barmic . Évalué à 4.
dpkg-divert tu peux t'en servir sans avoir besoin de créer un paquet.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # dpkg-divert !
Posté par Arthur Accroc . Évalué à 2.
Merci, c’est ce que je cherchais.
Autant il y a plein de complications dans Debian et ses dérivées que je considère superflues (dans le système de paquets, mais aussi des fichiers de configuration qui font doublons avec ceux d’origine des logiciels concernés), autant cette fonctionnalité manque cruellement aux autres distributions.
Non pas qu’on en ait besoin souvent, mais quand on en a besoin et qu’on ne l’a pas, on doit surveiller chaque mise à jour pour vérifier que la modification qu’on a faite ne saute pas. C’est lourd.
Refaire un paquet, c’est la solution propre avec une autre distribution, mais devoir le refaire à chaque mise à jour du paquet d’origine, c’est encore plus lourd que de restaurer la modification à la main.
Quand j’administrais des Fedora, je scriptais mes modifications. Le script commençait par faire la mise à jour des paquets, puis rejouait les modifications si elles n’étaient plus en place. C’est ce que j’avais trouvé de plus pratique.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Plus difficile
Posté par galbolle . Évalué à 3.
La solution ici serait de faire un «override» local du paquet, comme expliqué ici. L'exemple qui est donné dans le manuel change la source du paquet (en l'occurence pour construire emacs à partir des sources locales). Pour patcher un fichier au moment de la construction du paquet, il faudrait utiliser un truc comme suit:
Malheureusement, ça va imposer des reconstructions de plein de chose (a minima, xorg lui-même), car nix ne sait pas à l'avance quelle seront les conséquences de ce changement dans un fichier des sources (seront-elles bénignes ou radicales), donc il considère qu'il doit reconstruire tout ce qui dépend de xorg.
[^] # Re: configuration
Posté par lancelotsix . Évalué à 3.
Il est également possible de regarder http://nixos.org/nixos/options.html pour trouver les options disponibles. C’est en général plus rapide de regarder là que dans la source du service.
Par exemple pour openssh, http://nixos.org/nixos/options.html#services.openssh donnera toutes les options utiles.
[^] # Re: configuration
Posté par 41px . Évalué à 1.
Lister les options :
Exemple pour le port ssh :
[^] # Re: configuration
Posté par lancelotsix . Évalué à 4.
Très bonne question ;)
En général, ce qui est favorisé est que le service NixOS expose des options qui sont exprimables dans le langage de Nix pour avoir une configuration déclarative.
Ce qui se passe derrière, c’est que le fichier de configuration « réel » est généré en fonction de ce qui a été déclaré dans le DSL nix. Il est tout à fait possible que des options ne soient pas accessibles via le DSL nix. En général, les mainteneurs exposent les principales configurations via des attributs nix, et pour le reste il y a souvent un attribut « fourre tout » qui va contenir un blob de texte qui va être inséré direct dans le fichier de conf généré.
Pour openssh, ce paramètre magique est
services.openssh.extraConfig
.On peut donc facilement avoir une déclaration comme ça :
Pour ce qui est de la localisation des fichiers de config, autant que faire ce peut, elles ne sont pas dans
/etc
. Les configurations sont un résultat d’après la config de l’utilisateur, et sont donc rangées avec tous les résultats, dans/nix/store
. Dans la majorité des cas, les scripts de lancement des services (ici l’unit systemd) va lancer openssh en lui spécifiant où trouver le fichier de configuration :Bien sur,
sshd.service
est également généré via nix, il est donc lui-même dans/nix/store
:C’est ce mécanisme qui fait qu’il est simple de passer d’une config / version à l’autre « juste » en mettant à jours un lien symbolique.
# mouais...
Posté par nokomprendo (site web personnel) . Évalué à 10.
Salut
D'avance désolé de râler mais je ne vois pas trop l'intérêt d'un nième test de distrib du style "je décris l'install du système et quelques logiciels/configs/commandes de base". Tout le monde peut faire ça soi-même en passant 1/2h sur la doc et une machine virtuelle. Ce qui serait vraiment intéressant, ce serait plutôt un retour d'expérience de quelqu'un qui utilise la distrib tous les jours depuis au moins un an.
Concernant NixOS, l'intérêt tient surtout dans son système de paquetage (qui est d'ailleurs utilisable sur n'importe quelle distrib classique) et sur les "nix expressions" qui permettent à un développeur ou à un admin sys de créer des environnements virtuels légers et reproductibles; or l'article n'en parle pas vraiment (et encore moins de la façon de les mettre en oeuvre).
Cela dit, NixOS est une distrib vraiment intéressante et cet article a le mérite d'en parler donc merci pour ça.
[^] # Re: mouais...
Posté par MTux . Évalué à -1.
Y'a écrit "épisode 1"…
[^] # Re: mouais...
Posté par nokomprendo (site web personnel) . Évalué à 9.
oui, y'a même écrit "épisode 1 - NixOS"
donc pour moi, ça veut dire que l'épisode 2 sera sur une autre distrib; et je ne vois rien qui laisse penser le contraire
[^] # Re: mouais...
Posté par ZeroHeure . Évalué à 9.
Il est d'ailleurs en cours de rédaction… http://linuxfr.org/redaction/news/l-heure-du-test-episode-2-linux-mint Il ne tient qu'à vous, lecteurs, de rendre ce genre d'articles plus intéressant, en y participant.
"La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay
[^] # Re: mouais...
Posté par Katyucha (site web personnel) . Évalué à 1.
T'inquiete pas, on est sous Linux, rien n'est imposé. J'adore cette distro épicétout !
# Logo
Posté par Ant . Évalué à -4.
Était-ce vraiment nécessaire, cet énorme logo ?
Rien que cela ça m'énerve, je n'ai pas envie de lire la dépêche.
[^] # Re: Logo
Posté par xcomcmdr . Évalué à 7.
Ne lis pas la dépêche alors.
"Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)
[^] # Re: Logo
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
Le logo était trop grand, ça arrive quand le site d'origine utilise une grande image mais en le redimensionnant et que celui qui l'ajoute à un grand écran (ie la taille de l'image ne le choque pas).
# Merci
Posté par gusterhack . Évalué à 6.
Merci, pour vos commentaires, critique ( positive et négatifs).
# Une configuration non à jours
Posté par lancelotsix . Évalué à 3.
Bonjour,
Je me permet de signaler un changement récent qui est intervenu dans la dernière release (
17.03
).Pour activer KDE5, il ne faut plus utiliser
comme indiqué dans la dépêche, mais
Au « pire », le lecteur curieux essayant avec la configuration de la dépêche aura un message l’invitant à renommer
kde5
enplasma5
, donc rien de bien méchant ;)[^] # Re: Une configuration non à jours
Posté par gusterhack . Évalué à 2. Dernière modification le 03 mai 2017 à 19:00.
Merci de la précision j'avais pas vue ce changement. :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.