diff --git a/hosts/common/default.nix b/hosts/common/default.nix index 5943752..8abce7a 100644 --- a/hosts/common/default.nix +++ b/hosts/common/default.nix @@ -5,19 +5,26 @@ { pkgs, lib, ... }: let - # Cinnamon ne découvre les fonds d'écran "par défaut" sélectionnables - # au clic droit que via un XML gnome-background-properties - # (share/gnome-background-properties/*.xml -- même mécanisme que - # nixos-artwork.wallpapers dans nixpkgs, vérifié dans son propre - # source : pkgs/data/misc/nixos-artwork/wallpapers.nix). mint-artwork - # (déjà installé par défaut avec Cinnamon, voir module - # services.xserver.desktopManager.cinnamon) ne fournit PAS ce XML : - # ses images sont bien sur le disque mais invisibles dans le - # sélecteur sans lui. On le génère nous-mêmes à partir de ce que - # mint-artwork contient réellement (pas de liste de fichiers en dur, - # on énumère au build), plus notre propre fond d'écran par défaut. + # PREMIER ESSAI FAUX (corrigé ici) : Cinnamon ne suit PAS le mécanisme + # GNOME standard (gnome-background-properties via XDG_DATA_DIRS). + # Vérifié dans le vrai source du sélecteur, cs_backgrounds.py + # (linuxmint/cinnamon, module cinnamon-settings) : + # `properties_dir = "/usr/share/cinnamon-background-properties"`, un + # chemin ABSOLU EN DUR, jamais résolu via XDG_DATA_DIRS -- même en + # mettant le bon XML au bon endroit dans le store, Cinnamon ne + # regarde jamais là. mint-artwork (déjà installé par défaut avec + # Cinnamon) ne fournit de toute façon aucun XML de ce genre -- ses + # images sont sur le disque mais invisibles dans le sélecteur. + # + # Solution : générer le XML nous-mêmes (à partir de ce que + # mint-artwork contient réellement, pas une liste en dur -- chemin + # confirmé dans nixpkgs/pkgs/by-name/mi/mint-artwork/package.nix qui + # sed-remplace littéralement usr/share/backgrounds/linuxmint/*.jpg), + # PUIS forcer /usr/share/cinnamon-background-properties à pointer + # dessus via systemd-tmpfiles (seul moyen d'atteindre un chemin en + # dur sur un système qui n'a pas de /usr/share FHS classique). cinnamonDefaultWallpapers = pkgs.runCommand "cinnamon-default-wallpapers-properties" { } '' - mkdir -p $out/share/gnome-background-properties + mkdir -p $out/share/cinnamon-background-properties { echo '' echo '' @@ -34,12 +41,20 @@ let echo " " done echo '' - } > $out/share/gnome-background-properties/nixos-fleet-defaults.xml + } > $out/share/cinnamon-background-properties/nixos-fleet-defaults.xml ''; in { imports = [ ../../modules/anssi ]; + # L+ crée aussi les dossiers parents manquants (/usr, /usr/share, + # confirmé dans la doc systemd-tmpfiles.d) -- pas besoin de les créer + # à la main. Réappliqué à chaque nixos-rebuild switch (pas seulement + # au boot), donc pas besoin de reboot pour que ça prenne effet. + systemd.tmpfiles.rules = [ + "L+ /usr/share/cinnamon-background-properties - - - - ${cinnamonDefaultWallpapers}/share/cinnamon-background-properties" + ]; + # Nom uniforme, pas d'identification individuelle pour l'instant (voir # README). À revoir via le numéro de série DMI si le besoin apparaît. networking.hostName = "Nixos_Fleet";