nixos sur dedibox
Sur ce projet, je suis parti d'un Start-2-S-SATA (~5€/mois) pour installer
NixOS afin d'avancer sur ma découverte de cette distribution.
Première installation
Comme Dedibox ne permet pas d'installer directement NixOS,
et que nous sommes obligés de faire une première installation.
Pour ma part je vais installer Debian 13.
Gagnez du temps en faisant la table de partition comme vous la souhaitez.
Boot rescue
Une fois l'installation terminée, nous allons boot
en mode rescue (sous ubuntu), et nous travaillerons
sur l'installation de NixOS depuis ce système.
Préparation du disque
Je reformate les partitions:
mkfs.ext2 /dev/sda1
mkfs.ext4 /dev/sda2 -L nixos
swapoff -a
mkswap /dev/sda3
Installation de nix
D'abord, nous allons installer nix sur notre système
rescue:
groupadd nixbld
useradd nixbld1
useradd nixbld2
useradd nixbld3
useradd nixbld4
gpasswd -a nixbld1 nixbld
gpasswd -a nixbld2 nixbld
gpasswd -a nixbld3 nixbld
gpasswd -a nixbld4 nixbld
apt install bzip2
sh <(curl -L https://nixos.org/nix/install) --daemon
. /root/.nix-profile/etc/profile.d/nix.sh
Préparation du système
Préparation du chroot:
mount /dev/sda2 /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
swapon /dev/sda3
Configuration du channel nixos:
nix-channel --remove nixpkgs
nix-channel --add http://nixos.org/channels/nixos-unstable nixos
nix-channel --update
Création de configuration.nix:
cat <<EOF > 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>"
Nous pouvons maintenant générer la config complète:
nixos-generate-config --root /mnt
À partir d'ici, vous devriez avoir les fichiers:
/mnt/etc/nixos/configuration.nix/mnt/etc/nixos/hardware-configuration.nix
Nous allons pouvoir modifier /mnt/etc/nixos/configuration.nix
avec par exemple cette configuration légère:
{ config, pkgs, ... }:
{
imports =
[
./hardware-configuration.nix
];
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda";
boot.kernelParams = [ "console=ttyS1" ];
networking.hostName = "clochette";
networking.networkmanager.enable = true;
networking.interfaces.eth0 = { ipv4.addresses = [ { address = "51.159.34.135"; prefixLength = 24; } ]; };
networking.defaultGateway = "51.159.34.1";
networking.nameservers = [ "51.159.47.28" "51.159.47.26" ];
time.timeZone = "Europe/Paris";
i18n.defaultLocale = "fr_FR.UTF-8";
nix.settings.trusted-users = ["root" "guillaume"];
services.openssh.enable = true;
security.sudo.wheelNeedsPassword = false;
users.users.guillaume = {
createHome = true;
isNormalUser = true;
linger = true;
home = "/home/guillaume";
description = "Moi";
extraGroups = [ "wheel" ];
useDefaultShell = true;
openssh.authorizedKeys.keys = [
"<clef publique>"
];
};
system.stateVersion = "26.05";
}
Installation
cd /mnt/etc/nixos/
unset NIXOS_CONFIG
nixos-install
Reboot
Nous pouvons maintenant sortie du mode rescue
et boot sur le disque!
La machine devrait répondre au ping, et la connexion
SSH être fonctionnelle.
De là, il sera possible de récupérer la config nix en
local, pour pouvoir déployer depuis votre PC, au lieu
de le faire depuis le serveur.