# nixos-template-base Versions de NixOS supportées : * NixOS unstable Ce dépôt stocke une configuration générique des machines. ~~Une recette dite "config-generator" adapte la configuration selon le nom de la machine (FQDN).~~ ~~Actuellement, les scripts contiennent un peu de configuration spécifique pour les machines des mainteneurs.~~ # Liens * https://status.nixos.org/ pour savoir de quand datent les différentes releases de NixOS * https://repology.org/repository/nix_unstable/problems pour lister les paquets avec problèmes # Notes de mise-à-jour ## pour l'utilisation de l'annuaire (à partir de 2017-04-28) * faire les mises à jour de l'OS * commiter & pusher l'état des dépôts (au cas où). Pour les différents dépôts `git a`, `git commit` puis `make tag push` * mettre à jour les dépôts avec les dernières versions, `make submodules-update` * vérifier que `configuration.nix` contient `services.xserver.enable = true;` pour les machines avec interface graphique * vérifier que `configuration.nix` contient le nom de la machine `networking.hostName = "";` * vérifier que `configuration.nix` contient le nom de domaine `networking.domain = "";` * tester la configuration : `nixos-rebuild build` * corriger et ajouter les éléments manquant (notamment dans `private/annuaire.nix` ) * lorsque tout semble bon, vérifier : * qu'il y a toujours des utilisateurs dans la configuration * que le moyen d'accéder à la machine n'a pas été supprimé (surtout les machines distantes) * lancer la commande de build de l'os : `make` :) ## pour le passage de 16.09 à unstable * mettre à jour tous les dépôts * changer la branche de base vers `nixos-unstable` * changer la declaration de la machine dans `configuration.nix` ~~~ networking.hostName = ""; ~~~ devient ~~~ r6d.computers.is = true; ~~~ * mettre à jour le channel ~~~ nix-channel --add https://nixos.org/channels/nixos-unstable nixos nix-channel --update ~~~ * faire la mise à jour ~~~ make ~~~ ## pour le passage de 16.03 à 16.09 * mettre le dépôt base sur la branche upgrade-16.09 * changer le channel nixos : ```nix-channel --add https://nixos.org/channels/nixos-16.09 nixos``` * activer x11 dans le configuration.nix ~~~ services.xserver.enable = true; ~~~ * remplacer le bootloader si gummiboot était utilisé ~~~ boot.loader.gummiboot.enable = true; ~~~ devient ~~~ boot.loader.systemd-boot.enable = true; ~~~ Pour résoudre les soucis d'upgrade, il est conseillé : * de désactiver tous les imports (sauf `hardware.nix`) * d'ajouter `.../localisation.nix` dans les imports sous peine d'être en clavier US * d'ajouter ```nixpkgs.config.allowUnfree = true;``` * d'ajouter `vim` aux paquets * de réactiver petit à petit les lignes désactivées # Installation sur machine chez online.net * https://nixos.org/wiki/Install_NixOS_on_Online.Net * https://nixos.org/wiki/Install_NixOS_on_Linode ## Installation selon config online * commander serveur * lancer la procédure d'installation avec ubuntu LTS 64bits * partitionner le disque avec l'interface web * lancer l'installation de l'os. * attendre que la procédure standard d'installation d'online ait terminée * lorsque l'install est finie, dans l'onglet "Etat" se trouve l'option "Secours" ## Transformation en NixOS * relancer la machine en mode "Secours" * choisir un linux 64bits (préférence pour ubuntu LTS) * le système de boot donne des identifiants SSH pour le connecter à la machine * se connecter à la machine * passer en root ~~~bash sudo su - ~~~ * formater les partitions ~~~bash mkfs.ext4 -L nixos /dev/sda1 swapoff -a mkswap /dev/sda2 swapon -a ~~~ * monter les partitions dans /mnt ~~~bash mount /dev/sda1 /mnt/ mkdir /mnt/etc/ mkdir /mnt/etc/nixos mkdir /etc/nixos mkdir /mnt/nix mkdir /nix mount --bind /mnt/nix/ /nix mkdir /mnt/tmp mount --bind /mnt/tmp /tmp ~~~ * installer les paquets nécessaires ~~~bash apt-get install bzip2 git byobu htop glances ~~~ * création d'utilisateur (n'importe quil mot de passe) ~~~bash adduser nix groupadd -r nixbld for n in $(seq 1 10); do useradd -c "Nix build user $n" -d /var/empty -g nixbld -G nixbld -M -N -r -s "$(which nologin)" nixbld$n; done ~~~ * mise-à-jour des certificats ~~~bash update-ca-certificates ~~~ * installer nix ~~~bash chown -R nix /nix /tmp su - nix bash <(curl https://nixos.org/nix/install) exit ~~~ * créer un profil nix pour root & un channel ~~~bash . ~nix/.nix-profile/etc/profile.d/nix.sh nix-channel --remove nixpkgs nix-channel --add https://nixos.org/channels/nixos-unstable nixos nix-channel --update ~~~ * installer un editeur de texte ~~~bash nix-env -i vim_configurable ~~~ * installation de nixos-install ~~~bash cat < /root/configuration.nix { fileSystems."/" = {}; boot.loader.grub.enable = false; } EOF export NIX_PATH=nixpkgs=/root/.nix-defexpr/channels/nixos:nixos=/root/.nix-defexpr/channels/nixos/nixos export NIXOS_CONFIG=/root/configuration.nix nix-env -i -A config.system.build.nixos-install \ -A config.system.build.nixos-option \ -A config.system.build.nixos-generate-config \ -f "" ~~~ * configuration de NixOS si la machine existe déjà, cloner le dépôt dans /mnt/etc/nixos pour cela, créer clef ssh et l'ajouter sur la forge ~~~bash ssh-keygen -t ed25519 cp ~/.ssh/id_ed25519* /mnt/etc/nixos/ git clone <> git submodule init git submodule update ~~~ * monter /etc/nixos vers /mnt/etc/nixos pour que la config clonée fonctionne ~~~bash mount --bind /mnt/etc/nixos/ /etc/nixos/ ~~~ * mettre à jour la configuration matérielle ~~~bash export NIX_PATH=nixpkgs=/root/.nix-defexpr/channels/nixos:nixos=/root/.nix-defexpr/channels/nixos/nixos nixos-generate-config --root /mnt ~~~ * vérifier le /mnt/etc/nixos/configuration.nix notamment le périphérique utilisé par grub * installer le système sur le disque ~~~bash unset NIXOS_CONFIG nixos-install ~~~