{ config, lib, ... }:
with lib;
let
  cfg = config;
in
{
  options.kernelAtleast = mkOption {
    type = types.listOf types.optionSet;
    options =
      [ { version = mkOption {
            type = types.str;
            example = "4.4";
            description =
              "Issue warning when kernel version is below this number.";
          };
          msg = mkOption {
            type = types.str;
            example = "";
          };
        }
      ];
  };

  config.warnings = builtins.concatLists (map
    (x: if (builtins.compareVersions cfg.boot.kernelPackages.kernel.version x.version) == -1
        then [ "${x.msg} (${cfg.boot.kernelPackages.kernel.version} < ${x.version})" ]
        else [ ]
    ) cfg.kernelAtleast
  );

}