Add static ipv6 addresses

This commit is contained in:
asonix 2024-07-04 15:59:56 -05:00
parent 025f3c7e6d
commit 7d01f776e4
2 changed files with 60 additions and 13 deletions

View file

@ -76,11 +76,11 @@
}; };
makeBoardK3sConfig = modules: makeBoardK3sConfig = modules:
{ hostname, macAddress ? null, enableK3s ? true, selfIp, serverIp }: { hostname, macAddress ? null, enableK3s ? true, selfIp, selfIp6, serverIp }:
makeGenericK3sConfig { makeGenericK3sConfig {
inherit hostname enableK3s serverIp; inherit hostname enableK3s serverIp;
extraModules = [ (networkModule { inherit macAddress selfIp; }) ] extraModules = [ (networkModule { inherit macAddress selfIp selfIp6; }) ]
++ modules; ++ modules;
}; };
@ -99,6 +99,7 @@
, unlockMounts ? true , unlockMounts ? true
, mountVolumes ? true , mountVolumes ? true
, selfIp , selfIp
, selfIp6
, serverIp ? null , serverIp ? null
}: }:
let let
@ -113,7 +114,7 @@
enableK3s = unlockMounts && mountVolumes && enableK3s; enableK3s = unlockMounts && mountVolumes && enableK3s;
extraModules = sd-images.packages.${system}.SoQuartzBlade.modules ++ [ extraModules = sd-images.packages.${system}.SoQuartzBlade.modules ++ [
(networkModule { inherit selfIp; }) (networkModule { inherit selfIp selfIp6; })
(btrbkModule { (btrbkModule {
instances = [ instances = [
{ {
@ -267,6 +268,7 @@
, unlockMounts ? true , unlockMounts ? true
, mountVolumes ? true , mountVolumes ? true
, selfIp , selfIp
, selfIp6
, serverIp ? null , serverIp ? null
}: }:
let let
@ -280,7 +282,7 @@
enableK3s = unlockMounts && mountVolumes && enableK3s; enableK3s = unlockMounts && mountVolumes && enableK3s;
extraModules = sd-images.packages.${system}.SoQuartzBlade.modules ++ [ extraModules = sd-images.packages.${system}.SoQuartzBlade.modules ++ [
(networkModule { inherit selfIp; }) (networkModule { inherit selfIp selfIp6; })
(btrbkModule { (btrbkModule {
instances = [ instances = [
{ {
@ -410,7 +412,7 @@
}; };
makeBuildConfig = system: makeBuildConfig = system:
{ hostname, macAddress ? null, selfIp }: { hostname, macAddress ? null, selfIp, selfIp6 }:
let let
device = "/btrfs.4G"; device = "/btrfs.4G";
mountDir = "/btrfs/loop"; mountDir = "/btrfs/loop";
@ -421,7 +423,7 @@
extraModules = sd-images.packages.${system}.RockPro64v2.modules ++ [ extraModules = sd-images.packages.${system}.RockPro64v2.modules ++ [
dockerModule dockerModule
(networkModule { inherit macAddress selfIp; }) (networkModule { inherit macAddress selfIp selfIp6; })
(btrbkModule { instances = [{ inherit mountDir subvolumes; }]; }) (btrbkModule { instances = [{ inherit mountDir subvolumes; }]; })
(subvolumesModule { inherit device subvolumes; }) (subvolumesModule { inherit device subvolumes; })
({ lib, ... }: { ({ lib, ... }: {
@ -449,6 +451,7 @@
makeBoardBackupConfig = modules: system: makeBoardBackupConfig = modules: system:
{ hostname { hostname
, selfIp , selfIp
, selfIp6
, unlockMounts ? true , unlockMounts ? true
, mountVolumes ? true , mountVolumes ? true
, enableBackups ? true , enableBackups ? true
@ -463,7 +466,7 @@
inherit hostname; inherit hostname;
extraModules = modules ++ [ extraModules = modules ++ [
(networkModule { inherit selfIp; }) (networkModule { inherit selfIp selfIp6; })
(btrbkModule { (btrbkModule {
instances = backupHosts; instances = backupHosts;
localMountDir = mountDir; localMountDir = mountDir;
@ -549,7 +552,7 @@
makeQuartz64ABackupConfig = makeBoardBackupConfig sd-images.packages.${system}.Quartz64A.modules; makeQuartz64ABackupConfig = makeBoardBackupConfig sd-images.packages.${system}.Quartz64A.modules;
makeJellyfinConfig = system: makeJellyfinConfig = system:
{ hostname, selfIp, macAddress ? null, unlockMounts ? true, mountVolumes ? true, enableJellyfin ? true }: { hostname, selfIp, selfIp6, macAddress ? null, unlockMounts ? true, mountVolumes ? true, enableJellyfin ? true }:
let let
deviceLabel = "RAID"; deviceLabel = "RAID";
device = "/dev/disk/by-label/${deviceLabel}"; device = "/dev/disk/by-label/${deviceLabel}";
@ -560,7 +563,7 @@
inherit hostname; inherit hostname;
extraModules = sd-images.packages.${system}.RockPro64v2.modules ++ [ extraModules = sd-images.packages.${system}.RockPro64v2.modules ++ [
(networkModule { inherit macAddress selfIp; }) (networkModule { inherit macAddress selfIp selfIp6; })
(if unlockMounts && mountVolumes then (if unlockMounts && mountVolumes then
(btrbkModule { (btrbkModule {
instances = [{ inherit mountDir subvolumes; name = "jellyfin"; }]; instances = [{ inherit mountDir subvolumes; name = "jellyfin"; }];
@ -666,7 +669,7 @@
}; };
makePostgresConfig = system: makePostgresConfig = system:
{ hostname, selfIp, macAddress, keyFile, primaryIp ? null, unlockMounts ? true, mountVolumes ? true, luksDevice ? "/dev/sda1" }: { hostname, selfIp, selfIp6, macAddress, keyFile, primaryIp ? null, unlockMounts ? true, mountVolumes ? true, luksDevice ? "/dev/sda1" }:
let let
device = "/dev/mapper/cryptdrive1"; device = "/dev/mapper/cryptdrive1";
mountDir = "/btrfs/ssd"; mountDir = "/btrfs/ssd";
@ -677,7 +680,7 @@
extraModules = sd-images.packages.${system}.Rock64.modules ++ [ extraModules = sd-images.packages.${system}.Rock64.modules ++ [
dockerModule dockerModule
(networkModule { inherit macAddress selfIp; }) (networkModule { inherit macAddress selfIp selfIp6; })
(if unlockMounts && mountVolumes then (if unlockMounts && mountVolumes then
(btrbkModule { (btrbkModule {
instances = [{ inherit mountDir primaryIp subvolumes; }]; instances = [{ inherit mountDir primaryIp subvolumes; }];
@ -755,6 +758,7 @@
redtail1 = makePostgresConfig system { redtail1 = makePostgresConfig system {
hostname = "redtail1"; hostname = "redtail1";
selfIp = "192.168.20.23"; selfIp = "192.168.20.23";
selfIp6 = "2001:db8:20::23";
macAddress = "02:fe:30:d8:cf:64"; macAddress = "02:fe:30:d8:cf:64";
keyFile = "redtailKeyFile"; keyFile = "redtailKeyFile";
primaryIp = "192.168.20.24"; primaryIp = "192.168.20.24";
@ -764,6 +768,7 @@
redtail2 = makePostgresConfig system { redtail2 = makePostgresConfig system {
hostname = "redtail2"; hostname = "redtail2";
selfIp = "192.168.20.24"; selfIp = "192.168.20.24";
selfIp6 = "2001:db8:20::24";
macAddress = "02:8a:70:2a:a8:5e"; macAddress = "02:8a:70:2a:a8:5e";
keyFile = "redtailKeyFile"; keyFile = "redtailKeyFile";
# primaryIp = "192.168.20.23"; # primaryIp = "192.168.20.23";
@ -772,6 +777,7 @@
whitestorm1 = makePostgresConfig system { whitestorm1 = makePostgresConfig system {
hostname = "whitestorm1"; hostname = "whitestorm1";
selfIp = "192.168.20.26"; selfIp = "192.168.20.26";
selfIp6 = "2001:db8:20::26";
macAddress = "02:71:18:30:fc:0f"; macAddress = "02:71:18:30:fc:0f";
keyFile = "whitestormKeyFile"; keyFile = "whitestormKeyFile";
# primaryIp = "192.168.20.27"; # primaryIp = "192.168.20.27";
@ -780,6 +786,7 @@
whitestorm2 = makePostgresConfig system { whitestorm2 = makePostgresConfig system {
hostname = "whitestorm2"; hostname = "whitestorm2";
selfIp = "192.168.20.27"; selfIp = "192.168.20.27";
selfIp6 = "2001:db8:20::27";
macAddress = "02:ff:ce:a9:d3:74"; macAddress = "02:ff:ce:a9:d3:74";
keyFile = "whitestormKeyFile"; keyFile = "whitestormKeyFile";
primaryIp = "192.168.20.26"; primaryIp = "192.168.20.26";
@ -788,106 +795,124 @@
build2 = makeBuildConfig system { build2 = makeBuildConfig system {
hostname = "build2"; hostname = "build2";
selfIp = "192.168.20.101"; selfIp = "192.168.20.101";
selfIp6 = "2001:db8:20::101";
}; };
k3s1 = makeOldSoQuartzK3sConfig system { k3s1 = makeOldSoQuartzK3sConfig system {
hostname = "k3s1"; hostname = "k3s1";
selfIp = "192.168.20.120"; selfIp = "192.168.20.120";
selfIp6 = "2001:db8:20::120";
}; };
k3s2 = makeOldSoQuartzK3sConfig system { k3s2 = makeOldSoQuartzK3sConfig system {
hostname = "k3s2"; hostname = "k3s2";
selfIp = "192.168.20.121"; selfIp = "192.168.20.121";
selfIp6 = "2001:db8:20::121";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s3 = makeOldSoQuartzK3sConfig system { k3s3 = makeOldSoQuartzK3sConfig system {
hostname = "k3s3"; hostname = "k3s3";
selfIp = "192.168.20.122"; selfIp = "192.168.20.122";
selfIp6 = "2001:db8:20::122";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s4 = makeOldSoQuartzK3sConfig system { k3s4 = makeOldSoQuartzK3sConfig system {
hostname = "k3s4"; hostname = "k3s4";
selfIp = "192.168.20.123"; selfIp = "192.168.20.123";
selfIp6 = "2001:db8:20::123";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s5 = makeOldSoQuartzK3sConfig system { k3s5 = makeOldSoQuartzK3sConfig system {
hostname = "k3s5"; hostname = "k3s5";
selfIp = "192.168.20.124"; selfIp = "192.168.20.124";
selfIp6 = "2001:db8:20::124";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s6 = makeSoQuartzK3sConfig system { k3s6 = makeSoQuartzK3sConfig system {
hostname = "k3s6"; hostname = "k3s6";
selfIp = "192.168.20.125"; selfIp = "192.168.20.125";
selfIp6 = "2001:db8:20::125";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s7 = makeSoQuartzK3sConfig system { k3s7 = makeSoQuartzK3sConfig system {
hostname = "k3s7"; hostname = "k3s7";
selfIp = "192.168.20.126"; selfIp = "192.168.20.126";
selfIp6 = "2001:db8:20::126";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s8 = makeSoQuartzK3sConfig system { k3s8 = makeSoQuartzK3sConfig system {
hostname = "k3s8"; hostname = "k3s8";
selfIp = "192.168.20.127"; selfIp = "192.168.20.127";
selfIp6 = "2001:db8:20::127";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s9 = makeSoQuartzK3sConfig system { k3s9 = makeSoQuartzK3sConfig system {
hostname = "k3s9"; hostname = "k3s9";
selfIp = "192.168.20.128"; selfIp = "192.168.20.128";
selfIp6 = "2001:db8:20::128";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s10 = makeSoQuartzK3sConfig system { k3s10 = makeSoQuartzK3sConfig system {
hostname = "k3s10"; hostname = "k3s10";
selfIp = "192.168.20.129"; selfIp = "192.168.20.129";
selfIp6 = "2001:db8:20::129";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s11 = makeSoQuartzK3sConfig system { k3s11 = makeSoQuartzK3sConfig system {
hostname = "k3s11"; hostname = "k3s11";
selfIp = "192.168.20.130"; selfIp = "192.168.20.130";
selfIp6 = "2001:db8:20::130";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s12 = makeSoQuartzK3sConfig system { k3s12 = makeSoQuartzK3sConfig system {
hostname = "k3s12"; hostname = "k3s12";
selfIp = "192.168.20.131"; selfIp = "192.168.20.131";
selfIp6 = "2001:db8:20::131";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s13 = makeSoQuartzK3sConfig system { k3s13 = makeSoQuartzK3sConfig system {
hostname = "k3s13"; hostname = "k3s13";
selfIp = "192.168.20.132"; selfIp = "192.168.20.132";
selfIp6 = "2001:db8:20::132";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s14 = makeSoQuartzK3sConfig system { k3s14 = makeSoQuartzK3sConfig system {
hostname = "k3s14"; hostname = "k3s14";
selfIp = "192.168.20.133"; selfIp = "192.168.20.133";
selfIp6 = "2001:db8:20::133";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s15 = makeSoQuartzK3sConfig system { k3s15 = makeSoQuartzK3sConfig system {
hostname = "k3s15"; hostname = "k3s15";
selfIp = "192.168.20.134"; selfIp = "192.168.20.134";
selfIp6 = "2001:db8:20::134";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s16 = makeSoQuartzK3sConfig system { k3s16 = makeSoQuartzK3sConfig system {
hostname = "k3s16"; hostname = "k3s16";
selfIp = "192.168.20.135"; selfIp = "192.168.20.135";
selfIp6 = "2001:db8:20::135";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s-rock1 = makeRock64K3sConfig system { k3s-rock1 = makeRock64K3sConfig system {
hostname = "k3s-rock1"; hostname = "k3s-rock1";
selfIp = "192.168.20.110"; selfIp = "192.168.20.110";
selfIp6 = "2001:db8:20::110";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
macAddress = "02:36:51:19:8c:5d"; macAddress = "02:36:51:19:8c:5d";
}; };
@ -895,6 +920,7 @@
k3s-rock2 = makeRock64K3sConfig system { k3s-rock2 = makeRock64K3sConfig system {
hostname = "k3s-rock2"; hostname = "k3s-rock2";
selfIp = "192.168.20.111"; selfIp = "192.168.20.111";
selfIp6 = "2001:db8:20::111";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
macAddress = "02:af:fa:0e:c5:41"; macAddress = "02:af:fa:0e:c5:41";
}; };
@ -902,6 +928,7 @@
k3s-rock3 = makeRock64K3sConfig system { k3s-rock3 = makeRock64K3sConfig system {
hostname = "k3s-rock3"; hostname = "k3s-rock3";
selfIp = "192.168.20.112"; selfIp = "192.168.20.112";
selfIp6 = "2001:db8:20::112";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
macAddress = "02:86:c1:62:77:51"; macAddress = "02:86:c1:62:77:51";
}; };
@ -909,6 +936,7 @@
k3s-rock4 = makeRock64K3sConfig system { k3s-rock4 = makeRock64K3sConfig system {
hostname = "k3s-rock4"; hostname = "k3s-rock4";
selfIp = "192.168.20.113"; selfIp = "192.168.20.113";
selfIp6 = "2001:db8:20::113";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
macAddress = "02:7a:2e:2c:bb:99"; macAddress = "02:7a:2e:2c:bb:99";
}; };
@ -916,6 +944,7 @@
k3s-rock5 = makeRock64K3sConfig system { k3s-rock5 = makeRock64K3sConfig system {
hostname = "k3s-rock5"; hostname = "k3s-rock5";
selfIp = "192.168.20.114"; selfIp = "192.168.20.114";
selfIp6 = "2001:db8:20::114";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
macAddress = "02:76:67:0f:a0:b7"; macAddress = "02:76:67:0f:a0:b7";
}; };
@ -923,6 +952,7 @@
k3s-rock6 = makeRock64K3sConfig system { k3s-rock6 = makeRock64K3sConfig system {
hostname = "k3s-rock6"; hostname = "k3s-rock6";
selfIp = "192.168.20.115"; selfIp = "192.168.20.115";
selfIp6 = "2001:db8:20::115";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
macAddress = "02:6b:c5:f0:d7:6d"; macAddress = "02:6b:c5:f0:d7:6d";
}; };
@ -930,6 +960,7 @@
k3s-rock7 = makeRock64K3sConfig system { k3s-rock7 = makeRock64K3sConfig system {
hostname = "k3s-rock7"; hostname = "k3s-rock7";
selfIp = "192.168.20.116"; selfIp = "192.168.20.116";
selfIp6 = "2001:db8:20::116";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
macAddress = "02:5b:c4:cf:25:c2"; macAddress = "02:5b:c4:cf:25:c2";
}; };
@ -937,18 +968,21 @@
k3s-quartza1 = makeQuartz64AK3sConfig system { k3s-quartza1 = makeQuartz64AK3sConfig system {
hostname = "k3s-quartza1"; hostname = "k3s-quartza1";
selfIp = "192.168.20.160"; selfIp = "192.168.20.160";
selfIp6 = "2001:db8:20::160";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
k3s-rockpro1 = makeRockPro64K3sConfig system { k3s-rockpro1 = makeRockPro64K3sConfig system {
hostname = "k3s-rockpro1"; hostname = "k3s-rockpro1";
selfIp = "192.168.20.180"; selfIp = "192.168.20.180";
selfIp6 = "2001:db8:20::180";
serverIp = "192.168.20.120"; serverIp = "192.168.20.120";
}; };
jellyfin = makeJellyfinConfig system { jellyfin = makeJellyfinConfig system {
hostname = "jellyfin"; hostname = "jellyfin";
selfIp = "192.168.20.195"; selfIp = "192.168.20.195";
selfIp6 = "2001:db8:20::195";
}; };
pinetab2 = makeDesktopConfig { pinetab2 = makeDesktopConfig {
@ -989,6 +1023,7 @@
makeQuartz64ABackupConfig system { makeQuartz64ABackupConfig system {
hostname = "backup1"; hostname = "backup1";
selfIp = "192.168.20.190"; selfIp = "192.168.20.190";
selfIp6 = "2001:db8:20::190";
backupHosts = [ backupHosts = [
(k3sMain { (k3sMain {
ip = "192.168.20.120"; ip = "192.168.20.120";
@ -1112,6 +1147,7 @@
makeRockPro64BackupConfig system { makeRockPro64BackupConfig system {
hostname = "backup2"; hostname = "backup2";
selfIp = "192.168.20.191"; selfIp = "192.168.20.191";
selfIp6 = "2001:db8:20::191";
backupHosts = (builtins.map firestar [ backupHosts = (builtins.map firestar [
{ {
name = "hdd"; name = "hdd";

View file

@ -1,4 +1,4 @@
{ macAddress ? null, selfIp }: { macAddress ? null, selfIp, selfIp6 }:
{ {
networking = { networking = {
@ -8,8 +8,19 @@
address = selfIp; address = selfIp;
prefixLength = 24; prefixLength = 24;
}]; }];
ipv6.addresses = [{
address = selfIp6;
prefixLength = 64;
}];
}; };
defaultGateway = "192.168.20.1"; defaultGateway = "192.168.20.1";
nameservers = [ "192.168.20.1" ]; defaultGateway6 = {
address = "2001:db8:20::1";
interface = "end0";
};
nameservers = [
"192.168.20.1"
"2001:db8:20::1"
];
}; };
} }