{ lib, ... }:
let
  inherit (lib) types mkOption;
in
{
  options.nas-apps = mkOption {
    type = types.attrsOf (types.submodule ({ config, name, ... }: {
      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 = [ ];
          };
        };
      };
    }));
  };
}
