nixos-config/install.sh
2026-07-05 23:59:32 +02:00

61 lines
2.9 KiB
Bash
Executable file

#!/usr/bin/env bash
# ─────────────────────────────────────────────────────────────────────
# Installation NixOS — choix de la machine (host)
# Usage :
# ./install.sh → menu interactif
# ─────────────────────────────────────────────────────────────────────
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"
echo "✓ Terminé pour $HOST. Reboot puis sélectionne la génération dans GRUB."