1.9 KiB
1.9 KiB
Fonctionnement de flake
Général
- Permet de télécharger des dépendances de code comme <home-manager>
Stocke les dépendances dans le fichier
flake.lock
. Si l'on souhaite figer la version des dépendances pour éviter tout risque de mauvaise configuration. On peut utiliser le fichierflake.log
- Permet de configurer facilement notre propre configuration comme depuis les dotfiles
Installation
Pour le moment, flake est encore expérimental donc il faut l'activer manuellement.
/etc/nixos/configuration.nix
[...]
# BEGIN: Add flake feature TODO: Remove when not experimental
nix = {
package = pkgs.nixFlakes;
extraOptions = "experimental-features = nix-command flakes";
};
# END: Add flake feature
}
Configuration initial
Génére le fichier flake.nix
nix flake init
flake.nix
{
description = "A very basic flake";
outputs = { self, nixpkgs }: {
packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
packages.x86_64-linux.default = self.packages.x86_64-linux.hello;
};
}
Structure
Inputs
Défini l'ensemble des dépendances utilisées dans le flake
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
};
Outputs
Récupère les inputs dans la fonction en paramètre
- Permet de configurer ce que l'on a importé.
- Peut configurer les packages, configurations, modules, ...
outputs = { self, nixpkgs }:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
lib = nixpkgs.lib;
in {
nixosConfigurations = {
# <hostname> specified with
# `nixos-rebuild [build/switch] --flake .#<hostname>`
<hostname> = lib.nixosSystem {
inherit system;
modules = [ ./configuration.nix ];
};
};
};