summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--accounts/gkleen@sif/libvirt/default.nix98
-rw-r--r--flake.lock36
-rw-r--r--flake.nix4
-rw-r--r--hosts/sif/default.nix77
-rw-r--r--hosts/sif/libvirt/default.nix2
5 files changed, 175 insertions, 42 deletions
diff --git a/accounts/gkleen@sif/libvirt/default.nix b/accounts/gkleen@sif/libvirt/default.nix
index a5636ce2..14480d55 100644
--- a/accounts/gkleen@sif/libvirt/default.nix
+++ b/accounts/gkleen@sif/libvirt/default.nix
@@ -1,4 +1,4 @@
1{ flakeInputs, lib, ... }: 1{ flakeInputs, lib, pkgs, ... }:
2 2
3with lib; 3with lib;
4with flakeInputs.nixVirt.lib; 4with flakeInputs.nixVirt.lib;
@@ -15,7 +15,7 @@ with flakeInputs.nixVirt.lib;
15 memory = { count = 16; unit = "GiB"; }; 15 memory = { count = 16; unit = "GiB"; };
16 storage_vol = "/home/gkleen/.local/share/libvirt/images/lmmirzm-vmrz01.qcow2"; 16 storage_vol = "/home/gkleen/.local/share/libvirt/images/lmmirzm-vmrz01.qcow2";
17 nvram_path = "/home/gkleen/.local/share/libvirt/lmmirzm-vmrz01.nvram"; 17 nvram_path = "/home/gkleen/.local/share/libvirt/lmmirzm-vmrz01.nvram";
18 virtio_drive = true; 18 virtio_drive = false;
19 virtio_video = false; 19 virtio_video = false;
20 install_virtio = false; 20 install_virtio = false;
21 }) { 21 }) {
@@ -23,6 +23,12 @@ with flakeInputs.nixVirt.lib;
23 { name = "SPICE_DEBUG_ALLOW_MC"; value = "1"; } 23 { name = "SPICE_DEBUG_ALLOW_MC"; value = "1"; }
24 ]; 24 ];
25 vcpu.count = 4; 25 vcpu.count = 4;
26 cpu = {
27 mode = "host-model";
28 feature = [
29 { name = "vmx"; policy = "require"; }
30 ];
31 };
26 os.bootmenu.enable = true; 32 os.bootmenu.enable = true;
27 devices.graphics = { 33 devices.graphics = {
28 listen.type = "address"; 34 listen.type = "address";
@@ -33,7 +39,7 @@ with flakeInputs.nixVirt.lib;
33 model.type = "e1000e"; 39 model.type = "e1000e";
34 type = "bridge"; 40 type = "bridge";
35 mac.address = "52:54:00:b9:f3:ed"; 41 mac.address = "52:54:00:b9:f3:ed";
36 source.bridge = "gre-0971"; 42 source.bridge = "rz-0971";
37 }; 43 };
38 devices.channel = [ 44 devices.channel = [
39 { 45 {
@@ -44,6 +50,81 @@ with flakeInputs.nixVirt.lib;
44 devices.tpm.model = "tpm-tis"; 50 devices.tpm.model = "tpm-tis";
45 }); 51 });
46 } 52 }
53 { definition = domain.writeXML (recursiveUpdate (domain.templates.linux {
54 name = "vmrz02";
55 uuid = "daefc4b0-c48d-4b9d-a85d-7bd56eb068d0";
56 memory = { count = 8; unit = "GiB"; };
57 storage_vol = "/home/gkleen/.local/share/libvirt/images/vmrz02.qcow2";
58 virtio_video = true;
59 }) {
60 os = {
61 loader =
62 {
63 readonly = true;
64 type = "pflash";
65 path = "${pkgs.OVMFFull.fd}/FV/OVMF_CODE.ms.fd";
66 };
67 nvram =
68 {
69 template = "${pkgs.OVMFFull.fd}/FV/OVMF_VARS.ms.fd";
70 path = "/home/gkleen/.local/share/libvirt/vmrz02.nvram";
71 };
72 bootmenu.enable = true;
73 };
74 qemu-commandline.env = [
75 { name = "SPICE_DEBUG_ALLOW_MC"; value = "1"; }
76 ];
77 vcpu.count = 4;
78 cpu = {
79 mode = "host-model";
80 feature = [
81 { name = "vmx"; policy = "require"; }
82 ];
83 };
84 devices.graphics = {
85 listen.type = "address";
86 gl.enable = false;
87 };
88 devices.video.model.acceleration.accel3d = false;
89 devices.interface = [
90 {
91 model.type = "virtio";
92 type = "bridge";
93 mac.address = "52:54:00:ec:d8:9d";
94 source.bridge = "rz-0971";
95 }
96 {
97 model.type = "virtio";
98 type = "bridge";
99 mac.address = "52:54:00:5e:f5:38";
100 source.bridge = "rz-2403";
101 }
102 ];
103 devices.channel = [
104 {
105 type = "unix";
106 target = { type = "virtio"; name = "org.qemu.guest_agent.0"; };
107 }
108 {
109 type = "spicevmc";
110 target = { type = "virtio"; name = "com.redhat.spice.0"; };
111 }
112 {
113 type = "spiceport";
114 target = { type = "virtio"; name = "org.spice-space.webdav.0"; };
115 source.channel = "org.spice-space.webdav.0";
116 }
117 ];
118 devices.tpm = {
119 model = "tpm-tis";
120 backend =
121 {
122 type = "emulator";
123 version = "2.0";
124 };
125 };
126 });
127 }
47 ]; 128 ];
48 pools = [ 129 pools = [
49 { definition = pool.writeXML { 130 { definition = pool.writeXML {
@@ -67,6 +148,17 @@ with flakeInputs.nixVirt.lib;
67 }; 148 };
68 }; 149 };
69 } 150 }
151 { definition = volume.writeXML {
152 type = "file";
153 name = "vmrz02.qcow2";
154 capacity = { count = 256; unit = "GB"; };
155 target = {
156 path = "/home/gkleen/.local/share/libvirt/images/vmrz02.qcow2";
157 format.type = "qcow2";
158 features.lazy_refcounts = {};
159 };
160 };
161 }
70 ]; 162 ];
71 } 163 }
72 ]; 164 ];
diff --git a/flake.lock b/flake.lock
index 2bef2351..02fd0911 100644
--- a/flake.lock
+++ b/flake.lock
@@ -431,20 +431,20 @@
431 "inputs": { 431 "inputs": {
432 "nixpkgs": [ 432 "nixpkgs": [
433 "nixpkgs" 433 "nixpkgs"
434 ], 434 ]
435 "nixpkgs-ovmf": "nixpkgs-ovmf"
436 }, 435 },
437 "locked": { 436 "locked": {
438 "lastModified": 1712439808, 437 "lastModified": 1729962349,
439 "narHash": "sha256-QoONoZPBpNTw5cia05QSvDlaxXo3moKAJQOw7c5hMXA=", 438 "narHash": "sha256-IJXoaJ8s8nXkFjdrgg6tsytR/gEhztoTYXRRVtR5NTQ=",
440 "rev": "9f1cdca730d92461075709e867c1e9ad93d58a8d", 439 "owner": "AshleyYakeley",
441 "revCount": 284, 440 "repo": "NixVirt",
442 "type": "tarball", 441 "rev": "a95847465536bc8ebfcd677672141d79cd13ba3c",
443 "url": "https://api.flakehub.com/f/pinned/AshleyYakeley/NixVirt/0.5.0/018eb55e-7beb-75c5-919f-5b5b26136e06/source.tar.gz" 442 "type": "github"
444 }, 443 },
445 "original": { 444 "original": {
446 "type": "tarball", 445 "owner": "AshleyYakeley",
447 "url": "https://flakehub.com/f/AshleyYakeley/NixVirt/%2A.tar.gz" 446 "repo": "NixVirt",
447 "type": "github"
448 } 448 }
449 }, 449 },
450 "nixos-hardware": { 450 "nixos-hardware": {
@@ -537,22 +537,6 @@
537 "type": "github" 537 "type": "github"
538 } 538 }
539 }, 539 },
540 "nixpkgs-ovmf": {
541 "locked": {
542 "lastModified": 1708984720,
543 "narHash": "sha256-gJctErLbXx4QZBBbGp78PxtOOzsDaQ+yw1ylNQBuSUY=",
544 "owner": "NixOS",
545 "repo": "nixpkgs",
546 "rev": "13aff9b34cc32e59d35c62ac9356e4a41198a538",
547 "type": "github"
548 },
549 "original": {
550 "owner": "NixOS",
551 "ref": "nixos-unstable",
552 "repo": "nixpkgs",
553 "type": "github"
554 }
555 },
556 "nixpkgs-pgbackrest": { 540 "nixpkgs-pgbackrest": {
557 "locked": { 541 "locked": {
558 "lastModified": 1685566663, 542 "lastModified": 1685566663,
diff --git a/flake.nix b/flake.nix
index fc60e599..b13bb021 100644
--- a/flake.nix
+++ b/flake.nix
@@ -180,7 +180,9 @@
180 }; 180 };
181 }; 181 };
182 nixVirt = { 182 nixVirt = {
183 url = "https://flakehub.com/f/AshleyYakeley/NixVirt/*.tar.gz"; 183 type = "github";
184 owner = "AshleyYakeley";
185 repo = "NixVirt";
184 inputs.nixpkgs.follows = "nixpkgs"; 186 inputs.nixpkgs.follows = "nixpkgs";
185 }; 187 };
186 }; 188 };
diff --git a/hosts/sif/default.nix b/hosts/sif/default.nix
index a2eca749..1a2748e9 100644
--- a/hosts/sif/default.nix
+++ b/hosts/sif/default.nix
@@ -182,7 +182,7 @@ in {
182 netdevConfig = { 182 netdevConfig = {
183 Name = "wgrz"; 183 Name = "wgrz";
184 Kind = "wireguard"; 184 Kind = "wireguard";
185 MTUBytes = "1538"; 185 MTUBytes = "1558";
186 }; 186 };
187 wireguardConfig = { 187 wireguardConfig = {
188 PrivateKeyFile = "/run/credentials/systemd-networkd.service/wgrz.priv"; 188 PrivateKeyFile = "/run/credentials/systemd-networkd.service/wgrz.priv";
@@ -204,22 +204,50 @@ in {
204 MACAddress = "52:54:00:18:85:5b"; 204 MACAddress = "52:54:00:18:85:5b";
205 }; 205 };
206 }; 206 };
207 gre-0971 = { 207 rz-gre-1 = {
208 netdevConfig = { 208 netdevConfig = {
209 Name = "gre-0971"; 209 Name = "rz-gre-1";
210 Kind = "bridge"; 210 Kind = "gretap";
211 MTUBytes = "1520";
212 };
213 tunnelConfig = {
214 Local = "10.200.116.128";
215 Remote = "10.200.116.1";
216 Independent = true;
217 };
218 };
219 rz-gre-1-0971 = {
220 netdevConfig = {
221 Name = "rz-gre-1-0971";
222 Kind = "vlan";
211 MTUBytes = "1500"; 223 MTUBytes = "1500";
212 }; 224 };
225 vlanConfig = {
226 Id = 971;
227 };
213 }; 228 };
214 gre-0971-1 = { 229 rz-gre-1-2403 = {
215 netdevConfig = { 230 netdevConfig = {
216 Name = "gre-0971-1"; 231 Name = "rz-gre-1-2403";
217 Kind = "gretap"; 232 Kind = "vlan";
218 MTUBytes = "1500"; 233 MTUBytes = "1500";
219 }; 234 };
220 tunnelConfig = { 235 vlanConfig = {
221 Local = "10.116.200.128"; 236 Id = 2403;
222 Remote = "10.116.200.1"; 237 };
238 };
239 rz-0971 = {
240 netdevConfig = {
241 Name = "rz-0971";
242 Kind = "bridge";
243 MTUBytes = "1500";
244 };
245 };
246 rz-2403 = {
247 netdevConfig = {
248 Name = "rz-2403";
249 Kind = "bridge";
250 MTUBytes = "1500";
223 }; 251 };
224 }; 252 };
225 }; 253 };
@@ -265,7 +293,7 @@ in {
265 LLMNR = false; 293 LLMNR = false;
266 MulticastDNS = false; 294 MulticastDNS = false;
267 DNS = ["10.153.88.9" "129.187.111.202" "10.156.33.53"]; 295 DNS = ["10.153.88.9" "129.187.111.202" "10.156.33.53"];
268 Tunnel = "gre-0971-1"; 296 # Tunnel = "rz-gre-1";
269 }; 297 };
270 }; 298 };
271 virbr0 = { 299 virbr0 = {
@@ -280,6 +308,33 @@ in {
280 MulticastDNS = false; 308 MulticastDNS = false;
281 }; 309 };
282 }; 310 };
311 rz-gre-1 = {
312 name = "rz-gre-1";
313 matchConfig = {
314 Name = "rz-gre-1";
315 };
316 networkConfig = {
317 VLAN = [ "rz-gre-1-0971" "rz-gre-1-2403" ];
318 };
319 };
320 rz-gre-1-0971 = {
321 name = "rz-gre-1-0971";
322 matchConfig = {
323 Name = "rz-gre-1-0971";
324 };
325 networkConfig = {
326 Bridge = "rz-0971";
327 };
328 };
329 rz-gre-1-2403 = {
330 name = "rz-gre-1-2403";
331 matchConfig = {
332 Name = "rz-gre-1-2403";
333 };
334 networkConfig = {
335 Bridge = "rz-2403";
336 };
337 };
283 }; 338 };
284 config.routeTables.wgrz = 1025; 339 config.routeTables.wgrz = 1025;
285 }; 340 };
diff --git a/hosts/sif/libvirt/default.nix b/hosts/sif/libvirt/default.nix
index b42fa8fc..d0be7dff 100644
--- a/hosts/sif/libvirt/default.nix
+++ b/hosts/sif/libvirt/default.nix
@@ -6,7 +6,7 @@ with flakeInputs.nixVirt.lib;
6 config = { 6 config = {
7 virtualisation.libvirtd = { 7 virtualisation.libvirtd = {
8 qemu.swtpm.enable = true; 8 qemu.swtpm.enable = true;
9 allowedBridges = ["virbr0" "gre-0971"]; 9 allowedBridges = ["virbr0" "rz-0971" "rz-2403"];
10 }; 10 };
11 virtualisation.libvirt = { 11 virtualisation.libvirt = {
12 enable = true; 12 enable = true;