let
  mkOpts = ver: prio: sys: virt: swvirt: hwvirt:
    { config.priority               = prio;
      config.system                 = sys;
      config.virtualisationConfig   = virt;
      config.hardwareVirtualisation = hwvirt;
      config.virtualisationSoftware = swvirt;
    } // builtins.listToAttrs [ { name = ver; value = true; } ];
in
{
  # Stable kernels
  linux_grsec_stable_desktop =
    mkOpts "stable" "performance" "desktop" "host" "kvm" true;
  linux_grsec_stable_server  =
    mkOpts "stable" "security" "server" "host" "kvm" true;
  linux_grsec_stable_server_xen =
    mkOpts "stable" "security" "server" "guest" "xen" true;

  # Testing kernels
  linux_grsec_testing_desktop =
    mkOpts "testing" "performance" "desktop" "host" "kvm" true;
  linux_grsec_testing_server  =
    mkOpts "testing" "security" "server" "host" "kvm" true;
  linux_grsec_testing_server_xen =
    mkOpts "testing" "security" "server" "guest" "xen" true;
}
