nixos: Improve VM networking
This commit is contained in:
@@ -6,7 +6,8 @@
|
||||
|
||||
nixos.systems.colony.configuration = { lib, pkgs, config, systems, ... }:
|
||||
let
|
||||
inherit (lib) mkMerge;
|
||||
inherit (builtins) listToAttrs;
|
||||
inherit (lib) mkIf mkMerge optionals;
|
||||
|
||||
wanBDF =
|
||||
if config.my.build.isDevVM then "00:02.0" else "01:00.0";
|
||||
@@ -28,32 +29,18 @@
|
||||
};
|
||||
in
|
||||
{
|
||||
systemd = {
|
||||
services."vm@estuary" = {
|
||||
# Depend the interface, networkd wait-online would deadlock...
|
||||
requires = [ "sys-subsystem-net-devices-base.device" ];
|
||||
preStart = ''
|
||||
count=0
|
||||
while ! ${pkgs.iproute2}/bin/ip link show dev base > /dev/null 2>&1; do
|
||||
count=$((count+1))
|
||||
if [ $count -ge 5 ]; then
|
||||
echo "Timed out waiting for bridge interface"
|
||||
fi
|
||||
sleep 0.5
|
||||
done
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
my = {
|
||||
vms = {
|
||||
instances = {
|
||||
estuary = {
|
||||
uuid = "59f51efb-7e6d-477b-a263-ed9620dbc87b";
|
||||
networks.base.mac = "52:54:00:ab:f1:52";
|
||||
networks.base = {
|
||||
waitOnline = "no-carrier";
|
||||
mac = "52:54:00:ab:f1:52";
|
||||
};
|
||||
drives = {
|
||||
# TODO: Split into separate LVs
|
||||
disk = {
|
||||
disk = mkIf (!config.my.build.isDevVM) {
|
||||
backend = {
|
||||
driver = "host_device";
|
||||
filename = "/dev/ssds/vm-estuary";
|
||||
@@ -72,10 +59,7 @@
|
||||
shill = {
|
||||
uuid = "e34569ec-d24e-446b-aca8-a3b27abc1f9b";
|
||||
networks.vms.mac = "52:54:00:85:b3:b1";
|
||||
drives = mkMerge [
|
||||
(vmLVM "shill" "esp")
|
||||
(vmLVM "shill" "nix")
|
||||
(vmLVM "shill" "persist")
|
||||
drives = mkMerge ([
|
||||
{
|
||||
installer = {
|
||||
backend = {
|
||||
@@ -89,9 +73,13 @@
|
||||
bootindex = 1;
|
||||
};
|
||||
};
|
||||
esp.frontendOpts.bootindex = 0;
|
||||
}
|
||||
];
|
||||
] ++ (optionals (!config.my.build.isDevVM) [
|
||||
(vmLVM "shill" "esp")
|
||||
(vmLVM "shill" "nix")
|
||||
(vmLVM "shill" "persist")
|
||||
{ esp.frontendOpts.bootindex = 0; }
|
||||
]));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
Reference in New Issue
Block a user