{
  config,
  lib,
  namespace,
  ...
}:
with lib;
let
  inherit (lib.${namespace}) mkOpt;
  cfg = config.${namespace}.boot.systemd-boot;
in
{
  options.${namespace}.boot.systemd-boot = {
    enable = mkEnableOption "enable systemd-boot";

    configLimit = mkOpt types.int 10 "Number of boot items to keep";
  };

  config = mkIf cfg.enable {
    boot = {
      loader = {
        systemd-boot = {
          enable = mkDefault true;
          configurationLimit = cfg.configLimit;
        };

        efi = {
          canTouchEfiVariables = mkDefault true;
          efiSysMountPoint = "/boot";
        };
      };
    };
  };
}
