feat(ap-v01): Use static address for admin vlan

This commit is contained in:
sinavir 2025-02-04 22:07:47 +01:00
parent 9a4f9c2ca3
commit d0ac1b673e
No known key found for this signature in database
3 changed files with 22 additions and 28 deletions

View file

@ -2,20 +2,24 @@
#
# SPDX-License-Identifier: EUPL-1.2
{ config, ... }:
{ config, nodeMeta, ... }:
let
svc = config.system.service;
inherit (nodeMeta.extraNodeSettings) building floor ap-no;
# FIXME switch to ipv6 tu be able to scale
adminIp = "10.0.253.${builtins.toString (ap-no + floor * 8 + building * 32 + 2)}";
in
{
services.admin-dhcpv4 = svc.network.dhcp.client.build {
services.admin-ip = svc.network.address.build {
interface = config.services.admin-vlan;
address = adminIp;
prefixLength = 24;
family = "inet";
};
services.admin-defaultroute4 = svc.network.route.build {
via = "$(output ${config.services.admin-dhcpv4} router)";
via = "10.0.253.1";
target = "default";
dependencies = [ config.services.admin-dhcpv4 ];
dependencies = [ config.services.admin-ip ];
};
# TODO: ensure SLAAC for admin-vlan.
}

View file

@ -2,34 +2,24 @@
#
# SPDX-License-Identifier: EUPL-1.2
{ config, pkgs, ... }:
{ pkgs, lib, ... }:
let
inherit (pkgs.liminix.services) oneshot;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs) serviceFns;
# TODO: imho, DNS should be static and provided by the router?
dns = [
"8.8.8.8"
"8.8.4.4"
"1.0.0.1"
];
resolvconf = pkgs.writeText "resolv.conf" (
lib.concatMapStringsSep "\n" (dns: ''echo "nameserver ${dns}" >> resolv.conf'') dns
);
in
{
# TODO: support dynamic reconfiguration once we are in the target VLAN?
services.resolvconf = oneshot rec {
name = "resolvconf";
# TODO: imho, DNS should be static and provided by the router?
up = ''
. ${serviceFns}
( in_outputs ${name}
for i in $(output ${config.services.admin-dhcpv4} dns); do
echo "nameserver $i" >> resolv.conf
done
)
'';
dependencies = [
config.services.admin-dhcpv4
];
};
filesystem = dir {
etc = dir {
"resolv.conf" = symlink "${config.services.resolvconf}/.outputs/resolv.conf";
"resolv.conf" = symlink "${resolvconf}";
};
};
}

View file

@ -41,7 +41,7 @@ in
inherit (parentConfig.services)
sshd
admin-vlan
admin-dhcpv4
admin-ip
admin-defaultroute4
;
defaultroute4 = svc.network.route.build {