diff --git a/hosts/common/base.nix b/hosts/common/base.nix index 1497973..cdde051 100644 --- a/hosts/common/base.nix +++ b/hosts/common/base.nix @@ -1,5 +1,5 @@ # Socle commun à toutes les machines de la flotte (repo public). -{ pkgs, ... }: +{ pkgs, lib, ... }: { # Toutes les machines de la flotte portent le même nom : pas @@ -9,6 +9,14 @@ networking.hostName = "Nixos_Fleet"; networking.networkmanager.enable = true; + # Sans ça, les firmwares non-libres (wifi/Bluetooth Broadcom, Realtek, + # Intel...) ne sont pas inclus dans le système. Sur un parc de PC + # hétérogène et inconnu à l'avance, une partie aura besoin de ces + # firmwares pour que la carte wifi soit seulement détectée (option + # documentée : nixos.wiki/wiki/NixOS_Installation_Guide, section + # firmware). mkDefault : un profil peut désactiver au cas par cas. + hardware.enableRedistributableFirmware = lib.mkDefault true; + time.timeZone = "Europe/Paris"; i18n.defaultLocale = "fr_FR.UTF-8"; i18n.extraLocaleSettings = { diff --git a/hosts/common/desktop.nix b/hosts/common/desktop.nix index e4bafd1..f21c030 100644 --- a/hosts/common/desktop.nix +++ b/hosts/common/desktop.nix @@ -6,6 +6,7 @@ { services.xserver.enable = true; services.xserver.displayManager.lightdm.enable = true; + services.xserver.displayManager.lightdm.background = "/etc/nixos/hosts/common/wallpaper/Nix/13977413.png"; services.xserver.desktopManager.cinnamon.enable = true; services.accounts-daemon.enable = true; @@ -14,6 +15,17 @@ warpinator ]; + # Fond d'écran par défaut (juste le logo NixOS, pas la galerie perso de + # nixos_cinnamon -- repo public, on n'y met que ce qui est nécessaire). + # Ce chemin (/etc/nixos) suppose la config installée là -- voir + # nixos_fleet/installer/install.sh (do_install copie le clone sur le + # disque cible après nixos-install). + environment.etc."dconf/db/local.d/00-background".text = '' + [org/cinnamon/desktop/background] + picture-uri='file:///etc/nixos/hosts/common/wallpaper/Nix/13977413.png' + ''; + system.activationScripts.dconfUpdate.text = "${pkgs.dconf}/bin/dconf update"; + # Réglages de confidentialité génériques (pas de SearXNG/DNS personnels # comme sur le poste perso — cette config est destinée à être publique). programs.firefox = { diff --git a/hosts/common/wallpaper/Nix/13977413.png b/hosts/common/wallpaper/Nix/13977413.png new file mode 100644 index 0000000..cbf229d Binary files /dev/null and b/hosts/common/wallpaper/Nix/13977413.png differ diff --git a/installer/install.sh b/installer/install.sh index 0640329..04286f8 100644 --- a/installer/install.sh +++ b/installer/install.sh @@ -92,6 +92,32 @@ do_install() { swapoff /mnt/.install-swapfile rm -f /mnt/.install-swapfile + + # Sans cette étape, la machine installée n'a AUCUNE config sur son + # disque : le clone ci-dessus vit dans /tmp de l'environnement live, en + # RAM, effacé au reboot. La convergence auto (system.autoUpgrade, voir + # hosts/common/base.nix) continue de fonctionner sans ça (elle pointe + # sur l'URL distante), mais un technicien qui arrive sur la machine + # après coup n'a alors ni /etc/nixos, ni moyen d'ajouter/enlever un + # paquet à la main. On installe donc le même clone (déjà substitué avec + # le vrai disque) à l'emplacement standard NixOS, en conservant .git + # pour que `git pull`/`git log` marchent dessus normalement ensuite. + echo "Installation de la configuration dans /mnt/etc/nixos..." + rm -rf /mnt/etc/nixos + mkdir -p /mnt/etc + cp -a "$repo_dir" /mnt/etc/nixos + + # Le disque cible a été substitué localement (sed plus haut) : ce fichier + # diffère donc de ce qui est sur git (placeholder). On le committe en + # local (jamais poussé) pour que `git status` reste propre sur la + # machine installée -- sinon chaque `git pull` ultérieur affiche un + # fichier modifié, source de confusion pour un technicien. + git -C /mnt/etc/nixos \ + -c user.name="Installeur Nixos_Fleet" \ + -c user.email="installeur@nixos-fleet.local" \ + commit -aqm "Substitution locale du disque cible ($DEVICE)" + + INSTALLED_ATTR="$attr" } echo "=== Installeur Nixos_Fleet ===" @@ -190,6 +216,11 @@ case "$CHOICE" in esac echo -echo "Installation terminée. Redémarrage dans 10s (Ctrl-C pour annuler et inspecter /mnt)..." +echo "Installation terminée." +echo "Config installée dans /etc/nixos (attribut : ${INSTALLED_ATTR})." +echo "Pour ajouter/enlever un paquet après le premier démarrage :" +echo " 1. éditer les fichiers dans /etc/nixos" +echo " 2. nixos-rebuild switch --flake /etc/nixos#${INSTALLED_ATTR}" +echo "Redémarrage dans 10s (Ctrl-C pour annuler et inspecter /mnt)..." sleep 10 reboot