Introduction à NixOS et home-manager (Partie 2)

Home-manager est un outil qui étend Nix pour gérer non seulement les paquets système, mais aussi leurs configurations de manière déclarative. Plutôt que de modifier manuellement des fichiers éparpillés dans $HOME, tout est déclaré au même endroit et reproductible sur n'importe quelle machine.

Emacs

Nix peut gérer non seulement le binaire d'Emacs, mais aussi ses plugins. Plus besoin de M-x package-install ou de straight.el.

programs.emacs = {
  enable = true;
  package = pkgs.emacs-pgtk;
  extraPackages = epkgs: [
    epkgs.treesit-grammars.with-all-grammars
    epkgs.vertico
    epkgs.orderless
    epkgs.marginalia
    epkgs.consult
    epkgs.embark
    epkgs.embark-consult
  ];
};

Firefox

Même chose pour Firefox : profils, paramètres about:config et userChrome.css sont tous déclarés dans le même fichier.

programs.firefox = {
  enable = true;
  profiles.default = {
    isDefault = true;
    settings = {
      "signon.rememberSignons"    = false;
      "signon.autofillForms"      = false;
      "signon.generation.enabled" = false;
    };
  };
};

Inconvénients

Chaque modification nécessite une recompilation avec home-manager switch. Je recommande de n'adopter home-manager que lorsque la configuration est relativement stable.

Conclusion

Home-manager pousse la philosophie Nix jusqu'à l'environnement utilisateur : une seule source de vérité, versionnée avec Git. La liste complète des paquets disponibles est consultable sur GitHub.