#!/bin/bash # Script de post-installation pour Linux Mint # utilisation # wget https://ton-url.com/postinstall.sh -O postinstall.sh && chmod +x postinstall.sh && ./postinstall.sh abort() { echo "" echo "" echo "Erreur : $1. Abandon" > /dev/stderr exit 1 } config_firefox_fr() { echo -e "==> Configuration de Firefox en Français par défaut\n" # Création d'un fichier de préférences globales pour Firefox mkdir -p /usr/lib/firefox/browser/defaults/preferences cat < /usr/lib/firefox/browser/defaults/preferences/syspref.js // Forcer la langue en Français pref("intl.locale.requested", "fr"); // Activer le dictionnaire fr par défaut pref("spellchecker.dictionary", "fr"); // Langues préférées pour les sites web pref("intl.accept_languages", "fr, fr-fr, en-us, en"); // Activer les DRM (Netflix/Prime) pref("media.eme.enabled", true); EOF } config_libreoffice() { echo -e "==> Vérification du support français LibreOffice\n" # Le paquet l10n-fr installe l'interface, hunspell-fr installe le dictionnaire ABC apt install -y libreoffice-l10n-fr hunspell-fr mythes-fr hyphen-fr } prepa_restauration_firefox() { echo -e "==> Préparation du dossier Firefox (Lancer Firefox 1 fois avant)\n" # S'assure que le dossier existe mkdir -p $HOME/.mozilla/firefox echo "RAPPEL : Pour restaurer, copiez votre sauvegarde dans $HOME/.mozilla/firefox/" } microcode() { echo -e "==> Installation du microcode (Sécurité CPU)\n" # Détection du fabricant du CPU CPU_VENDOR=$(grep -m 1 'vendor_id' /proc/cpuinfo | awk '{print $3}') case "$CPU_VENDOR" in GenuineIntel) echo "Processeur Intel détecté..." apt install -y intel-microcode ;; AuthenticAMD) echo "Processeur AMD détecté..." apt install -y amd64-microcode ;; *) echo "Fabricant inconnu ($CPU_VENDOR), saut de l'étape microcode." ;; esac } opti_journald() { echo -e "==> Optimizing system logs (Max 100MB)..." # Use a regex that handles both commented and existing uncommented lines sudo sed -i 's/^#\?SystemMaxUse=.*/SystemMaxUse=100M/' /etc/systemd/journald.conf # Restart the daemon to apply changes sudo systemctl restart systemd-journald # Force immediate cleanup of logs older than the limit sudo journalctl --vacuum-size=100M echo -e "✅ Optimization complete.\n" } opti_fstab () { echo -e "==> Optimisation du montage des disques (noatime)\n" # Replaces relatime with noatime everywhere in the file sudo sed -i 's/relatime/noatime/g' /etc/fstab } opti_apt() { # On s'assure d'avoir les droits root if [[ $EUID -ne 0 ]]; then echo "Erreur : Ce script doit être exécuté en tant que root (sudo)." return 1 fi echo -e "==> Optimisation du gestionnaire de paquets APT\n" # 1. Supprime les fichiers .deb des paquets qui ne peuvent plus être téléchargés (obsolètes) apt-get autoclean -y # 2. Supprime la totalité du cache (ton code original) apt-get clean # 3. Supprime les dépendances inutilisées et leurs fichiers de config apt-get autoremove --purge -y # 4. Optionnel : Met à jour la liste des paquets pour repartir sur une base propre # apt-get update echo -e "\n[Terminé] Le système est plus léger !" } modif_systeme() { configuration_apt # Vérification Live USB if [ -f "/cdrom/preseed/linuxmint.seed" ]; then echo "Mode Live détecté. Fin du script." exit 0 fi install_logiciels config_firefox_fr config_timeshift_desactive microcode opti_journald opti_fstab mises_a_jour config_libreoffice prepa_restauration_firefox echo -e "==> Optimisation du Swappiness\n" sysctl vm.swappiness=10 echo 'vm.swappiness=10' > /etc/sysctl.d/99-swappiness.conf opti_apt } config_timeshift_desactive() { echo -e "==> Désactivation des sauvegardes automatiques Timeshift\n" # On récupère la partition racine pour que la commande soit valide TARGET_DEV=$(findmnt / -n -o SOURCE) # On règle tous les niveaux de rétention à 0 timeshift --set-device "$TARGET_DEV" \ --schedule-hourly 0 \ --schedule-daily 0 \ --schedule-weekly 0 \ --schedule-monthly 0 \ --schedule-boot 0 \ --skip-grub \ || echo "Note : Timeshift n'a pas pu être configuré (peut-être non installé)." } ########################################################## # Mises à jour et installation des logiciels utilisateur # ########################################################## # Installation des polices Microsoft. On le fait au début pour pouvoir vite # accepter l'EULA et pouvoir aller boire un café :-) # L'astuce d'utiliser DEBIAN_FRONTEND=noninteractive ne marche plus, il faudrait # préconfigurer debconf pour éviter d'avoir à répondre ici install_logiciels() { echo -e "==> Installation des polices Microsoft\n" # 1. On pré-accepte la licence dans la base de données debconf echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections # 2. On installe en forçant le mode non-interactif pour ignorer toute autre question DEBIAN_FRONTEND=noninteractive apt install -y ttf-mscorefonts-installer || abort "problème lors de l'installation des polices" # mise à jour du système echo "==> Mise à jour du système\n" apt update || abort "impossible de récupérer les informations des dépôts" apt full-upgrade -y || abort "erreur lors de la mise à jour des paquets" # installation de logiciels utilisateurs indispensables ou juste très utiles # - backintime-qt pour avoir un bon logiciel de sauvegardes # - brasero pour graver # - cheese pour tester la webcam # - fonts-contarell et fonts-linuxlibertine parce qu'elles sont jolies et complètes # - keepassxc pour gérer les mots de passe # - nemo-image-converter pour rapidement réduire des images pour l'envoi par mail # - pdfarranger pour découper / assembler des PDF # - verbiste-gnome pour la conjugaison # - gparted pour organiser le partitionnement des disques # - vlc pour lire les fichiers audio et vidéos # - vnstat statisitques utilisation réseau # - iftop afficher les connexions instantannée # - numlockx activation du pavé numérique en X11 echo -e "==> Installation des programmes complémentaires\n" apt install -y \ backintime-qt \ brasero \ cheese \ fonts-cantarell fonts-linuxlibertine \ keepassxc \ nemo-image-converter \ pdfarranger \ verbiste-gnome \ gparted \ vlc \ vnstat \ iftop \ numlockx \ hunspell-fr \ mint-meta-codecs \ || abort "problème lors de l'installation des logiciels utilisateurs" # Installation de tous les paquets de langue echo -e "==> Installation du support français pour les programmes déjà installés\n" apt install -y language-selector-common apt install -y $(check-language-support -l fr) echo -e "==> Francisation de Firefox (.deb)\n" # On installe le paquet de langue officiel des dépôts Mint/Ubuntu apt install -y firefox-locale-fr || echo "Note: Impossible d'installer le pack FR pour Firefox apt." # curl -L -o /usr/lib/firefox/distribution/extensions/dictionnaire-francais.xpi https://addons.mozilla.org/fr/firefox/downloads/latest/1750/addon-1750-latest.xpi # sed -i 's/preferredDictionary =.*/preferredDictionary = fr/' /usr/lib/firefox-*/dictionaries/dictionaries.xml } ################ # Mises à jour # ################ mises_a_jour() { echo -e "Configuraiton de dconf\n" # Configuration de dconf pour permettre de modifier certaines configurations # par défaut mkdir -p /etc/dconf/profile echo -e\ "user-db:user\n"\ "system-db:local" > /etc/dconf/profile/user mkdir -p /etc/dconf/db/local.d # Ne pas demander à l'utilisateur l'utilisation de dépôts locaux echo -e \ "[com/linuxmint/updates]\n"\ "default-repo-is-ok=true" > /etc/dconf/db/local.d/00-alpinux dconf update } # Fonctions Utilisateur (SANS sudo) personnalisation_utilisateur() { echo -e "${GREEN}==> Personnalisation de l'environnement (User: $USER)${NC}" # Cinnamon / Nemo dconf write /org/nemo/desktop/trash-icon-visible true dconf write /org/nemo/desktop/home-icon-visible true dconf write /org/cinnamon/desktop/interface/clock-show-date true dconf write /org/cinnamon/desktop/interface/first-day-of-week 1 # Note: sudo dconf update n'est pas nécessaire pour les clés utilisateur locales } configuration_apt() { echo -e "==> Mise à jour de la liste des dépots\n" apt update # Met à jour les langues pour toutes les applications Flatpak installées flatpak update -y # Configuration de apt-proxy echo -e "==> Configuration de apt-proxy\n" apt install -y auto-apt-proxy || abort "Échec de l'installation d'auto-apt-proxy" echo 'Acquire::http::ProxyAutoDetect "auto-apt-proxy";' > /etc/apt/apt.conf.d/01proxy } ############################################################### # GRUB : sélection automatique de la dernière entrée utilisée # ############################################################### modif_grub() { echo -e "==> Modification de GRUB\n" # On comment la ligne "GRUB_DEFAULT=0" et on ajoute les "bonnes" options sed -i '/^GRUB_DEFAULT=0/ i#GRUB_DEFAULT=0\ GRUB_DEFAULT=saved\ GRUB_SAVEDEFAULT=true' /etc/default/grub # On met à jour GRUB update-grub } del_itself() { rm "$0" || echo "Impossible de supprimer ce script" > /dev/stderr } ############################## # Auto-destruction du script # ############################## if [ "$(id -u)" != "0" ]; then personnalisation_utilisateur echo "Passage en mode Root pour les modifications système..." sudo "$0" "$@" del_itself exit $? else modif_systeme echo -e "\n${GREEN}Terminé ! Un redémarrage est conseillé.${NC}" fi