#!/usr/bin/env bash # ───────────────────────────────────────────────────────────────────── # Installation NixOS — choix de la machine (host) # Usage : # ./install.sh → menu interactif # ./install.sh nixos-home → poste maison # ./install.sh nixos-laptop → ThinkPad E560 (léger, faible RAM) # ───────────────────────────────────────────────────────────────────── set -euo pipefail export NIX_CONFIG="experimental-features = nix-command flakes" # Clés publiques des caches (identiques pour tous les hosts). PUBKEYS="cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" # ── 1. Choix du host ───────────────────────────────────────────────── HOST="${1:-}" if [ -z "$HOST" ]; then echo "Quelle machine installer ?" echo " 1) nixos-home (poste maison)" echo " 2) nixos-laptop (ThinkPad E560 — léger, faible RAM)" read -rp "Choix [1/2] : " choix case "$choix" in 1) HOST="nixos-home" ;; 2) HOST="nixos-laptop" ;; *) echo "Choix invalide." ; exit 1 ;; esac fi if [ ! -d "$HOME/nixos-config/hosts/$HOST" ]; then echo "Host inconnu : $HOST" echo "Hosts disponibles :" ls "$HOME/nixos-config/hosts/" exit 1 fi echo "→ Installation du host : $HOST" # Substituters : on ajoute nix-community en plus pour le laptop. if [ "$HOST" = "nixos-laptop" ]; then SUBS="https://cache.nixos.org https://hyprland.cachix.org https://nix-community.cachix.org" else SUBS="https://cache.nixos.org https://hyprland.cachix.org" fi # ── 2. Copie du hardware-configuration généré ──────────────────────── cd cp /etc/nixos/hardware-configuration.nix \ "$HOME/nixos-config/hosts/$HOST/hardware-configuration.nix" cd "$HOME/nixos-config" nix-shell -p git --run "git add hosts/$HOST/hardware-configuration.nix" # ── 3. Rebuild en s'appuyant au MAXIMUM sur les caches binaires ────── # Les options --substituters / --trusted-public-keys sont passées # explicitement pour que même le TOUT PREMIER rebuild (avant que la conf # ne soit active) télécharge les binaires au lieu de compiler → crucial # sur la machine à 4 Gio de RAM. nix-shell -p git --run "sudo nixos-rebuild switch \ --flake .#$HOST \ --option substituters \"$SUBS\" \ --option trusted-public-keys \"$PUBKEYS\" \ --option max-jobs 1" rm -rf ~/.config/nvim # enlève le lien vers le store (ou le dossier résiduel) ln -s ~/nixos-config/dotfiles/nvim ~/.config/nvim echo "✓ Terminé pour $HOST. Reboot puis sélectionne la génération dans GRUB."