{ lib, namespace, ... }:
with lib;
{
  options.${namespace}.services.restic = {
    enable = mkEnableOption "restic server with enhanced configuration";

    port = mkOption {
      type = types.port;
      default = 8008;
      description = "Port for restic server";
    };

    openFirewall = mkOption {
      type = types.bool;
      default = true;
      description = "Whether to open firewall for restic server";
    };

    dataDir = mkOption {
      type = types.str;
      default = "/var/lib/restic";
      description = "Data directory for restic server";
    };

    listenAddress = mkOption {
      type = types.str;
      default = "0.0.0.0";
      description = "Address to bind restic server to";
    };

    prometheus = mkOption {
      type = types.bool;
      default = true;
      description = "Whether to enable prometheus metrics";
    };

    htpasswdFile = mkOption {
      type = types.nullOr types.str;
      default = null;
      description = "Path to htpasswd file for authentication";
    };

    extraFlags = mkOption {
      type = types.listOf types.str;
      default = [ ];
      description = "Extra flags to pass to restic server";
    };
  };
}
