NixOS : Installer NixOS facilement depuis l'image minimale
Table des matières
Dans l'article NixOS : Guide sur cette distribution déclarative, on a vu ce qu'était NixOS, et son concept.
Dans cet article, nous allons voir comment installer le système en partant de l'installation minimale.
Récupérer l'image d'installation minimale sur le site de NixOS (https://nixos.org/download).
Préparer une clé USB comme habituellement, ou meiire l'ISO sur une clé de type "Ventoy".
On boote dessus et on s'assure d'avoir du réseau.
Voici un exemple de partitionnement "classique" sur le disque /dev/sda, avec une partition EFI et le reste en ext4.
NixOS dans sa documentation, place tout le /boot sur une partition FAT32 dans le cadre d'un amorçage via l'UEFI.
Initialisation du disque et création des partitions :
Formatage des partitions :
On montra ensuite la partition root dans /mnt directement :
On créé ensuite le point de montage /boot :
Et on monte cette partiton avec les droits spécifiques :
Le fichier central de configuration de NixOS est /etc/nixos/configuration.nix.
Pour le générer automatiquement, ainsi que le fichier de configuration spécifique à la machine (hardware.nix), on utilisera :
Une information indique que les fichiers sont créés :
Avant de lancer l'installation, on pourra modifier la configuration :
Certaines lignes de configurations sont présentes, il suffira de les modifier. D'autres sont commentées, on pourra les décommenter et les modifier.
Le bootloader par défaut est systemd-boot, il est activé grâce à :
Si on veut utiliser GRUB à la place (la dernière ligne permet d'activer le support pour les autres systèmes installés) :
On pourra modifier le nom d'hôte de la machine via :
On pourra définir le fuseau horaire :
Le réseau est par défaut configuré automatiquement via un serveur DHCP.
Si on souhaite utiliser une IP Fixe, on ajoutera un bloc de ce type :
On configurera la locale du système en Français :
On mettra le clavier de la console TTY en français éventuelleme,t :
Pour créer un utilisateur (ici adrien), on indiquera le bloc suivant (wheel permettra l'accès à la commande sudo) :
On pourra autoriser l'accès en SSH :
Si on veut plus tard installer des logiciels non libre :
Une fois terminé, on lance l'installation :
Lorsque le processus est presque terminé, on est invité à saisir le mot de passe du super utilisateur root :
Ce qui clos l'installation.
Si on a définit un utilisateur (c'est mon cas avec adrien), on pensera à initialiser le mot de passe de cet utilisateur via :
On reboot et on est accueilli sur notre NixOS !
Toutes les étapes indiquées dans ce capitre concernent le fichier principal /etc/nixos/configuration.nix
Pour installer le serveur graphique :
On n'oubliera pas la disposition du clavier :
Si on souhaite un gestionnaire de conexion, Lightdm sera installé et activé avec un environnement de bureau. On peut expliciter l'information :
Si on prévois d'installer KDE Plasma, on pourra utiliser SDDM via :
Et si on veut utiliser GNOME, on préfèrera GDM via :
Suivant l'environnement de vureau, une ligne sera à ajouter.
Comme vous allez le voir, y en a un paquet.
Les principaux :
GNOME :
Infos supplémentaires : https://nixos.wiki/wiki/GNOME
KDE Plasma 5:
Infos supplémentaires : https://nixos.wiki/wiki/KDE
KDE Plasma 6:
Infos supplémentaires : https://nixos.wiki/wiki/KDE
Xfce :
Infos supplémentaires : https://nixos.wiki/wiki/Xfce
Cinnamon :
Les autres environnements :
Budgie :
CDE :
Deepin :
Lumina :
LxQt :
MATE :
Pantheon :
Phosh :
Sans oublier les gestionnaires de fenêtre !!
Il y en a tellement que je vous en mets que quelques uns que je connais de nom :
Awesome :
BSPWM :
Fluxbox :
i3 :
IceWM :
JWM :
Openbox :
Qtile :
xmonad :
Pour configurer le son avec pipewire :
Pour vénéficier du support VPN, Wi-Fi plus facilement, on peut mettre en place NetworkManager :
On n'oubliera pas de mettre notre utilisateur dans le groupe NetworkManager :
Introduction
Dans l'article NixOS : Guide sur cette distribution déclarative, on a vu ce qu'était NixOS, et son concept.
Dans cet article, nous allons voir comment installer le système en partant de l'installation minimale.
Récupérer l'image et démarrer sur le live
Récupérer l'image d'installation minimale sur le site de NixOS (https://nixos.org/download).
Préparer une clé USB comme habituellement, ou meiire l'ISO sur une clé de type "Ventoy".
On boote dessus et on s'assure d'avoir du réseau.
Partitionnement depuis le live
Partitionnement classique
Voici un exemple de partitionnement "classique" sur le disque /dev/sda, avec une partition EFI et le reste en ext4.
NixOS dans sa documentation, place tout le /boot sur une partition FAT32 dans le cadre d'un amorçage via l'UEFI.
Initialisation du disque et création des partitions :
Code BASH :
parted /dev/sda -- mklabel gpt parted /dev/sda -- mkpart ESP fat32 1MB 1GB parted /dev/sda -- set 1 esp on parted /dev/sda -- mkpart root ext4 1GB 100%
Formatage des partitions :
Code BASH :
mkfs.fat -F 32 -n boot /dev/sda1 mkfs.ext4 -L nixos /dev/sda2
On montra ensuite la partition root dans /mnt directement :
Code BASH :
mount /dev/sda2 /mnt
On créé ensuite le point de montage /boot :
Code BASH :
mkdir -p /mnt/boot
Et on monte cette partiton avec les droits spécifiques :
Code BASH :
mount -o umask=077 /dev/sda1 /mnt/boot
Génération de la configuration
Le fichier central de configuration de NixOS est /etc/nixos/configuration.nix.
Pour le générer automatiquement, ainsi que le fichier de configuration spécifique à la machine (hardware.nix), on utilisera :
Code BASH :
nixos-generate-config --root /mnt
Une information indique que les fichiers sont créés :
Code :
writing /mnt/etc/nixos/hardware-configuration.nix...
writing /mnt/etc/nixos/configuration.nix...
Modification de la configuration
Avant de lancer l'installation, on pourra modifier la configuration :
Code BASH :
nano /mnt/etc/nixos/configuration.nix
Certaines lignes de configurations sont présentes, il suffira de les modifier. D'autres sont commentées, on pourra les décommenter et les modifier.
Le bootloader par défaut est systemd-boot, il est activé grâce à :
Code BASH :
boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true;
Si on veut utiliser GRUB à la place (la dernière ligne permet d'activer le support pour les autres systèmes installés) :
Code BASH :
boot.loader.systemd-boot.enable = false; boot.loader.efi.canTouchEfiVariables = true; boot.loader.grub.enable = true; boot.loader.grub.device = "nodev"; boot.loader.grub.efiSupport = true; boot.loader.grub.useOSProber = true;
On pourra modifier le nom d'hôte de la machine via :
Code BASH :
networking.hostName = "nixoslinuxtricks";
On pourra définir le fuseau horaire :
Code BASH :
time.timeZone = "Europe/Paris";
Le réseau est par défaut configuré automatiquement via un serveur DHCP.
Si on souhaite utiliser une IP Fixe, on ajoutera un bloc de ce type :
Code BASH :
{ networking.interfaces.eth0.ipv4.addresses = [ { address = "192.168.21.33"; prefixLength = 24; } ]; networking.defaultGateway = "192.168.21.254"; networking.nameservers = [ "192.168.21.251" ]; }
On configurera la locale du système en Français :
Code BASH :
i18n.defaultLocale = "fr_FR.UTF-8";
On mettra le clavier de la console TTY en français éventuelleme,t :
Code BASH :
console.keyMap = "fr";
Pour créer un utilisateur (ici adrien), on indiquera le bloc suivant (wheel permettra l'accès à la commande sudo) :
Code BASH :
users.users.adrien = { isNormalUser = true; extraGroups = [ "wheel" ]; };
On pourra autoriser l'accès en SSH :
Code BASH :
services.openssh.enable = true;
Si on veut plus tard installer des logiciels non libre :
Code BASH :
nixpkgs.config.allowUnfree = true;
Une fois terminé, on lance l'installation :
Code BASH :
nixos-install
Lorsque le processus est presque terminé, on est invité à saisir le mot de passe du super utilisateur root :
Code :
setting root password...
New password:
Retype new password:
passwd: password updated successfully
installation finished!
Ce qui clos l'installation.
Si on a définit un utilisateur (c'est mon cas avec adrien), on pensera à initialiser le mot de passe de cet utilisateur via :
Code BASH :
nixos-enter --root /mnt -c 'passwd adrien'
On reboot et on est accueilli sur notre NixOS !
Paramétrage du système minimal
Toutes les étapes indiquées dans ce capitre concernent le fichier principal /etc/nixos/configuration.nix
Installation de la pile graphique
Pour installer le serveur graphique :
Code BASH :
services.xserver.enable = true;
On n'oubliera pas la disposition du clavier :
Code BASH :
services.xserver.xkb.layout = "fr"; services.xserver.xkb.variant = "oss";
Si on souhaite un gestionnaire de conexion, Lightdm sera installé et activé avec un environnement de bureau. On peut expliciter l'information :
Code BASH :
services.xserver.displayManager.lightdm.enable = true;
Si on prévois d'installer KDE Plasma, on pourra utiliser SDDM via :
Code BASH :
services.displayManager.sddm.enable = true;
Et si on veut utiliser GNOME, on préfèrera GDM via :
Code BASH :
services.xserver.displayManager.gdm.enable = true;
Installer un environnement de bureau
Suivant l'environnement de vureau, une ligne sera à ajouter.
Comme vous allez le voir, y en a un paquet.
Les principaux :
GNOME :
Code BASH :
services.xserver.desktopManager.gnome.enable = true;
Infos supplémentaires : https://nixos.wiki/wiki/GNOME
KDE Plasma 5:
Code BASH :
services.xserver.desktopManager.plasma5.enable = true;
Infos supplémentaires : https://nixos.wiki/wiki/KDE
KDE Plasma 6:
Code BASH :
services.xserver.desktopManager.plasma6.enable = true;
Infos supplémentaires : https://nixos.wiki/wiki/KDE
Xfce :
Code BASH :
services.xserver.desktopManager.xfce.enable = true;
Infos supplémentaires : https://nixos.wiki/wiki/Xfce
Cinnamon :
Code BASH :
services.xserver.desktopManager.cinnamon.enable = true;
Les autres environnements :
Budgie :
Code BASH :
services.xserver.desktopManager.budgie.enable = true;
CDE :
Code BASH :
services.xserver.desktopManager.cde.enable = true;
Deepin :
Code BASH :
services.xserver.desktopManager.deepin.enable = true;
Lumina :
Code BASH :
services.xserver.desktopManager.lumina.enable = true;
LxQt :
Code BASH :
services.xserver.desktopManager.lxqt.enable = true;
MATE :
Code BASH :
services.xserver.desktopManager.mate.enable = true;
Pantheon :
Code BASH :
services.xserver.desktopManager.pantheon.enable = true;
Phosh :
Code BASH :
services.xserver.desktopManager.phosh.enable = true;
Sans oublier les gestionnaires de fenêtre !!
Il y en a tellement que je vous en mets que quelques uns que je connais de nom :
Awesome :
Code BASH :
services.xserver.windowManager.awesome.enable = true;
BSPWM :
Code BASH :
services.xserver.windowManager.bspwm.enable = true;
Fluxbox :
Code BASH :
services.xserver.windowManager.fluxbox.enable = true;
i3 :
Code BASH :
services.xserver.windowManager.i3.enable = true;
IceWM :
Code BASH :
services.xserver.windowManager.icewm.enable = true;
JWM :
Code BASH :
services.xserver.windowManager.jwm.enable = true;
Openbox :
Code BASH :
services.xserver.windowManager.openbox.enable = true;
Qtile :
Code BASH :
services.xserver.windowManager.qtile.enable = true;
xmonad :
Code BASH :
services.xserver.windowManager.xmonad.enable = true;
Installer la pile son
Pour configurer le son avec pipewire :
Code BASH :
services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; };
Configurer le réseau avec NetworkManager
Pour vénéficier du support VPN, Wi-Fi plus facilement, on peut mettre en place NetworkManager :
Code BASH :
networking.networkmanager.enable = true;
On n'oubliera pas de mettre notre utilisateur dans le groupe NetworkManager :
Code BASH :
users.users.adrien = { isNormalUser = true; extraGroups = [ "wheel" "networkmanager" ]; # Enable ‘sudo’ for the user. };