{
  config,
  lib,
  ...
}:

let
  cfg = config.nmasur.presets.services.karakeep;
  inherit (config.nmasur.settings) hostnames;
in

{
  options.nmasur.presets.services.karakeep.enable = lib.mkEnableOption "Karakeep bookmark manager";

  config = lib.mkIf cfg.enable {
    services.karakeep = {
      enable = true;
      meilisearch.enable = true;
      extraEnvironment = {
        PORT = "5599";
        DISABLE_SIGNUPS = "true";
        DISABLE_NEW_RELEASE_CHECK = "true";
        CRAWLER_FULL_PAGE_SCREENSHOT = "true";
        CRAWLER_FULL_PAGE_ARCHIVE = "true";
      };
    };

    nmasur.presets.services.caddy.routes = [
      {
        match = [ { host = [ hostnames.bookmarks ]; } ];
        handle = [
          {
            handler = "reverse_proxy";
            upstreams = [
              { dial = "localhost:${config.services.karakeep.extraEnvironment.PORT}"; }
            ];
          }
        ];
      }
    ];

    # Configure Cloudflare DNS to point to this machine
    services.cloudflare-dyndns.domains = [ hostnames.bookmarks ];

  };
}