|
|
|
# nixos-template-base
|
|
|
|
|
|
|
|
Versions de NixOS supportées :
|
|
|
|
* NixOS 16.09
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
# Notes de mise-à-jour
|
|
|
|
|
|
|
|
## pour l'utilisation de l'annuaire (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 = "<X>";`
|
|
|
|
* 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 = "<bidule>";
|
|
|
|
~~~
|
|
|
|
|
|
|
|
devient
|
|
|
|
|
|
|
|
~~~
|
|
|
|
r6d.computers.is<bidule> = 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
|
|
|
|
|
|
|
|
~~~
|
|
|
|
sudo su -
|
|
|
|
~~~
|
|
|
|
|
|
|
|
* formater les partitions
|
|
|
|
|
|
|
|
~~~
|
|
|
|
mkfs.ext4 -L nixos /dev/sda1
|
|
|
|
swapoff -a
|
|
|
|
mkswap /dev/sda2
|
|
|
|
swapon -a
|
|
|
|
~~~
|
|
|
|
|
|
|
|
* monter les partitions dans /mnt
|
|
|
|
|
|
|
|
~~~
|
|
|
|
mount /dev/sda1 /mnt/
|
|
|
|
mkdir /mnt/etc/
|
|
|
|
mkdir /etc/nixos
|
|
|
|
mkdir /mnt/nix
|
|
|
|
mount --bind /mnt/nix/ /nix
|
|
|
|
~~~
|
|
|
|
|
|
|
|
|
|
|
|
* installer les paquets nécessaires
|
|
|
|
|
|
|
|
~~~
|
|
|
|
apt-get install bzip2 git byobu htop glances
|
|
|
|
~~~
|
|
|
|
|
|
|
|
* création d'utilisateur (n'importe quil mot de passe)
|
|
|
|
|
|
|
|
~~~
|
|
|
|
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
|
|
|
|
|
|
|
|
~~~
|
|
|
|
update-ca-certificates
|
|
|
|
~~~
|
|
|
|
|
|
|
|
* installer nix
|
|
|
|
|
|
|
|
~~~
|
|
|
|
chown -R nix /nix
|
|
|
|
su - nix
|
|
|
|
bash <(curl https://nixos.org/nix/install)
|
|
|
|
exit
|
|
|
|
~~~
|
|
|
|
|
|
|
|
* créer un profil nix pour root & un channel
|
|
|
|
|
|
|
|
~~~
|
|
|
|
. ~nix/.nix-profile/etc/profile.d/nix.sh
|
|
|
|
nix-channel --remove nixpkgs
|
|
|
|
nix-channel --add http://nixos.org/channels/nixos-unstable nixos
|
|
|
|
nix-channel --update
|
|
|
|
~~~
|
|
|
|
|
|
|
|
* installer un editeur de texte
|
|
|
|
|
|
|
|
~~~
|
|
|
|
nix-env -i vim_configurable
|
|
|
|
~~~
|
|
|
|
|
|
|
|
* installation de nixos-install
|
|
|
|
|
|
|
|
~~~
|
|
|
|
cat <<EOF > /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 "<nixos>"
|
|
|
|
~~~
|
|
|
|
|
|
|
|
* 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
|
|
|
|
|
|
|
|
~~~
|
|
|
|
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
|
|
|
|
|
|
|
|
~~~
|
|
|
|
mount --bind /mnt/etc/nixos/ /etc/nixos/
|
|
|
|
~~~
|
|
|
|
|
|
|
|
* mettre à jour la configuration matérielle
|
|
|
|
|
|
|
|
~~~
|
|
|
|
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
|
|
|
|
|
|
|
|
~~~
|
|
|
|
unset NIXOS_CONFIG
|
|
|
|
nixos-install
|
|
|
|
~~~
|