Merge branch 'fix-factorisation' into 'main'

Corrections problèmes réseaux

See merge request nounous/nixos!21
merge-requests/22/merge
lzebulon 2025-06-25 17:17:34 +02:00
commit 6081457da2
1 changed files with 34 additions and 48 deletions

View File

@ -37,8 +37,8 @@ in
interface = mkOption { interface = mkOption {
type = types.str; type = types.str;
default = "ens18"; default = "ens19";
example = "ens19"; example = "ens20";
description = "Nom de l'interface réseau sur laquelle est située le VLAN srv."; description = "Nom de l'interface réseau sur laquelle est située le VLAN srv.";
}; };
@ -72,18 +72,29 @@ in
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
networking = networking = {
{
useDHCP = false; useDHCP = false;
firewall.enable = lib.mkDefault false; firewall.enable = lib.mkDefault false;
nameservers = [ "172.16.10.128" ]; nameservers = [ "172.16.10.128" ];
}
// # La configuration des interfaces se fait de la manière suivante :
# Configuration du VLAN adm # elle est écrite de manière générique pour toutes les machines, puis
# on filtre pour ne garder que les interfaces activées. nix fait de
# l'évaluation paresseuse donc ça fonctionne bien !
interfaces =
# On change le nom des interfaces de "adm", "srv", ... pour leur vrai
# nom (on ne le met pas directement pour faire fonctionner le filter
# plus bas).
lib.attrsets.mapAttrs'
(interface: conf: {
name = cfg."${interface}".interface;
value = conf;
})
( (
if cfg.adm.enable then # On filtre sur les interfaces activées
{ lib.attrsets.filterAttrs (interface: _: cfg."${interface}".enable) {
interfaces."${cfg.adm.interface}" = { # Configuration du VLAN adm
adm = {
ipv4.addresses = [ ipv4.addresses = [
{ {
address = "172.16.10.1${cfg.id}"; address = "172.16.10.1${cfg.id}";
@ -98,18 +109,9 @@ in
} }
]; ];
}; };
}
else
{ }
)
//
# Configuration du VLAN srv
(
if cfg.srv.enable then
{
firewall.enable = true;
interfaces."${cfg.srv.interface}" = { # Configuration du VLAN srv
srv = {
ipv4 = { ipv4 = {
addresses = [ addresses = [
{ {
@ -141,17 +143,9 @@ in
]; ];
}; };
}; };
}
else
{ }
)
//
# Configuration du VLAN srv-nat # Configuration du VLAN srv-nat
( srvNat = {
if cfg.srvNat.enable then
{
interfaces."${cfg.srvNat.interface}" = {
ipv4 = { ipv4 = {
addresses = [ addresses = [
{ {
@ -184,16 +178,9 @@ in
]; ];
}; };
}; };
}
else
{ }
)
//
# Configuration du VLAN san # Configuration du VLAN san
( san = {
if cfg.san.enable then
{
interfaces."${cfg.san.interface}" = {
ipv4.addresses = [ ipv4.addresses = [
{ {
address = "172.16.4.1${cfg.id}"; address = "172.16.4.1${cfg.id}";
@ -209,8 +196,7 @@ in
]; ];
}; };
} }
else
{ }
); );
}; };
};
} }