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 {
type = types.str;
default = "ens18";
example = "ens19";
default = "ens19";
example = "ens20";
description = "Nom de l'interface réseau sur laquelle est située le VLAN srv.";
};
@ -72,18 +72,29 @@ in
};
config = mkIf cfg.enable {
networking =
{
useDHCP = false;
firewall.enable = lib.mkDefault false;
nameservers = [ "172.16.10.128" ];
}
//
# Configuration du VLAN adm
(
if cfg.adm.enable then
{
interfaces."${cfg.adm.interface}" = {
networking = {
useDHCP = false;
firewall.enable = lib.mkDefault false;
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
# 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;
})
(
# On filtre sur les interfaces activées
lib.attrsets.filterAttrs (interface: _: cfg."${interface}".enable) {
# Configuration du VLAN adm
adm = {
ipv4.addresses = [
{
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 = {
addresses = [
{
@ -141,17 +143,9 @@ in
];
};
};
}
else
{ }
)
//
# Configuration du VLAN srv-nat
(
if cfg.srvNat.enable then
{
interfaces."${cfg.srvNat.interface}" = {
# Configuration du VLAN srv-nat
srvNat = {
ipv4 = {
addresses = [
{
@ -184,16 +178,9 @@ in
];
};
};
}
else
{ }
)
//
# Configuration du VLAN san
(
if cfg.san.enable then
{
interfaces."${cfg.san.interface}" = {
# Configuration du VLAN san
san = {
ipv4.addresses = [
{
address = "172.16.4.1${cfg.id}";
@ -209,8 +196,7 @@ in
];
};
}
else
{ }
);
);
};
};
}