init install.sh

This commit is contained in:
Cédrix 2026-03-25 23:51:36 +01:00
parent 8b8ab7a5dc
commit 1e102a22a4

View File

@ -0,0 +1,316 @@
#!/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 <<EOF > /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