{ lib, ... }:
let
  inherit (lib) types mkOption;
in
{
  options.nas-apps = mkOption {
    type = types.attrsOf (
      types.submodule (
        { ... }:
        {
          options = {
            enable = mkOption {
              type = types.bool;
              default = false;
            };

            port = mkOption {
              type = types.int;
              default = 80;
            };

            localAddress = mkOption {
              type = types.str;
              default = "127.0.0.1";
            };

            dataDir = mkOption {
              type = types.str;
              default = "";
            };

            reverseProxy = {
              enable = mkOption {
                type = types.bool;
                default = false;
              };
              host = mkOption {
                type = types.str;
                default = "";
              };
              middlewares = mkOption {
                type = with types; listOf str;
                default = [ ];
              };
            };
          };
        }
      )
    );
  };
}
