{ machineConfig, ... }: {
  imports = [
    ./modules/custom-build-vm.nix
    ./modules/custom-sops-nix.nix
  ];

  config = {
    system.stateVersion = "23.11";

    # Map host keys into VM and launch vm using `virt-viewer`
    virtualisation =
      let
        vmConfig = {
          virtualisation = {
            sharedHostKeys = true;
            virt-viewer = true;
            cores = 4;
            memorySize = 4 * 1024;
          };
        };
      in {
        vmVariant = vmConfig;
        vmVariantWithBootLoader = vmConfig;
      };

    # Networking
    networking.hostName = machineConfig.name;

    # Set time zone
    time.timeZone = machineConfig.timeZone;

    # Configure keyboard layout
    console.keyMap = machineConfig.keyMap;
  };
}