main
 1{ lib, ... }:
 2{
 3  console.keyMap = lib.mkForce "us";
 4
 5  # disko handles GRUB device configuration
 6  boot.loader.grub.enable = lib.mkForce true;
 7  boot.loader.systemd-boot.enable = lib.mkForce false;
 8  boot.initrd.systemd.enable = lib.mkForce false;
 9
10  ## Hetzner Cloud (QEMU/KVM guest)
11  boot.initrd.availableKernelModules = [
12    "virtio_net"
13    "virtio_pci"
14    "virtio_mmio"
15    "virtio_blk"
16    "virtio_scsi"
17    "9p"
18    "9pnet_virtio"
19  ];
20  boot.initrd.kernelModules = [
21    "virtio_balloon"
22    "virtio_console"
23    "virtio_rng"
24  ];
25
26  boot.initrd.postDeviceCommands = ''
27    # Set the system time from the hardware clock to work around a
28    # bug in qemu-kvm > 1.5.2 (where the VM clock is initialised
29    # to the *boot time* of the host).
30    hwclock -s
31  '';
32
33  # VPS optimization: No physical hardware, no firmware needed
34  hardware.enableRedistributableFirmware = lib.mkForce false;
35  hardware.enableAllFirmware = lib.mkForce false;
36
37  # VPS optimization: No firmware update service needed
38  services.fwupd.enable = lib.mkForce false;
39}