{
  config,
  lib,
  globals,
  ...
}: {
  options.cyberchef.enable = lib.mkEnableOption "cyberchef";

  config = lib.mkIf config.cyberchef.enable {
    kubernetes.resources = {
      deployments.cyberchef.spec = {
        replicas = 3;
        selector.matchLabels.app = "cyberchef";

        template = {
          metadata.labels.app = "cyberchef";

          spec.containers.cyberchef = {
            image = globals.images.cyberchef;
            imagePullPolicy = "Always";
            ports.web.containerPort = 8000;
          };
        };
      };

      services.cyberchef.spec = {
        selector.app = "cyberchef";

        ports.web = {
          port = 80;
          targetPort = "web";
        };
      };
    };

    lab.ingresses.cyberchef = {
      host = "cyberchef.kun.is";

      service = {
        name = "cyberchef";
        portName = "web";
      };
    };
  };
}