Voila Nixos, c'est le genre de distribution que quand on t'explique ça te fait penser à un truc futile, pour geeks, un truc pour développeurs et non pour être utilisé en simple utilisateur du dimanche, c'est totalement abstrait, on ne voit pas ce que ça peut apporter, du moins pas autant qu'une fois dans les mains, puis on se dit que ça demande des efforts, beaucoup car tout est à réapprendre sauf que ce qu'on y apprend est pour cette distribution et ne s'applique pas aux autres. Une fois qu'on la lance, c'est le bordel, on y comprends pas des masses, ça change beaucoup de ce qu'on connaît, on est perdu, on doit se taper un wiki et toute la documentation qu'on peut trouver… Enfin on tente des choses, mais chaque changement demande de rebuilder l'OS, comme avec un générateur de sites statiques (GSS), oui c'est ça si on veut comprendre ce que c'est que Nixos, faut prendre l'exemple des GSS, les distributions classiques (Arch, Debian, Fedora, Gentoo, openSUSE, Slack, Ubuntu…) sont comme les CMS, comme un Wordpress, un PluXml, ou encore un SPIP, on donne en directe ce que l'on veut et il nous donne directement ce que l'on souhaite, si on fait un changement c'est de suite que ça s'opère, généralement la configuration est explosé en plusieurs endroits. Si il y a une couille dans le pâté, c'est foutu, pas de retours en arrière, pas de sauvegardes, pas de possibilités de rattraper sans faire des sauvegardes par nous même. Or, Nixos est comme un GSS, comme Astro, Eleventy, Hexo, Hugo, Jeckyll, Pelican, Zola; on a un fichier pour régler comme on le souhaite, généralement un unique fichier mais on peut l'exploser pour qu'il soit plus visible, et lui va interpréter ce fichier pour construire notre site selon ce qu'on y a mit dedans, après une phase de build/compilation, le site est là. Comme pour les GSS, c'est un coup à prendre, au début on trouve ça durs et on ne voit pas trop les bénéfices, puis une fois dedans, on se demande comment on a pu faire autrement.
je l'ai donc installé une nouvelle fois, l'installation est vraiment facile avec l'installateur graphique qui nous pond un fichier de conf pré-mâché qui n'attends par la suite que les modifications voulues par l'utilisateur. Sinon, il y a l'autre façon de l'installer (Minimal ISO image), celui qui ne dépaysera pas les utilisateurs de Arch ou Gentoo, il suffit de booter sur un live usb et lire la documentation. L'administration est inexistante tout comme la maintenance qui pourra se faire automatiser mais j'en parlerais plus loin.
C'est simple, tout se passe dans le fichier /etc/nixos/configuration.nix
qui contient l'état désiré du système (ce que veut l'utilisateur) et la commande nixos-rebuild
applique et s'occupe de tout. Voyons voir un cas concret, prenons mon fichier:
# 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
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.supportedFilesystems = [ "ntfs" ];
networking.hostName = "debiancerlinux"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Paris";
# Select internationalisation properties.
i18n.defaultLocale = "fr_FR.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "fr_FR.UTF-8";
LC_IDENTIFICATION = "fr_FR.UTF-8";
LC_MEASUREMENT = "fr_FR.UTF-8";
LC_MONETARY = "fr_FR.UTF-8";
LC_NAME = "fr_FR.UTF-8";
LC_NUMERIC = "fr_FR.UTF-8";
LC_PAPER = "fr_FR.UTF-8";
LC_TELEPHONE = "fr_FR.UTF-8";
LC_TIME = "fr_FR.UTF-8";
};
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the GNOME Desktop Environment.
#services.xserver.displayManager.gdm.enable = true;
#services.xserver.desktopManager.gnome.enable = true;
services.gnome.games.enable = true;
# Enable the KDE Plasma Desktop Environment.
#services.xserver.displayManager.sddm.enable = true;
#services.xserver.desktopManager.plasma5.enable = true;
# Enable autres bureaux.
services.xserver.displayManager.lightdm.enable = true;
services.xserver.desktopManager.xfce.enable = true;
services.xserver.desktopManager.mate.enable = true;
#services.xserver.windowManager.xmonad.enable = true;
#services.xserver.windowManager.twm.enable = true;
#services.xserver.windowManager.icewm.enable = true;
#services.xserver.windowManager.i3.enable = true;
#services.xserver.windowManager.herbstluftwm.enable = true;
# Activer l'autologin.
services.xserver.displayManager.autoLogin.enable = true;
services.xserver.displayManager.autoLogin.user = "sebastien";
services.xserver.videoDrivers = [ "nvidia" ];
#services.xserver.displayManager.defaultSession = "gnome";
# Pour l'utilisation de flatpak:
services.flatpak.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
#xdg.portal.config.common.default = "gtk";
# Configure keymap in X11
services.xserver = {
layout = "fr";
xkbVariant = "";
};
# Configure console keymap
console.keyMap = "fr";
# Enable CUPS to print documents.
services.printing.enable = true;
services.printing.drivers = [ pkgs.hplip ];
services.avahi.enable = true;
# for a WiFi printer
services.avahi.openFirewall = true;
# for an USB printer
#services.ipp-usb.enable = true;
# scan
hardware.sane.enable = true;
hardware.sane.extraBackends = [ pkgs.hplipWithPlugin ];
# Activer le Bluetooth
hardware.bluetooth.enable = true;
#hardware.bluetooth.package = [ pkgs.bluez ];
services.blueman.enable = true;
hardware.bluetooth.powerOnBoot = false;
# Enable sound with pipewire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.sebastien = {
isNormalUser = true;
description = "Sebastien CHAVAUX";
extraGroups = [ "networkmanager" "wheel" "scanner" "lp" "disk" ];
packages = with pkgs; [
# firefox
# thunderbird
];
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# 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.
appimage-run
amber-theme
amule
aspell
aspellDicts.fr
blueman
bashInteractiveFHS
#bluez
bluez-tools
brasero
cataclysm-dda
claws-mail
deluge
detox
dgen-sdl
discord
enchant
fceux
firefox
filezilla
flare
#flatpak
gimp
git
glaxnimate
gnome.gnome-boxes
gnome.gnome-tweaks
gnome-multi-writer
gnomeExtensions.gsconnect
gnome.simple-scan
hexchat
hplip
htop
hugo
humanity-icon-theme
hunspell
hunspellDicts.fr-moderne
hunspellDicts.fr-any
hunspellDicts.fr-classique
ispell
libsForQt5.ghostwriter
libsForQt5.kdenlive
libsForQt5.soundkonverter
libsForQt5.libkdegames
libreoffice
gspell
mc
minidlna
minetest
mldonkey
mplayer
mpv
neofetch
nestopia
nodejs_18
ntfs3g
obs-studio
p7zip
pitivi
qbittorrent
quodlibet
retroarchFull
rocksndiamonds
scummvm
smplayer
soundconverter
sound-juicer
the-legend-of-edgar
thunderbird
typora
ubuntu_font_family
vlc
wesnoth
wget
wine-staging
#vscode-with-extensions
vscode-fhs
xsane
xarchiver
xfce.thunar-archive-plugin
xfce.thunar-volman
xfce.xfce4-pulseaudio-plugin
#xfce.xfce4-volumed-pulse
yaru-theme
yt-dlp
zeroadPackages.zeroad-unwrapped
zola
# wget
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
#services.openssh.enable = true;
#services.openssh.openFirewall = true;
#services.openssh.ports = [ 4444 ];
# Open ports in the firewall.
#networking.firewall.allowedTCPPorts = [ 4444 ];
#networking.firewall.allowedUDPPorts = [ 4444 ];
# Or disable the firewall altogether.
networking.firewall.enable = true;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It‘s perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "23.11"; # Did you read the comment?
system.autoUpgrade.enable = true;
system.autoUpgrade.allowReboot = false;
system.autoUpgrade.channel = "https://channels.nixos.org/nixos-23.11";
nix.optimise.automatic = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
nix.settings.auto-optimise-store = true;
##Commandes Experimentales
nix.settings.experimental-features = [ "flakes" "nix-command" ];
}
Commençons par le langage, c'est du nix
, c'est spécial, c'est pas pire que d'autres, c'est pas mieux, je trouve que le fichier de conf est compréhensible, d'après Wikipedia c'est un langage de programmation fonctionnel paresseux. Perso, je trouve que ça me fait penser de loin à JS, en même temps je ne suis pas développeur.
Maintenant qu'on a fait cet aparté, reprenons, ce fichier (configuration.nix) placé au bon endroit (/etc/nixos/) suivit d'un sudo nixos-rebuild switch
va demander au système de construire comme je l'entends mon OS:
- définir mon hostname:
networking.hostName = "debiancerlinux"; # Define your hostname.
- mes locales:
# Set your time zone.
time.timeZone = "Europe/Paris";
# Select internationalisation properties.
i18n.defaultLocale = "fr_FR.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "fr_FR.UTF-8";
LC_IDENTIFICATION = "fr_FR.UTF-8";
LC_MEASUREMENT = "fr_FR.UTF-8";
LC_MONETARY = "fr_FR.UTF-8";
LC_NAME = "fr_FR.UTF-8";
LC_NUMERIC = "fr_FR.UTF-8";
LC_PAPER = "fr_FR.UTF-8";
LC_TELEPHONE = "fr_FR.UTF-8";
LC_TIME = "fr_FR.UTF-8";
};
- activer l'interface graphique avec l'environnement qui va bien:
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the GNOME Desktop Environment.
#services.xserver.displayManager.gdm.enable = true;
#services.xserver.desktopManager.gnome.enable = true;
services.gnome.games.enable = true;
# Enable the KDE Plasma Desktop Environment.
#services.xserver.displayManager.sddm.enable = true;
#services.xserver.desktopManager.plasma5.enable = true;
# Enable autres bureaux.
services.xserver.displayManager.lightdm.enable = true;
services.xserver.desktopManager.xfce.enable = true;
services.xserver.desktopManager.mate.enable = true;
#services.xserver.windowManager.xmonad.enable = true;
#services.xserver.windowManager.twm.enable = true;
#services.xserver.windowManager.icewm.enable = true;
#services.xserver.windowManager.i3.enable = true;
#services.xserver.windowManager.herbstluftwm.enable = true;
- activer l'autologin pour mon utilisateur:
# Activer l'autologin.
services.xserver.displayManager.autoLogin.enable = true;
services.xserver.displayManager.autoLogin.user = "sebastien";
- utiliser les pilotes proprios de Nvidia:
services.xserver.videoDrivers = [ "nvidia" ];
#services.xserver.displayManager.defaultSession = "gnome";
Bon, je pense que vous avez compris un peu l'idée et que c'est assez explicite pour ne pas passer au scribe ligne par ligne, mais rajoutons tout de même le choix des paquets (logiciels) qu'on veut, ceux-ci sont déclarables au niveau de l'utilisateur (users.users.sebastien
) ou au niveau du système (environment.systemPackages
). Je peux déclarer les paquets pour l'ensemble des utilisateurs (typiquement les trucs tel que neofetch
, htop
, mc
) et je peux installer des paquets qui ne seront visibles qu'au niveau de l'utilisateur. Je pourrai très bien créer un second utilisateur et lui donner une autre liste de paquets, il n'aura pas les mêmes programmes d'installés, en gros il ne verra pas les programmes qui sont pour moi et moi je ne verrai pas les siens à moins qu'ils fassent partie de la déclaration du système ou qu'on l'a en commun et si paquets communs y a, les données sont mutualisés pour économiser de la place. Bref, chacun peut avoir son OS personnalisé sans empiéter sur celui des autres.
Si quelque chose ne va pas, il ne construit pas le système et nous préviens de ce qui ne va pas, nous donnant même un exemple de ce qui est attendu. Si c'est bon, il build (littéralement c'est de la compilation) et on reboot, on s'aperçoit alors qu'il nous a fait une ligne de plus dans le grub avec l'ancien système et le nouveau.
Alors pourquoi NixOS est mieux pour moi? C'est assez simple à comprendre, Debian était déjà ennuyeuse car elle nécessite une maintenance proche de zéro, avec Nixos on est sur du zéro maintenance puisque celle-ci se résume à l'édition du fichier configuration.nix
, rien d'autre. Si ce fichier ne bouge pas, il n'y a rien de changé, on peut aussi automatiser les mises à jour, mais on verra plus bas. Si changement, nixpkg va s'occuper de tout, tout seul, d'une façon invisible, comme par magie, un peu comme une boite noire et incompréhensible, c'est efficace, ça "justemarchecommeilfaut"!
De manière un peu obscure, cette magie s'occupe de désinstaller et d'installer ce qui est demandé, générer les configurations des services, faire une sauvegarde avant et après le build… C'est tellement puissant que je peux versionner ma config avec git. C'est tout aussi facilement que je reviens en arrière si je ne suis pas satisfait de mes changements.
Bref, le système est toujours dans un état propre et à jour. J'aime cette sensation du tank que ça procure, puisque le système aussi est versionné. Chaque nouveau nixos-rebuild
exécuté avec succès, ajoute une nouvelle entrée dans Grub pour charger votre système nouvellement créé. Actuellement, je peux choisir de booter sur différentes générations du système (différentes options sont disponibles tel que "NixOS generation 35 - 2024-05-15" ou "NixOS generation 36 - 2024-05-15") qui me permettent de facilement démarrer à un état antérieur du système. C'est simple, magique, ça "justemarche", j'adhère…
La gestion des paquets est vraiment originale, il n'y en a pas, pas comme on l'entends classiquement dans les autres distributions! C'est très simple je demande au système que tel logiciel soit disponible en l'ajoutant dans la liste des applications de configuration.nix
(vu plus haut) et lui s'occupe de tout. À l'inverse, je ne veux plus d'un logiciel, je supprime (ou commente) sa ligne dans configuration.nix
, c'est tout. Mon système est propre et il le reste, pas de dépendances restantes, pas de restes de configurations, ni de fichiers…
Exemple d'applications ajoutées:
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
appimage-run
amber-theme
amule
aspell
aspellDicts.fr
Exemple d'applications retirées:
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
#appimage-run
amber-theme
#amule
aspell
aspellDicts.fr
Notez que pour supprimer les logiciels appimage-run
et amule
j'ai seulement commenté (rajouté un # devant) les lignes et que j'aurais très bien pu supprimer les lignes directement.
Tous les fichiers de l'OS sont en lecture seule, il n'est pas possible d'éditer un fichier de configuration pour ajouter ou changer une option. Par exemple, pour Lightdm, il n'y aura pas de fichier lightdm.conf dans /ect pour automatiser la connexion d'un utilisateur, il suffira de rajouter deux lignes dans configuration.nix
:
# Activer l'autologin.
services.xserver.displayManager.autoLogin.enable = true;
services.xserver.displayManager.autoLogin.user = "sebastien";
Mais allons plus loin, admettons que je veux tester un truc, je sais pas moi, par exemple Element
un client pour matrix, juste le tester car il y a plein d'autres clients et je veux faire mon choix, pas la peine de l'installer, Nixos ou plutôt la commande Nix
va créer un nouvel environnement temporaire (shell) où le programme est disponible. Tant que je ne quitte pas le shell, j'aurais le programme , si je quitte le shell, l’environnement est détruit. J'aime bien ce que je lis un peu partout en parlant de Nixos: Pensez containers, mais sans les containers. Plus concrètement, sous Linux (et ailleurs aussi), quand on appelle un binaire ls
par exemple, le shell (bash par exemple) va chercher le chemin dans $PATH
, Nix utilise ça pour permettre de faire des "virtualenv" généralisés, quand on fait un nix-shell
, ça met temporairement dans le $PATH
le chemin des paquets demandés. Nix-env
(je n'en parle pas plus car on perd la puissance de Nix
pour l'utiliser comme un simple gestionnaire de paquets classique, style DNF
, APT
, Pacman
…) fonctionne pareil, sauf que ça le met dans virtualenv global (celui de la session utilisateur). En gros nix-shell
c'est comme bash -c 'source venv/bin/activate; bash'
, si on sort du shell les dépendances disparaissent. Prenons un cas concret, je vais repartir sur mon exemple avec Element
que je n'ai pas sur mon système:
[sebastien@debiancerlinux:~/git/11ty]$ element
The program 'element' is not in your PATH. It is provided by several packages.
You can make it available in an ephemeral shell by typing one of the following:
nix-shell -p element
nix-shell -p elements
nix-shell -p elementsd
nix-shell -p element-web
nix-shell -p element-desktop
nix-shell -p element-web-unwrapped
...
Je l'installe temporairement dans un shell et je le lance depuis celui-ci:
[sebastien@debiancerlinux:~/git/11ty]$nix-shell -p element-desktop
[nix-shell:~/git/11ty]$ element-desktop
Voila, je peux l'utiliser comme si il était réellement installer en durs sur mon système…
Pour quitter le shell:
[nix-shell:~/git/11ty]$ exit
exit
[sebastien@debiancerlinux:~/git/11ty]$
Ça permet de créer des environnements de développement reproductibles qu'on pourra partager. On fait notre shell.nix
qui aura tout le nécessaire à notre projet et un nix-shell
plus tard ça roule.
C'est une nouvelle façon de voir l'informatique, il n'y a plus de sens d'installer à tout va des applications qu'on utilise rarement, ces trucs dont je n'ai besoin que trop ponctuellement. Et puis les autres applications que j'utilise quotidiennement, voir plusieurs fois par jour et que je continue d'indiquer dans mon configuration.nix
.
# Temps de build
Posté par Pol' uX (site web personnel) . Évalué à 5.
Ça dure combien de temps cette phase de build ?
Adhérer à l'April, ça vous tente ?
[^] # Re: Temps de build
Posté par seb95 (site web personnel) . Évalué à 7.
Pardon, il ne build que si on a des paquets personnalisés, sinon il prend directement des binaires.
Avec mes personnalisations c'est vraiment rapides, mon OS entier ne prends à peine deux minutes pour être fait de zéro.
Sinon et c'est là que je vois qu'il n'est pas fini, j'ai oublié de l'automatisation, les updates sont totalement gérées automatiquement et au démarrage de ma bécane. Elles ne sont appliquées qu'au prochain reboot.
[^] # Re: Temps de build
Posté par Geobomatic . Évalué à 3.
C’est quoi « un paquet personnalisé » ? Super présentation sinon !
[^] # Re: Temps de build
Posté par seb95 (site web personnel) . Évalué à 2.
Merci, alors je parle de paquets personnalisés quand je parle de paquets que j'ai changé soit la version pour avoir une plus récente, soit une option de build, admettons une hypothétique option magic --enable-magic. Pour le reste c'est du binaires totale et même pour ceux qui sont personnalisé il y a moyen de les rendre binaires.
[^] # Re: Temps de build
Posté par Geobomatic . Évalué à 1.
Je me pose la même question. Ça avec des binaires, et je serais convaincu !
[^] # Re: Temps de build
Posté par Mimoza . Évalué à 3.
Tant que tu restes avec des paquet standard (CAD dans les repos) en moins de 10s ton système est «rebuildé» (dépend de la vitesse de ta connexion)
# En plus, il n'est pas nécessaire de remplacer sa distrib pour le tester
Posté par Leroy Frederic (site web personnel) . Évalué à 4.
Ça fait quelques semaines que je compte changer ma distrib.
En attendant d'avoir le temps de le faire j'ai déjà commencé à l'étudier et l'utiliser sur mes distribs.
Il est possible d'installer uniquement le gestionnaire de package sur arch, debian, …
Et cajustemarche(tm).
Ça permet d'utiliser des logiciels plus à jours ou manquants sur sa distrib par exemple.
[^] # Re: En plus, il n'est pas nécessaire de remplacer sa distrib pour le tester
Posté par cluxter . Évalué à 3.
J'ai commencé avec Debian, puis ArchLinux, et j'utilise maintenant NixOS depuis 2 ans sur mes ordis et serveurs.
Je trouve ça absolument génial. J'ai appris à empaqueter avec le langage nix, ce qui semble très difficile car la doc qu'on trouve est très technique et on ne trouve pour l'instant pas de tutos bien pédagogiques qui te prennent par la main quand tu pars de zéro. Mais une fois qu'on a compris comment ça fonctionne, c'est hyper simple en fait, le langage est très léger, le nombre d'instructions est très réduit et c'est vraiment puissant.
Je n'ai aucun doute que cette distrib va finir par s'imposer sur les serveurs à moyen terme car en gros on a la stabilité de Debian, les mises à jour d'ArchLinux (quasiment), et tout un tas d'autres trucs cools comme :
Je sais que j'oublie encore pas mal de trucs mais ce sont là les éléments qui m'impactent le plus au quotidien.
Dans les inconvénients : si on veut bien maîtriser la distrib (ie. la config et faire ses paquets au besoin), il faut apprendre le langage nix, qui n'est vraiment pas compliqué du tout. Ce qui est difficile pour l'instant c'est de comprendre comment fonctionne la distrib et comment nix fonctionne avec tout ça. En fait c'est juste un manque de doc pédagogique. À part ça j'ai franchement du mal à lui trouver un réel inconvénient. Peut être la communauté qui reste encore réduite, mais quand j'ai vu en 2 ans la croissance du nombre de participants des conférences NixOS au FOSDEM, j'ai compris que c'était la distrib qui allait tout défoncer ces prochaines années.
# /conf
Posté par devnewton 🍺 (site web personnel) . Évalué à 10.
Cela me semble bizarre de passer d'un système modulaire (chaque paquet a sa configuration) à une
base de registreconfiguration monolithique.Et si la configuration n'a pas été "nixifiée", comment on fait?
Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.
[^] # Re: /conf
Posté par barmic 🦦 . Évalué à 1.
Ce que fait NixOS c'est de générer les fichiers qui vont bien à partir de sa configuration centralisée (dans les fait
/etc/lightdm/lightdm.conf
est un lien symbolique vers la version actuellement utilisée dans le store/nix/store/*-lightdm.conf
). Cette intégration n'est pas plus une "nixification" que d'autres intégrations que fait debian pour gérer des configuration avec des dossiers *.d.Les fichiers sont en lecture seul, mais pas les dossiers il me semble.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: /conf
Posté par lewo . Évalué à 5.
La configuration n'est pas monolithique: il est possible de la splitter dans plusieurs fichiers, mais également de créer des modules qu'il est possible de composer. Ces modules peuvent ne concerner qu'un service, mais également un ensemble cohérent de services (comme une stack mail par exemple).
Bah, NixOS est plutot radical et pour que cela fonctionne, il faut tout nixifier, d'où le prix élevé du ticket d'entrée.
Cela dit, NixOS ne gère pas la configuration utilisateur, uniquement celle du système. Il est donc possible de ne commencer que par nixifier sa configuration système. Ensuite, home-manager est un projet permettant de nixifier sa configuration utilisateur.
[^] # Re: /conf
Posté par Mimoza . Évalué à 4.
On va pas se mentir, si tu personnalises très finement la configuration de tes logiciels tout en restant dans ce qui est définissable dans les fichiers Nix, tu vas sûrement te trouver limité, mais parfois il y un une clé «extraConfig» qui te permet de mettre de la config brut. C’est pas le plus élégant, mais efficace.
Il faut comprendre que tu ne seras plus pleinement maître de la conf de tes logiciels. Tu passes d’une conf «technique» à une déclaration «fonctionnel» de ce que tu souhaites. Ça peux faire peur mais finalement ça a des avantages non négligeable.
1/ Plus besoins de se plonger dans la doc de chaque brique de ton système
2/ Plus de risque d’avoir fait une conf dangereuse/ trop permissive.
3/ En cas de monté de version de la conf logiciel, c’est transparent pour toi
Le mieux est que tu peux capitaliser sur les confs Nix de base, pour offrir des services de plus haut niveau, tout en restant Nix.Pour illustrer ces avantages tu peux regarder SNM(Simple Nixos Mailserver), qui te permet de monter un serveur de mail (SMTP + IMAP) en une 20ène lignes, client web bonus (10 lignes) !
# petit disque
Posté par Lutin . Évalué à 4.
Avec un système versionné ça doit vitre prendre de la place non ? Il y a un système de rotation (ne garder que les x dernières images) ?
[^] # Re: petit disque
Posté par seb95 (site web personnel) . Évalué à 3.
C'est là que je m'aperçois qu'il aurait été mieux d'expliquer vraiment mon fichier de conf, je suis désolé.
Oui en effet, ça prend un peu de place, ceci étant dit pas vraiment plus que les snapshots de BTRFS d'après mes propres connaissances (limitées) ayant aussi des systèmes openSUSE.
On peut le faire manuellement (lancer en root car sinon seul l'user concerné fera le nettoyage)
nix-collect-garbage -d
, ou bien automatisé la chose, si je prends mon exemple:Je demande ici, de lancer
nix-collect-garbage -
de le faire chaque semaine automatiquement en retirant les "vieilleries" de plus de 7 jours.On pourrait le faire tous les jours à une heure fixe en lui disant de virer ce qui est vieux de 30 jours:
Ça c'est pour les snaphots du système.
Maintenant pour le store, on peut le faire manuellement
nix-collect-garbage
en root ou bien avec sudo.https://nixos.wiki/wiki/Storage_optimization#Automation
https://nixos.org/manual/nixos/stable/#sec-nix-gc
[^] # Re: petit disque
Posté par Lutin . Évalué à 5.
Ne désole pas ton journal est déjà super. En effet j’étais passé à coté de l'entrée nix.gc.
[^] # Re: petit disque
Posté par seb95 (site web personnel) . Évalué à 2.
Faut lire
nix-collect-garbage -d
[^] # Re: petit disque
Posté par barmic 🦦 . Évalué à 2.
D’expérience je te conseillerais de mettre un peu plus. Grosso modo si je veux utiliser un autre de grandeur "social" 1 jour, 1 semaine, 1 mois,… J'ai pris l'habitude de mettre un peu plus dans une forme de période de grâce. Tu a vite fait de faire un truc tous les mardis, mais que le mardi est être un peu limite pour te rendre compte que quelque chose est cassé.
Juste pour partager ma pratique
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: petit disque
Posté par seb95 (site web personnel) . Évalué à 1.
Quelque chose comme la documentation?
Je pratique depuis peu, j'ai des machines dessus depuis décembre, alors tous les conseils sont bons. Je vais remonter et comme la documentation, mettre 30.
Merci.
# Test
Posté par Cyprien (site web personnel) . Évalué à 2.
Si on veut tester, c'est possible de le faire sous VirtualBox (je crois que j'avais essayé il y a quelques années et je me suis cassé les dents…).
Sinon, il y a un partage de fichiers configuration.nix de différents utilisateur ?
[^] # Re: Test
Posté par Elfir3 . Évalué à 2.
Il me semble qu'il est aussi possible de tester la partie installation de logiciels depuis une autre distribution. Utile pour migrer petit à petit son système et voir si on colle avec l'idée de base du système.
Après une petite recherche: https://itsfoss.com/ubuntu-install-nix-package-manager/
[^] # Re: Test
Posté par seb95 (site web personnel) . Évalué à 1.
On peut bien sûr tester sous virtualbox, il faut par contre de mémoire dire à la conf qu'on le virtualise (https://nixos.org/manual/nixos/stable/#sec-installing-virtualbox-guest)
Tu peux directement mettre plusieurs utilisateurs dans le fichier de conf, ou bien le splitter, ou encore utiliser home.nix.
[^] # Re: Test
Posté par Elfir3 . Évalué à 2.
https://nixos.wiki/wiki/Nix_Installation_Guide#nix_2.0.27s_native_method
On dirait qu'en tout cas tu peux avoir ton propre repo en tant qu'utilisateur.
# J'ai franchi le cap aussi...
Posté par Andréas Livet . Évalué à 6.
et c'est pas si facile !
J'avais déjà pas mal fait joujou avec Guix (un gestionnaire de paquets très très inspiré de Nix, j'avais fait un ou deux trucs sur le sujet) il y a quelques années, et étais déjà tombé sur des soucis pas forcément évidents.
Cela faisait dès années que je tournais sur un vieux Xubuntu 18.04 et j'ai décidé d'installer NixOs comme Os principal sur ma machine. J'ai choisi NixOs à la place de GuixOs, car Guix est vraiment trop axé "libre" et je veux pouvoir utiliser des drivers non libres et parfois des logiciels non libres. De plus, NixOs c'est déjà un système de niche, alors GuixOs je vous en parle pas… pour trouver de l'aide, on se retrouve souvent sur le gestionnaire de bug du projet.
Comme toi, j'ai eu pas mal de galères ne serait-ce que pour bien intégrer tous les nouveaux concepts.
Ensuite, j'ai eu beaucoup de soucis matériel qui pour certains ne sont pas résolus : son qui ne sortait pas de mes haut-parleurs (bon visiblement c'est peut-être pas lié à NixOs), son qui ne sort pas de l'HDMI avec nouveau, j'ai donc du installer le drvier nvidia et là j'ai grave bataillé pour avoir quelque chose qui fonctionne a peu près, car j'ai une vielle carte… mon imprimante aussi ne fonctionne pas avec les paquets fournit par Nix, disque NTFS externe non montés automatiquement etc.
Bref, j'ai passé un nombre d'heures incalculable à essayer de régler ces problèmes. Tu me diras, ça m'a rappelé mes débuts sous linux où même sous Ubuntu fallait faire pas mal de bidouilles pour que ça marche.
En dehors de ça, j'ai eu quelques petites galères avec des paquets, mais rien de bien méchant. Le gros souci, je dirai c'est que si on a un problème, bah soit on se retrousse les manches et on apprend a faire des paquets nix (et j'ai beau être développeur depuis 15 ans, je trouve que c'est pas évident, bien entendu je veux pas y passer des jours), soit on est dépendant de la communauté.
Petit exemple, pour un projet sur lequel je travaille en ce moment, on utilise prisma, un ORM Node.js qui a besoin d'un moteur installé nativement. Il fournissent des binaires précompilés et généralement node se débrouille très bien pour installer le dernier binaire qui correspond à la version de la lib.
Mais sous Nix, comme les fichiers ne sont pas installés au même endroit, il faut installer le paquet prisma-engine qui n'est pas à jour. Bon, c'est déjà cool d'avoir un paquet, sinon j'aurai du le faire.
J'ai essayé de le mettre à jour "naïvement" en créant un overlay dans ma configuration et en changeant la version, mais j'ai eu des erreurs difficiles à debug.
Je suis sûr qu'en prenant quelques heures de plus, j'y serai arrivé, mais ce n'est pas donné à tout le monde.
Bref, je suis convaincu que les distrib comme NixOs c'est le futur, je suis même étonné que le concept n'ait pas déjà été repris plus largement par d'autres distrib. C'est tellement bien pensé que ça devrait être la base de toutes les distrib même.
Par contre, ça reste pour l'instant réservé à des connaisseurs qui veulent prendre du temps à apprendre et qui n'ont pas peur de mettre les mains dans le cambouis.
Ça manque d'outil un peu plus haut niveau, même les outils en ligne de commande sont pas évident à prendre en main. J'ai commencé à lister toutes ces remarques dans un article, je le publierai peut-être un jour… ou peut-être pas, comme une grande partie de ce que je fais ou j'écris…
En tout cas merci pour la dépêche.
[^] # Re: J'ai franchi le cap aussi...
Posté par seb95 (site web personnel) . Évalué à 2.
J'ai longtemps hésité entre les deux puis j'ai pris Nixos pour les mêmes raisons que tu cites par la suite. J'avais adoré ta dépêche.
Pareil, j'ai cherché pour pas mal de choses, surtout les disques externes dont je n'arrivais pas à voir la simplicité du problème: le manque de NTFS…
Mais comme tu dis :
Je suis totalement d'accord avec le fait qu'on est un peu seul, malgré le matrix par des gars supers (et des filles aussi) et leurs forums. Et je suis totalement dans l'idée que c'est ça le futur de linux.
J'aimerai bien lire tes remarques, ça me ferait peut être plancher.
[^] # Re: J'ai franchi le cap aussi...
Posté par Andréas Livet . Évalué à 3.
Bon en fait, j'ai pas tant que ça écrit. Voilà par exemple quelque chose qui m'a perturbé, car ce fonctionnement pour l'installation et la désinstallation de paquet n'est pas forcément très clairement indiqué quand on lit le wiki. Perso, je trouve que dans les autres distri c'est un poil plus simple et plus claire surtout.
Installer un package sans évaluer tous les paquets
Par défaut quand on lance
nix-env --install <nom du paquet>
nix va chercher le nom du paquet dans tous les paquets dispo…Le mieux est donc de lui préciser le nom exacte (ainsi que le nom du channel) et d’utiliser cette commande, exemple avec
libreoffice
:nix-env -iA nixos.libreoffice-fresh
Vous pouvez trouver la bonne ligne de commange à taper sur https://search.nixos.org/packages en cliquant sur le paquet que vous cherchez et dans l’onglet nix-env comme ça :
Lien vers image
Désinstaller un paquet
Etonnament, pour désinstaller un paquet, il ne faut pas utiliser le même nom qu’à l’installation.
Exemple, j’ai installer l’extension gnome suivante :
nix-env -iA nixos.gnomeExtensions.simple-monitor
Pour la désinstaller il faut tapper (Note : Il y a l’auto completion sur la cli):
nix-env --uninstall gnome-shell-extension-simple-monitor-8
Pour connaitre le nom du paquet, il faut faire :
nix-env --query --installed
[^] # Re: J'ai franchi le cap aussi...
Posté par Andréas Livet . Évalué à 2.
Chez moi les disques NTFS ne montent pas automatiquement. Les clés USB en Fat32 oui, mais pas en NTFS.
Dans la doc et sur le forum, il est toujours question de modifier sa configuration pour un device en particulier, mais il devrait y avoir moyen de monter automatiquement n'importe quel disque. Si tu as réussi, je veux bien l'astuce :).
[^] # Re: J'ai franchi le cap aussi...
Posté par seb95 (site web personnel) . Évalué à 2.
Pas grand chose, juste ajout du NTFS dans le fichier de conf, puis avec thunar monté automatiquement les médias…
[^] # Re: J'ai franchi le cap aussi...
Posté par seb95 (site web personnel) . Évalué à 2.
Si je te donne pas la bonne sortie, ça ne t'avancera pas ;p
[^] # Re: J'ai franchi le cap aussi...
Posté par Andréas Livet . Évalué à 1.
A je suis resté sous Gnome 3, mais merci.
Bon j'avoue ça va pour les disque NTFS c'est pas trop grave et j'ai vraiment pas pris le temps de chercher sérieusement ;).
[^] # Re: J'ai franchi le cap aussi...
Posté par Lucky Seven . Évalué à 1.
Oui c'est l'aspect qui a découragé beaucoup de monde, notamment les firmwares Intel qui ne sont pas livrés alors qu'ils s'agit souvent de correction de securité…
Cependant, il y a un repo non-libre qui existe : https://gitlab.com/nonguix/nonguix
Sinon, il y a cette chaîne YouTube, qui parle beaucoup de Guix (et Guile, et Emacs) : https://www.youtube.com/@SystemCrafters/featured
[^] # Re: J'ai franchi le cap aussi...
Posté par seb95 (site web personnel) . Évalué à 1. Dernière modification le 01 juin 2024 à 11:14.
Faudrait vraiment que je me lance avec elle sur une autre machine, c'est en projet, ça et Aeon de SUSE/openSUSE qui est encore autre chose…
[^] # Re: J'ai franchi le cap aussi...
Posté par Andréas Livet . Évalué à 1. Dernière modification le 06 juin 2024 à 10:15.
Oui je sais qu'il y a les dépôt non-libres, et honnêtement je suis impressionné par le travail fait sur Guix, notamment sur tout l'aspect "reproductible" et aussi la démarche de tout pouvoir compiler à partir des sources, c'est vraiment énorme ce qu'ils sont arrivé à faire :https://guix.gnu.org/en/blog/2023/the-full-source-bootstrap-building-from-source-all-the-way-down/
Comme je disais, ce qui me "rebute" un peu sur Guix c'est surtout la communauté moins importante et le côté très "old school" des outils de communication et de gestion du projet utilisés. Perso, je trouve que les forum type discourse sont vraiment très bien fait et les outils type gitlab sont top pour la gestion de bug et de code.
Merci pour le lien je ne connaissais pas cette chaîne.
# Magasin d'application graphique
Posté par nathanaelh . Évalué à 1.
Bonjour, merci pour ce journal très intéressant. J'ai hésité en début d'année à installer NixOS comme distribution principale, et je n'ai pas osé faire ce changement. J'ai donc choisi ArchLinux parce qu'avec les paquets AUR je trouve tout ce dont j'ai besoin, même le dernière réécriture d'un outil de base en rust avec de la couleur qui est à la mode ^
Bref. Dans ce journal tu insistes énormément sur la solidité du système et la possibilité de revenir en arrière si une mise à jour échoue. Cela m'intéresserait pour des utilisateurs non tech, dans la famille par exemple. Mais est-ce qu'il y a un genre d'App Store graphique de dispo pour ajouter des paquets et aussi une GUI pour gérer son fichier de conf *.nix ?
[^] # Re: Magasin d'application graphique
Posté par ElVirolo (site web personnel) . Évalué à 2.
Il y en a un ici : https://github.com/snowfallorg/nix-software-center
https://github.com/snowfallorg/nixos-conf-editor
Tu peux aussi jeter un œil à https://snowflakeos.org/ (toujours en alpha).
[^] # Re: Magasin d'application graphique
Posté par nathanaelh . Évalué à 1.
Merci, je vais surveiller SnowflakesOS. Les deux autres apps mentionnées ont l'air d'avoir une interface bien jolie et pratique pour un utilisateur non tech.
# Gouvernance critiquable
Posté par Mimoza . Évalué à 3.
Au-delà de la technique, il est intéressant de regarder les personnes derrière le projet.
Et malheureusement la fondation qui gère Nix ne semble pas toute rose : https://dataswamp.org/~solene/2024-04-27-nix-internal-crisis.htm
De mon point de vue, pour l’instant rien de critique. Donc ça ne m’empêche pas de l’utiliser sur mes serveurs.
[^] # Re: Gouvernance critiquable
Posté par barmic 🦦 . Évalué à 2.
La cabale s'est occupé de ton lien
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Gouvernance critiquable
Posté par seb95 (site web personnel) . Évalué à 1.
https://dataswamp.org/%7Esolene/2024-04-27-nix-internal-crisis.html
[^] # Re: Gouvernance critiquable
Posté par seb95 (site web personnel) . Évalué à 2.
Bon pour la première raison honnêtement pour avoir contribuer à d'autres projets dont deux grosses distributions linux, je peux au moins en citer une où c'est pas la joie non plus…
La deuxième est plus recevable, en même temps, sur n'importe quelle distribution il est facile d'injecter des choses, on a pu voir XZ.
[^] # Re: Gouvernance critiquable
Posté par Andréas Livet . Évalué à 1.
Marrant qu'elle cite Guix dans l'article (déso je traduis pas) :
C'est clairement ce que j'ai ressenti aussi avec la communauté Guix.
Sinon, je trouve aussi que le concept de "Flake" aide pas trop au début, on ne comprend vraiment pas ce que c'est, pourquoi c'est là, quel est la différence avec les autres types de paquets. Bref, de l'extérieur, ça fait désordre et c'est pas évident de s'y retrouver.
# Distribution au top
Posté par ptit_poulet . Évalué à 3.
Je confirme NixOS c'est top.
Il y a quelques mois ma femme n'en pouvait plus de son PC portable sous Windows 11. C'est un PC d'entrée de gamme, 180€ sur Amazon, donc pas un foudre de guerre. Et sous Windows 11 une horreur à l'utilisation.
Du coup je comptais le passer sous Debian que j'utilise régulièrement dans sa versions serveur.
Et avant de sauter le pas, j'ai voulu trouver quelque chose où il y a 0 maintenance ou que je peux préparer en amont sans monopoliser son PC.
Je me suis souvenu qu'il y avait quelques années j'avais croisé NixOS, mais la documentation était assez pauvre et la 1ère marche plus haute du coup.
J'ai testé en version Live pour tester une configuration. Tout était ok, que ce soit des installations simples de logiciel, plus poussé style SyncThing avec toute sa configuration, en passant par l'imprimante/scanner réseau… Comme tout fonctionnait je suis passé à l'installation sans travail supplémentaire puisque le fichier de configuration était déjà prêt.
Résultat, le PC revit, il est rapide, ne plante plus, autonomie de 8h sans soucis (grosse surprise par rapport à Windows 11). Et madame est contente, ouffff :D
Du coup prochaine étape bascule de mon PC portable sur NixOS !
Et sûrement de mes différents serveurs petit à petit.
# Merci pour cette chouette dépêche
Posté par ploum (site web personnel, Mastodon) . Évalué à 2.
C’est vraiment intéressant à lire. Ça fait quelques temps que je zieute NixOS et Guix mais on ne se sépare pas aussi facilement de 25 années d’apt-get ;-)profiles ?
Mes livres CC By-SA : https://ploum.net/livres.html
[^] # Re: Merci pour cette chouette dépêche
Posté par ptit_poulet . Évalué à 0.
En fait quand tu as goûté à NixOS et que tu sais que quand tu auras construit ton install aux petits oignons tu le feras plus jamais ça motive :D
[^] # Re: Merci pour cette chouette dépêche
Posté par seb95 (site web personnel) . Évalué à 1.
Pareil sauf seulement 17 ans de Debian, avec du SUSE… Mais une fois gouté à ce genre de distributions, c'est durs de revenir sur du plus classique.
Et puis ta config te suit, du coup dans mon cas j'ai déjà exporter sur 5 autres machines.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.