is NixOS the real Endgame Linux Distro

Cette vidéo montre comment installer et configurer NixOS Home Manager pour gérer ses fichiers de configuration (dotfiles) de manière déclarative, en prenant l’exemple de Hyprland, Waybar et Rofi.

Voir la source

SYNTHÈSE STRUCTURÉE

Présentation de NixOS et de Nix

L’intervenant, Ze, introduit NixOS comme une distribution Linux basée sur le gestionnaire de paquets Nix, sorti en 2003. Il souligne que l’intérêt principal réside dans la déclaration complète du système dans un fichier de configuration. « Votre kernel, votre boot manager, juste l’essentiel est configuré dans configuration.nix », explique-t-il. L’installation se fait via l’installeur Calamares, également utilisé par EndeavourOS, ce qui la rend accessible aux débutants.

La configuration déclarative du système

Pour installer un programme, il faut éditer /etc/nixos/configuration.nix et ajouter le paquet dans environment.systemPackages. Ze montre un exemple concret avec sudo nvim /etc/nixos/configuration.nix. Cette approche centralise toute la gestion du système dans un seul fichier, ce qui facilite la maintenance et le déploiement.

La reproductibilité avec les flakes

Ze explique que les flakes NixOS offrent une reproductibilité totale grâce à flake.lock, qui stocke les hashs de commit Git de chaque dépendance. « Avec les flakes, votre ami obtiendra exactement la même chose que vous si vous lui donnez votre configuration », précise-t-il. Sans flakes, les versions peuvent différer si les canaux ne sont pas à jour. Il recommande d’utiliser les flakes pour une reproductibilité « pure et vraie ».

Installation de Home Manager

Pour installer Home Manager, Ze ajoute dans configuration.nix un bloc let avec home-manager = builtins.fetchTarball pointant vers le dépôt GitHub officiel. Il importe ensuite le module dans imports avec import "${home-manager}/nixos". Il active les options home-manager.useUserPackages = true et home-manager.useGlobalPkgs = true, et configure backupFileExtension = "backup" pour éviter de casser les configurations existantes.

Intégration avec les flakes

Ze découvre une erreur : il doit déclarer Home Manager dans flake.nix plutôt que dans configuration.nix car il utilise les flakes. Il ajoute home-manager.url = "github:nix-community/home-manager/release-25.05" et home-manager.inputs.nixpkgs.follows = "nixpkgs". Cette étape montre l’importance de comprendre l’architecture des flakes pour éviter les erreurs de configuration.

Création de home.nix

Après avoir corrigé son erreur, Ze crée home.nix, le fichier de configuration utilisateur. Il y déclare les programmes et les fichiers de configuration à gérer. Il utilise xdg.configFile pour lier les fichiers de configuration à leur emplacement dans ~/.config. Par exemple, pour Hyprland : xdg.configFile."hypr/hyprland.lua".source = ./modules/hyprland.lua.

Gestion des dotfiles avec Home Manager

Ze déplace ses configurations dans /etc/nixos/modules/ pour les organiser. Il crée des dossiers par application (hyprland, waybar, rofi) et utilise sudo mv pour y déplacer les fichiers. Cette organisation permet de tout centraliser dans /etc/nixos/, facilitant la sauvegarde et la restauration complète du système.

Vérification et validation

Après chaque modification, Ze exécute sudo nixos-rebuild switch --flake /etc/nixos#nixos pour appliquer les changements. Il vérifie que les fichiers sont bien liés en utilisant ls dans les dossiers de configuration. « Ça marche ! », s’exclame-t-il après avoir réussi à déplacer sa configuration Hyprland.

Avantages de la centralisation

Ze souligne que cette approche permet de restaurer tout son système sur un nouveau PC en important simplement le dossier /etc/nixos/. « Je peux importer tous ces fichiers dans mon NixOS sur un nouveau PC et tout serait configuré », dit-il. C’est le principal avantage de la reproductibilité offerte par NixOS.

Limites et apprentissage

L’intervenant admet être « nouveau sur NixOS » et apprendre « chaque jour ». Il montre que même avec des erreurs, le processus reste accessible grâce à la documentation et aux messages d’erreur clairs. Cette honnêteté rend la vidéo utile pour les débutants qui peuvent se reconnaître dans ses tâtonnements.

CONCEPTS CLÉS

  • Flakes : système de gestion des dépendances pour NixOS qui garantit la reproductibilité en verrouillant les versions exactes via flake.lock.
  • Home Manager : outil de gestion de l’environnement utilisateur avec Nix, permettant de déclarer les programmes et les dotfiles de manière déclarative.
  • xdg.configFile : directive NixOS qui lie un fichier source à un emplacement dans ~/.config.
  • nixos-rebuild switch : commande qui applique les changements de configuration au système en cours d’exécution.
  • builtins.fetchTarball : fonction Nix qui télécharge et extrait une archive depuis une URL, utilisée pour installer Home Manager sans passer par les canaux.

CONCLUSION

La vidéo démontre que NixOS, avec Home Manager, offre une solution élégante pour gérer l’ensemble de son système de manière déclarative et reproductible. En centralisant les configurations dans /etc/nixos/, on obtient une sauvegarde complète et portable de son environnement. L’exemple de Ze montre que même un utilisateur en apprentissage peut réussir à configurer Home Manager, ce qui rend cette approche accessible à tous. L’important est de comprendre la logique des flakes et de tester progressivement ses configurations pour éviter les erreurs.

Du même canal

Tout voir