Corrige (vraiment) le sélecteur de fond d'écran Cinnamon : mauvais mécanisme la première fois

Le précédent correctif visait gnome-background-properties (XDG_DATA_DIRS)
-- mais Cinnamon ne suit pas ce standard. Vérifié dans le vrai source du
sélecteur (linuxmint/cinnamon, cs_backgrounds.py) :
properties_dir = "/usr/share/cinnamon-background-properties", un
chemin ABSOLU EN DUR, jamais résolu via XDG_DATA_DIRS. Notre XML avait
beau être au bon endroit dans le store, Cinnamon ne le trouvait jamais.

Fix : le XML est maintenant généré sous cinnamon-background-properties
(bon nom), et systemd.tmpfiles.rules force un symlink
/usr/share/cinnamon-background-properties -> notre dérivation --
seul moyen d'atteindre ce chemin en dur sur NixOS (pas de /usr/share
FHS classique). Réappliqué à chaque switch, pas besoin de reboot.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-09 20:26:57 +02:00
co-authored by Claude Sonnet 5
parent 972f9c8d3c
commit 83d4bed8c4
+28 -13
View File
@@ -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 '<?xml version="1.0" encoding="UTF-8"?>'
echo '<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">'
@@ -34,12 +41,20 @@ let
echo " </wallpaper>"
done
echo '</wallpapers>'
} > $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";