Douze modules pour votre customConfig : le sommaire de la série

Quand on commence à personnaliser GLF OS, tout tient dans /etc/nixos/customConfig/default.nix. Au bout de quelques semaines le fichier s'allonge, on ne retrouve plus ses réglages et on hésite à y toucher. La réponse tient en un mot : imports. Vous écrivez un petit fichier par sujet, vous l'ajoutez à la liste, et votre default.nix redevient lisible.

Cette page sert de point d'entrée à une série de douze articles. Chacun détaille un fichier complet, pris sur une machine qui tourne au quotidien : ce qu'il apporte, ce que fait chaque ligne, les pièges rencontrés, les options que vous pourriez vouloir changer, et quoi faire quand cela ne marche pas.

:information_source: Remarque
Si vous découvrez customConfig, lisez d'abord Ajouter vos programmes et Configuration personnalisée. Les douze articles partent du principe que ces deux pages sont acquises.


Le principe, en une page

Un module, c'est un fichier .nix rangé à côté de default.nix, dans /etc/nixos/customConfig/. Il commence par un en-tête déclarant ce dont il a besoin, suivi d'un bloc de réglages. Vous le nommez comme vous voulez.

Voici à quoi ressemble un default.nix une fois les modules sortis :

{
  lib,
  config,
  pkgs,
  pkgs-unstable,
  ...
}:

{
  imports = [
    ./claude-code.nix
    ./guake.nix
    ./zsh.nix
    ./vim.nix
    ./protonvpn.nix
    ./secret-mngt.nix
    ./vivaldi.nix
    ./mes-programmes.nix
    ./protonup-qt.nix
    ./ssh.nix
    ./invite-vm.nix
    ./samba.nix
  ];

  environment.systemPackages = [
  # Add your stable apps here (exemple: pkgs.btop)


  # Add your unstable apps here (exemple: pkgs-unstable.btop)


  ];

  # Add your custom configuration here ↓

}

Trois choses à retenir :

  • le chemin est relatif au dossier customConfig, d'où le ./ en tête ;
  • imports se place juste après l'accolade ouvrante qui suit }:, avant le reste ;
  • toutes les listes des fichiers importés s'additionnent avec celles de default.nix, vous ne perdez rien en déplaçant un paquet.

Chaque fichier porte son propre en-tête, qui liste uniquement ce qu'il utilise :

{ pkgs, ... }:                  # le fichier n'utilise que pkgs
{ lib, pkgs, ... }:             # il utilise aussi lib (mkForce, mkDefault, mkIf)
{ pkgs, pkgs-unstable, ... }:   # il pioche dans la branche instable

:bulb: Astuce
Un # devant une ligne d'import désactive le module sans supprimer le fichier. C'est la façon la plus simple de savoir si l'un de vos ajouts est responsable d'un problème.

Une fois vos fichiers écrits et vos lignes ajoutées, une seule commande applique le tout :

glf-update

Les douze articles

Environnement de travail

Applications

Réseau et sécurité


En cas de problème

:information_source: Remarque
Une erreur d'évaluation n'installe rien. Votre système reste exactement dans l'état où il était, et vous pouvez corriger tranquillement. On ne casse pas une installation NixOS en se trompant dans un fichier.

Les messages que vous rencontrerez le plus souvent :

  • undefined variable 'pkgs-unstable' : l'en-tête du fichier ne mentionne pas ce qu'il utilise. Ajoutez le mot manquant entre les accolades de la première ligne.
  • path '/etc/nixos/customConfig/mon-fichier.nix' does not exist : une faute de frappe dans imports, ou un fichier créé ailleurs. Le chemin part toujours du dossier customConfig.
  • The option 'x' has conflicting definition values : GLF OS a déjà posé cette valeur. Ce n'est pas une faute de votre part, le système vous demande de trancher, avec lib.mkForce.
  • attribute 'y' missing : le nom du paquet n'existe pas tel quel. Vérifiez-le sur search.nixos.org, les tirets et les majuscules comptent.

Si un démarrage se passe mal après une modification, la génération précédente est toujours proposée dans le menu de démarrage. Et sans redémarrer :

sudo nixos-rebuild switch --rollback

Et vous ?

Si vous avez composé des modules pour d'autres usages, ils ont toute leur place dans Partagez vos configs. Et si un point reste obscur dans l'un des douze articles, posez la question en réponse sous celui qui vous concerne : la réponse profitera aux suivants.


Voir aussi