|
12 | 12 | } |
13 | 13 | ]; |
14 | 14 |
|
15 | | - # Generate image with optional extra modules |
16 | 15 | mkImage = format: extraModules: inputs.nixos-generators.nixosGenerate { |
17 | 16 | system = "x86_64-linux"; |
18 | 17 | inherit format; |
19 | 18 | modules = baseModules ++ extraModules; |
20 | 19 | }; |
21 | 20 |
|
22 | | - # Cloud images need to disable sudo.execWheelOnly |
23 | 21 | cloudImageModule = {lib, ...}: { |
24 | 22 | security.sudo.execWheelOnly = lib.mkForce false; |
25 | 23 | }; |
26 | 24 |
|
27 | | - # Some formats configure their own bootloader |
28 | 25 | noBootloaderModule = {lib, ...}: { |
29 | 26 | boot.loader.systemd-boot.enable = lib.mkForce false; |
30 | 27 | boot.loader.efi.canTouchEfiVariables = lib.mkForce false; |
31 | 28 | }; |
32 | 29 |
|
33 | | - # VirtualBox needs more resources for building |
34 | 30 | virtualboxModule = { |
35 | 31 | virtualbox.params.diskSize = 16384; # 16GB instead of default 8GB |
36 | 32 | virtualbox.params.memorySize = 2048; # 2GB RAM for the final VM |
37 | 33 | virtualbox.memorySize = 4096; # 4GB RAM for the build VM |
38 | 34 | }; |
39 | 35 |
|
40 | | - # LXC containers need special network configuration |
41 | 36 | lxcModule = {lib, ...}: { |
42 | 37 | networking.useHostResolvConf = lib.mkForce false; |
43 | 38 | services.resolved.enable = lib.mkForce true; |
44 | 39 | }; |
45 | 40 | in { |
46 | 41 | flake = { |
47 | 42 | packages.x86_64-linux = { |
48 | | - # QEMU/KVM |
49 | 43 | qcow2 = mkImage "qcow" []; |
50 | 44 |
|
51 | | - # Cloud providers |
52 | 45 | ami = mkImage "amazon" [ |
53 | 46 | inputs.srvos.nixosModules.hardware-amazon |
54 | 47 | cloudImageModule |
|
75 | 68 | noBootloaderModule |
76 | 69 | ]; |
77 | 70 |
|
78 | | - # Oracle Cloud Infrastructure - using raw-efi format |
79 | 71 | oracle = mkImage "raw-efi" [ |
80 | 72 | cloudImageModule |
81 | 73 | ]; |
82 | 74 |
|
83 | | - # Virtualization |
84 | 75 | vmware = mkImage "vmware" []; |
85 | | - virtualbox = mkImage "virtualbox" [ |
86 | | - noBootloaderModule |
87 | | - virtualboxModule |
88 | | - ]; |
89 | 76 | proxmox = mkImage "proxmox" [ |
90 | 77 | noBootloaderModule |
91 | 78 | ]; |
92 | 79 | hyperv = mkImage "hyperv" []; |
93 | 80 |
|
94 | | - # Container |
95 | 81 | lxc = mkImage "lxc" [ |
96 | 82 | lxcModule |
97 | 83 | noBootloaderModule |
|
0 commit comments