Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.

Sources