Merge branch 'fix-factorisation' into 'main'

Corrections problèmes réseaux

See merge request nounous/nixos!21
merge-requests/21/merge
pigeonmoelleux 2025-06-25 17:13:45 +02:00
commit 0f36d759d2
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 :
// # elle est écrite de manière générique pour toutes les machines, puis
# Configuration du VLAN adm # on filtre pour ne garder que les interfaces activées. nix fait de
( # l'évaluation paresseuse donc ça fonctionne bien !
if cfg.adm.enable then interfaces =
{ # On change le nom des interfaces de "adm", "srv", ... pour leur vrai
interfaces."${cfg.adm.interface}" = { # 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;
})
(
# On filtre sur les interfaces activées
lib.attrsets.filterAttrs (interface: _: cfg."${interface}".enable) {
# 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
{ } san = {
)
//
# Configuration du VLAN 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 );
{ } };
);
}; };
} }