Skip to content

NixOS

Le store, les profils et les générations

Chaque paquet et chaque configuration système sont stockés dans /nix/store/ sous un chemin unique basé sur un hash cryptographique. Quand vous modifiez la configuration et reconstruisez le système, NixOS crée une nouvelle génération sans toucher à l’ancienne. Vous pouvez revenir en arrière instantanément.

Très bien, from scratch.

1. Activer les flakes

Dans /etc/nixos/configuration.nix, ajoute :

nix.settings.experimental-features = [ "nix-command" "flakes" ];

Puis :

sudo nixos-rebuild switch


2. Créer le flake

sudo mv /etc/nixos/configuration.nix /etc/nixos/configuration.nix.bak
sudo nano /etc/nixos/flake.nix
{
  description = "NixOS configuration";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
    home-manager.url = "github:nix-community/home-manager/release-25.11";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs = inputs@{ nixpkgs, home-manager, ... }: {
    nixosConfigurations = {
      nixos = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        modules = [
          ./configuration.nix
          home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.extraSpecialArgs = { inherit inputs; };
            home-manager.users.mathod = ./home.nix;
          }
        ];
      };
    };
  };
}

3. Restaurer configuration.nix

sudo mv /etc/nixos/configuration.nix.bak /etc/nixos/configuration.nix

4. Créer home.nix

sudo nano /etc/nixos/home.nix
{ config, pkgs, ... }:

{
  home.username = "mathod";
  home.homeDirectory = "/home/mathod";
  home.stateVersion = "25.11";

  programs.home-manager.enable = true;

  programs.vim = {
    enable = true;
    settings = {
      expandtab = true;
      tabstop = 2;
      number = true;
    };
  };

  programs.zsh = {
    enable = true;
  };
}

5. Appliquer

sudo nixos-rebuild switch --flake /etc/nixos#nixos

Home-manager est installé. Ensuite tu ajoutes tes packages et programmes dans home.nix.