mirror of https://gitlab.crans.org/nounous/nixos
Ajout documentation rôles des fichiers et sous-dossiers
parent
544b408a88
commit
9150a0feb7
|
@ -3,6 +3,7 @@ keys:
|
|||
- &neo age1ed9esfstrdhfl3650mv4j3mjyum70245f903ye6g0f5t2ept73nqyksh3g
|
||||
- &redite age1utlywxylme0z3jenv4uz8ftcwteg9877y3zf46fu7zwjjwa05g7q88w8t0
|
||||
- &two age1zlpu6qum5xcl07hnsndp78tllqph5jz7q8fr5ntxr88202xq9u9s9r2y7x
|
||||
|
||||
# Nounous keys.
|
||||
- &_aeltheos 0xDF6D6CE9E95E26E8
|
||||
- &_pigeonmoelleux 0xFA47BDA260489ADA
|
||||
|
|
29
README.md
29
README.md
|
@ -11,6 +11,12 @@ Les fichiers `README.md` des différents dossiers devraient indiquer assez préc
|
|||
2. [`NixOS`](#nixos)
|
||||
3. [`Nix Store`](#nix-store)
|
||||
4. [`Flakes`](#flakes)
|
||||
2. [Rôles des fichiers et sous-dossiers](#rôles-des-fichiers-et-sous-dossiers)
|
||||
1. [Fichiers `flake`](#fichiers-flake)
|
||||
2. [Secrets](#secrets)
|
||||
3. [Machines](#machines)
|
||||
4. [Modules](#modules)
|
||||
5. [Devshells](#devshells)
|
||||
|
||||
## Nix et NixOS
|
||||
|
||||
|
@ -32,7 +38,7 @@ En lisant quelques fichiers de configuration, vous devriez rapidement comprendre
|
|||
|
||||
### NixOS
|
||||
|
||||
`NixOS` se construit (*build* en anglais) sous forme de dérivations (voir [la partie sur le `Nix Store`](#nix-store) pour plus d'explications). Celles-ci contiennent l'intégralité de la configuration au moment du build, ce qui est forcé par le fait que l'évaluation se fait de façon pure, c'est-à-dire qu'il n'est pas possible d'utiliser des éléments en dehors de la configuration pour écrire la configuration. Cela est forcé par l'utilisation des `flakes` (voir [la partie consacrée aux `flakes`](TODO)).
|
||||
`NixOS` se construit (*build* en anglais) sous forme de dérivations (voir [la partie sur le `Nix Store`](#nix-store) pour plus d'explications). Celles-ci contiennent l'intégralité de la configuration au moment du build, ce qui est forcé par le fait que l'évaluation se fait de façon pure, c'est-à-dire qu'il n'est pas possible d'utiliser des éléments en dehors de la configuration pour écrire la configuration. Cela est forcé par l'utilisation des `flakes` (voir [la partie consacrée aux `flakes`](#flakes)).
|
||||
|
||||
Dans cette configuration, et grâce à l'utilisation des `flakes`, il est possible d'écrire la configuration de plusieurs machine dans ce même dépôt git. Chaque machine sous `NixOS` aura donc le code de chaque autre machine inscrite dans la configuration, mais du fait que **nix s'évalue de manière paresseuse**, chaque machine n'évaluera et ne compilera que ce qui est nécessaire pour sa propre configuration.
|
||||
|
||||
|
@ -48,3 +54,24 @@ Il est important de noter que **`/nix/store` est un dossier monté en lecture se
|
|||
|
||||
Le fichier [`flake.nix`](flake.nix) dénote de tous les autres fichiers de cette configuration : celui-ci est une `flake`, à savoir l'unité de permettant de packager du code `nix` de manière reproducible. Plus simplement, dans notre cas, cette `flake` contient toutes les sources utilisées dans la configuration pour pouvoir être évaluée, ainsi que toutes les sorties, à savoir les configurations de toutes les machines, ainsi que les shells de développement (voir [la partie sur les `devshells`](TODO)).
|
||||
|
||||
## Rôles des fichiers et sous-dossiers
|
||||
|
||||
### Fichiers flake
|
||||
|
||||
Les fichiers [`flake.nix`](flake.nix) et [`flake.lock`](flake.lock) sont respectivement la [`flake`](#flakes) de cette configuration et le *lockfile* associé. Le lockfile est généré automatiquement par certaines commandes et ne doit pas être modifié à la main : il s'agit, à la manière d'un `Cargo.lock` pour Rust ou d'un `package-lock.json` pour Node.js, d'un fichier décrivant précisément les versions des dépendances utilisées pour compiler/exécuter le projet.
|
||||
|
||||
### Secrets
|
||||
|
||||
Le fichier [`.sops.yaml`](.sops.yaml) contient la description des secrets et des clefs GPG utilisées par `Sops`, tant par les machines que par les nounous. Le dossier [`secrets`](secrets) contient tous les secrets nécessaires aux machines lors de la construction de leur configuration. Vous pouvez voir plus de détails dans [`secrets/README.md`](secrets/README.md).
|
||||
|
||||
### Machines
|
||||
|
||||
Le dossier [`hosts`](hosts) contient la configuration unique à chaque machine. On y retrouve en particulier le bootloader, le déchiffrement des secrets nécessaires pour la machine et la configuration réseau. En effet, il est utile de rappeler qu'aucune machine du Crans (hors VM adhérent⋅e⋅s) n'utilise du DHCP : il est donc nécessaire d'écrire à la main toutes les interfaces dont elles disposent. Pour plus de détails sur les interfaces réseaux, vous pouvez vous réferer à la [documentation des VLAN](https://gitlab.crans.org/nounous/documentation/-/blob/master/infrastructure/plan.md), et dans [`hosts/README.md`](hosts/README.md) de manière plus générale.
|
||||
|
||||
### Modules
|
||||
|
||||
Le dossier [`modules`](modules) contient l'ensemble des options qui peuvent être partagées par plusieurs configurations de machines. Vous pouvez voir plus de détails dans [`modules/README.md`](modules/README.md).
|
||||
|
||||
### Devshells
|
||||
|
||||
Le dossier [`devshells`](devshells) contient des environnements de travails pouvant être utilisés par tout utilisateur. Ceux-ci permettent d'ajouter temporairement des paquets à l'environnement de travail (dont le shell bash ou équivalent), permettant ainsi d'avoir facilement (voir [la partie sur les commandes liées aux devshells](TODO)) tous les outils nécessaires au développement/débuggage. Vous pouvez voir plus de détails dans [`devshells/README.md`](devshells/README.md).
|
||||
|
|
Loading…
Reference in New Issue