diff --git a/README.md b/README.md index 008fbfb..3ddb5aa 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Le fichier [`.sops.yaml`](.sops.yaml) contient la description des secrets et des ### 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. +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 à [`hosts/README.md`](hosts/README.md) de manière plus générale. ### Modules diff --git a/modules/README.md b/modules/README.md index 016d434..fb791c0 100644 --- a/modules/README.md +++ b/modules/README.md @@ -1 +1,15 @@ -# Modules \ No newline at end of file +# Modules + +Ce dossier contient tous les modules utilisés par les configurations des différentes machines. + +## `default.nix` + +Le fichier [`default.nix`](default.nix) a deux utilités : il importe par défaut toute la configuration du Crans (voir [la section Crans](#crans)), et importe deux fonctionnalités indispensables pour notre utilisation de nix : les flakes (voir [le `README.md` à la racine du dépôt](../README.md#flakes)) et la commande `nix`. Comprendre en détails cette partie n'est pas nécessaire, il faut juste comprendre qu'il est important de décrire ça. + +## Crans + +Le dossier [`crans`](crans) contient tous les services/programmes communs à toutes les machines utilisant la configuration usuelle du Crans (les utilisateurices, les `home_nounou`, ...). Vous pouvez voir plus de détails dans [`crans/README.md`](crans/README.md). + +## Services + +Le dossier [`services`](services) contient tous les services/programmes utilisés par un nombre restreint de machines. On peut y déclarer deux types de configurations : les configurations directement inscrites car seront toujours utilisées de la même façon, et les configurations mettant en place un système d'options et de configuration générée pour avoir plus de granularités. Cette seconde utilisation est plus complexe à mettre en place et nécessite une meilleure compréhension de `nix`. diff --git a/modules/crans/README.md b/modules/crans/README.md new file mode 100644 index 0000000..a613a54 --- /dev/null +++ b/modules/crans/README.md @@ -0,0 +1,31 @@ +# Modules Crans + +Ce dossier contient tous les modules commun à la majorité des machines virtuelles du Crans. On y retrouve par exemple les utilisateurices, les `home_nounou`, etc. + +## `default.nix` + +Le fichier [`default.nix`](default.nix), comme tous les autres du même nom, importe tous les autres fichiers du dossier. De plus, il déclare des programmes utiles à avoir en permanence, tels que `ssh`, `git`, `nvim`, ... + +## `home.nix` + +Le fichier [`home.nix`](home.nix) monte les `home_nounou` par NFS à partir de `172.16.10.1` (à savoir `tealc`). + +## `locale.nix` + +Le fichier [`locale.nix`](locale.nix) déclare simplement les locales à utiliser. + +## `networking.nix` + +Le fichier [`networking.nix`](networking.nix) a moins d'utilité que ce à quoi on pourrait s'attendre : comme chaque machine possède sa propre configuration réseau, les seules choses communes à déclarer sont : la non-utilisation de DHCP, la non-utilisation d'un pare-feu par défault ainsi que l'ajout d'un serveur DNS. + +## `ntp.nix` + +Le fichier [`ntp.nix`](ntp.nix) active simplement le NTP (Network Time Protocol) en ajoutant le serveur `ntp.adm.crans.org` comme serveur de temps. + +## `sops.nix` + +Le fichier [`sops.nix`](sops.nix) déclare l'utilisation de `sops` dans la configuration (voir [ce `README.md`](../../secrets/README.md) pour plus de détails) et importe la clef publique SSH de la machine pour pouvoir l'utiliser dans la gestion des secrets. + +## `users.nix` + +Le fichier [`users.nix`](users.nix) configure les `_users` à partir du LDAP d'administration, et configure les droits pour que les `_nounou` aient les accès `sudo`. Il configure également l'utilisateur `root` en lui donnant son mot de passe haché à travers un fichier `sops`. diff --git a/modules/crans/default.nix b/modules/crans/default.nix index 85a4f47..4398919 100644 --- a/modules/crans/default.nix +++ b/modules/crans/default.nix @@ -18,8 +18,9 @@ }; # Enable some utility programs. - programs.neovim.enable = true; programs.git.enable = true; + programs.neovim.enable = true; + programs.tmux.enable = true; environment.systemPackages = with pkgs; [ shelldap diff --git a/modules/crans/networking.nix b/modules/crans/networking.nix index eceb2aa..1e3644b 100644 --- a/modules/crans/networking.nix +++ b/modules/crans/networking.nix @@ -1,10 +1,10 @@ -{ ... }: +{ lib, ... }: { # Les interfaces ne sont pas déclarées ici : elles sont propres à chaque VM. networking = { useDHCP = false; - firewall.enable = false; + firewall.enable = lib.mkDefault false; nameservers = [ "172.16.10.128" ]; }; } diff --git a/modules/crans/sops.nix b/modules/crans/sops.nix index 201ca20..2f0fab5 100644 --- a/modules/crans/sops.nix +++ b/modules/crans/sops.nix @@ -1,4 +1,6 @@ -{ sops-nix, ... }: { +{ sops-nix, ... }: + +{ imports = [ sops-nix.nixosModules.sops ]; diff --git a/secrets/README.md b/secrets/README.md index 6128225..3e96db4 100644 --- a/secrets/README.md +++ b/secrets/README.md @@ -1 +1 @@ -# Secrets \ No newline at end of file +# Secrets