Journal Nixos la distribution reproductible et déclaratif.

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
31
30
mai
2024

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  (site web personnel) . Évalué à 5 (+4/-1).

    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.

    Ça dure combien de temps cette phase de build ?

    Adhérer à l'April, ça vous tente ?

    • [^] # Re: Temps de build

      Posté par  (site web personnel) . Évalué à 7 (+6/-0).

      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  . Évalué à 3 (+3/-0).

        C’est quoi « un paquet personnalisé » ? Super présentation sinon !

        • [^] # Re: Temps de build

          Posté par  (site web personnel) . Évalué à 2 (+1/-0).

          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  . Évalué à 1 (+1/-0).

      Je me pose la même question. Ça avec des binaires, et je serais convaincu !

      • [^] # Re: Temps de build

        Posté par  . Évalué à 3 (+1/-0).

        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  (site web personnel) . Évalué à 4 (+4/-0).

    Ç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  . Évalué à 3 (+2/-0).

      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 :

      • rollbacks directement depuis le menu du bootloader sans que ça ne réécrive quoi que ce soit
      • mises à jour auto qui ne s'appliquent qu'au reboot si on veut
      • protection en lecture seule du store (là où sont stockés tous les binaires) qui fait que même root ne peut pas modifier le contenu
      • config versionnable, ce qui veut dire qu'on versionne tout son OS avec quelques fichiers textes (assez dingue)
      • reproductibilité d'une machine à l'autre, donc gain de temps considérable
      • composition de la config avec des modules : on écrit une fois et on réutilise partout où on en a besoin (je me suis fait 1 module pour chaque logiciel, comme ça je compose ma liste de logiciels selon la machine, et il est déjà tout configuré, j'ai juste un import à faire)
      • capacité à build la config sur une autre machine et à installer en local le résultat des builds (hyper cool pour les ordis portables : on build tout sur un serveur puissant, et quand c'est terminé il fait un simple copier/coller des binaires en SSH depuis le serveur vers l'ordi portable, pour la batterie c'est top et ça décharge complètement le CPU, donc on peut continuer à travailler tranquillement ; et si un paquet a déjà été build, il va être repris depuis le cache donc il n'y aura qu'un copier/coller, ça mutualise les ressources entre toutes les machines, c'est assez canon)
      • on peut se créer autant d'environnements qu'on veut, chaque environnement tournant dans un shell isolé : ça permet d'utiliser 10 versions de Python (ou Node.js, ou Firefox, ou n'importe quel logiciel ou bibliothèque) sur la même machine ; méga méga pratique pour le dév, ou quand on travaille avec différents clients ou équipes qui ont chacun des versions différentes. Et bien sûr ça veut dire qu'on peut aussi avoir un environnement avec des variables d'environnement pour chaque projet, avec une config de son IDE pour chaque projet. Tellement pratique.

      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  (site web personnel) . Évalué à 10 (+8/-0).

    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

    Cela me semble bizarre de passer d'un système modulaire (chaque paquet a sa configuration) à une base de registre configuration 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  . Évalué à 1 (+0/-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.

      Et si la configuration n'a pas été "nixifiée", comment on fait?

      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  . Évalué à 5 (+5/-0).

      Cela me semble bizarre de passer d'un système modulaire (chaque paquet a sa configuration) à une base de registre configuration monolithique.

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

      Et si la configuration n'a pas été "nixifiée", comment on fait?

      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  . Évalué à 3 (+1/-0).

      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  . Évalué à 4 (+2/-0).

    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  (site web personnel) . Évalué à 3 (+2/-0).

      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.

      NixOS conserve les anciennes configurations de votre système afin que vous puissiez toujours revenir à une configuration précédente en cas de problème. Vous pouvez également sélectionner la génération dans laquelle démarrer via GRUB.

      Cependant, ces générations précédentes sont des racines GC qui peuvent conserver des logiciels anciens et inutiles dans votre magasin nix. Vous pouvez vérifier les générations de système dont vous disposez

      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:

        nix.gc = {
         automatic = true;
         dates = "weekly";
         options = "--delete-older-than 7d";

      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:

      nix.gc = {
        automatic = true;
        interval = { Weekday = 0; Hour = 3; Minute = 45; };
        options = "--delete-older-than 30d";
      };

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

      nix.optimise.automatic = true;
      nix.optimise.dates = [ "03:45" ]; # Optional; allows customizing optimisation schedule

      https://nixos.wiki/wiki/Storage_optimization#Automation
      https://nixos.org/manual/nixos/stable/#sec-nix-gc

      • [^] # Re: petit disque

        Posté par  . Évalué à 5 (+3/-0).

        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  (site web personnel) . Évalué à 2 (+1/-0).

        Je demande ici, de lancer nix-collect-garbage - de le faire chaque semaine automatiquement en retirant les "vieilleries" de plus de 7 jours.

        Faut lire nix-collect-garbage -d

      • [^] # Re: petit disque

        Posté par  . Évalué à 2 (+0/-0).

        Je demande ici, de lancer nix-collect-garbage - de le faire chaque semaine automatiquement en retirant les "vieilleries" de plus de 7 jours.

        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  (site web personnel) . Évalué à 1 (+0/-0).

          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  (site web personnel) . Évalué à 2 (+0/-0).

    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 ?

  • # J'ai franchi le cap aussi...

    Posté par  . Évalué à 5 (+4/-0).

    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  (site web personnel) . Évalué à 2 (+1/-0).

      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.

      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.

      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.

      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 :

      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.

      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  . Évalué à 2 (+1/-0).

        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  . Évalué à 2 (+1/-0).

        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…

        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  (site web personnel) . Évalué à 2 (+1/-0).

          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  (site web personnel) . Évalué à 2 (+1/-0).

            Si je te donne pas la bonne sortie, ça ne t'avancera pas ;p

              # Enable Xfce and service.
              services.xserver.desktopManager.xfce.enable = true;
              programs.thunar.plugins = with pkgs.xfce; [ thunar-archive-plugin thunar-volman ];
              services.gvfs.enable = true; # Mount, trash, and other functionalities
              services.tumbler.enable = true; # Thumbnail support for images
            • [^] # Re: J'ai franchi le cap aussi...

              Posté par  . Évalué à 1 (+0/-0).

              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  . Évalué à 1 (+0/-0).

      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.

      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

      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.

      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  (site web personnel) . Évalué à 1 (+0/-0). 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  . Évalué à 1 (+0/-0). 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.

        Sinon, il y a cette chaîne YouTube, qui parle beaucoup de Guix (et Guile, et Emacs) : https://www.youtube.com/@SystemCrafters/featured

        Merci pour le lien je ne connaissais pas cette chaîne.

  • # Magasin d'application graphique

    Posté par  . Évalué à 1 (+1/-0).

    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 ?

  • # Gouvernance critiquable

    Posté par  . Évalué à 3 (+1/-0).

    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  . Évalué à 2 (+0/-0).

      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  (site web personnel) . Évalué à 1 (+0/-0).

        • [^] # Re: Gouvernance critiquable

          Posté par  (site web personnel) . Évalué à 2 (+1/-0).

          Je ne pense pas que cela méritait un article de blog dédié, alors voici quelques mots.

          D’après mon expérience, contribuer à Nix était compliqué. Parfois, les modifications peuvent être validées en quelques minutes, ne laissant pas le temps aux autres d'examiner une modification, et parfois un PR peut prendre des mois ou des années en raison des pinaillages et de la perte de confiance du responsable.

          Une autre raison pour laquelle j'ai arrêté d'utiliser nix était qu'il est assez facile d'obtenir un accès au commit nixpkgs (je n'ai pas moi-même d'accès au commit, je n'ai jamais voulu m'infliger le langage nix), une attaque de la chaîne d'approvisionnement serait facile à réaliser dans mon opinion : il y a tellement de commits effectués qu'il est impossible pour un groupe fiable de tout examiner, et il y a trop de contributeurs pour être sûr qu'ils sont tous fiables.

          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  . Évalué à 1 (+0/-0).

            Marrant qu'elle cite Guix dans l'article (déso je traduis pas) :

            Guix is old school, people exchange over IRC and send git diff over email, please do not bother them if this is not your cup of tea. On top of that, Guix uses the programming language Scheme (a Lisp-1 language) and if you want to work with this language, emacs is your best friend (try geiser mode!).

            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  . Évalué à 4 (+3/-0).

    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  (site web personnel, Mastodon) . Évalué à 2 (+0/-0).

    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

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.