
  - variable: addons
    group: "Addons"
    label: ""
    schema:
      additional_attrs: true
      type: dict
      attrs:
        - variable: vpn
          label: "VPN"
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: type
                label: "Type"
                schema:
                  type: string
                  default: "disabled"
                  enum:
                    - value: "disabled"
                      description: "disabled"
                    - value: "openvpn"
                      description: "OpenVPN"
                    - value: "wireguard"
                      description: "Wireguard"
              - variable: openvpn
                label: "OpenVPN Settings"
                schema:
                  type: dict
                  show_if: [["type", "=", "openvpn"]]
                  attrs:
                    - variable: username
                      label: "authentication username"
                      description: "authentication username, optional"
                      schema:
                        type: string
                        default: ""
                    - variable: password
                      label: "authentication password"
                      description: "authentication credentials"
                      schema:
                        type: string
                        default: ""
                        required: true
              - variable: killSwitch
                label: "Enable killswitch"
                schema:
                  type: boolean
                  show_if: [["type", "!=", "disabled"]]
                  default: true
              - variable: excludedNetworks_IPv4
                label: "Killswitch Excluded IPv4 networks"
                description: "list of killswitch excluded ipv4 addresses"
                schema:
                  type: list
                  show_if: [["type", "!=", "disabled"]]
                  default: []
                  items:
                    - variable: networkv4
                      label: "IPv4 Network"
                      schema:
                        type: string
                        required: true
              - variable: excludedNetworks_IPv6
                label: "Killswitch Excluded IPv6 networks"
                description: "list of killswitch excluded ipv4 addresses"
                schema:
                  type: list
                  show_if: [["type", "!=", "disabled"]]
                  default: []
                  items:
                    - variable: networkv6
                      label: "IPv6 Network"
                      schema:
                        type: string
                        required: true

              - variable: configFile
                label: "VPN Config File Location"
                schema:
                  type: dict
                  show_if: [["type", "!=", "disabled"]]
                  attrs:
                    - variable: enabled
                      label: "enabled"
                      schema:
                        type: boolean
                        default: true
                        hidden: true
                    - variable: type
                      label: "type"
                      schema:
                        type: string
                        default: "hostPath"
                        hidden: true
                    - variable: hostPathType
                      label: "hostPathType"
                      schema:
                        type: string
                        default: "File"
                        hidden: true
                    - variable: noMount
                      label: "noMount"
                      schema:
                        type: boolean
                        default: true
                        hidden: true
                    - variable: hostPath
                      label: "Full path to file"
                      description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn"
                      schema:
                        type: string
                        default: ""
                        required: true
              - variable: envList
                label: "VPN environment Variables"
                schema:
                  type: list
                  show_if: [["type", "!=", "disabled"]]
                  default: []
                  items:
                    - variable: envItem
                      label: "Environment Variable"
                      schema:
                        additional_attrs: true
                        type: dict
                        attrs:
                          - variable: name
                            label: "Name"
                            schema:
                              type: string
                              required: true
                          - variable: value
                            label: "Value"
                            schema:
                              type: string
                              required: true

        - variable: codeserver
          label: "Codeserver"
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: enabled
                label: "enabled"
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: git
                      label: "Git Settings"
                      schema:
                        additional_attrs: true
                        type: dict
                        attrs:
                          - variable: deployKey
                            description: "Raw SSH private key"
                            label: "deployKey"
                            schema:
                              type: string
                          - variable: deployKeyBase64
                            description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence"
                            label: "deployKeyBase64"
                            schema:
                              type: string
                    - variable: service
                      label: ""
                      schema:
                        additional_attrs: true
                        type: dict
                        attrs:
                          - variable: type
                            label: "Service Type"
                            description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer"
                            schema:
                              type: string
                              default: "NodePort"
                              enum:
                                - value: "NodePort"
                                  description: "NodePort"
                                - value: "ClusterIP"
                                  description: "ClusterIP"
                                - value: "LoadBalancer"
                                  description: "LoadBalancer"
                          - variable: loadBalancerIP
                            label: "LoadBalancer IP"
                            description: "LoadBalancerIP"
                            schema:
                              show_if: [["type", "=", "LoadBalancer"]]
                              type: string
                              default: ""
                          - variable: externalIPs
                            label: "External IP's"
                            description: "External IP's"
                            schema:
                              show_if: [["type", "=", "LoadBalancer"]]
                              type: list
                              default: []
                              items:
                                - variable: externalIP
                                  label: "External IP"
                                  schema:
                                    type: string
                          - variable: ports
                            label: ""
                            schema:
                              additional_attrs: true
                              type: dict
                              attrs:
                                - variable: codeserver
                                  label: ""
                                  schema:
                                    additional_attrs: true
                                    type: dict
                                    attrs:
                                      - variable: nodePort
                                        description: "leave empty to disable"
                                        label: "nodePort"
                                        schema:
                                          type: int
                                          default: 36107
                    - variable: envList
                      label: "Codeserver environment Variables"
                      schema:
                        type: list
                        show_if: [["type", "!=", "disabled"]]
                        default: []
                        items:
                          - variable: envItem
                            label: "Environment Variable"
                            schema:
                              additional_attrs: true
                              type: dict
                              attrs:
                                - variable: name
                                  label: "Name"
                                  schema:
                                    type: string
                                    required: true
                                - variable: value
                                  label: "Value"
                                  schema:
                                    type: string
                                    required: true


        - variable: promtail
          label: "Promtail"
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: enabled
                label: "enabled"
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: loki
                      label: "Loki URL"
                      schema:
                        type: string
                        required: true
                    - variable: logs
                      label: "Log Paths"
                      schema:
                        additional_attrs: true
                        type: dict
                        attrs:
                          - variable: name
                            label: "Name"
                            schema:
                              type: string
                              required: true
                          - variable: path
                            label: "Path"
                            schema:
                              type: string
                              required: true
                    - variable: args
                      label: "Promtail ecommand line arguments"
                      schema:
                        type: list
                        show_if: [["type", "!=", "disabled"]]
                        default: []
                        items:
                          - variable: arg
                            label: "Arg"
                            schema:
                              type: string
                              required: true
                    - variable: envList
                      label: "Promtail environment Variables"
                      schema:
                        type: list
                        show_if: [["type", "!=", "disabled"]]
                        default: []
                        items:
                          - variable: envItem
                            label: "Environment Variable"
                            schema:
                              additional_attrs: true
                              type: dict
                              attrs:
                                - variable: name
                                  label: "Name"
                                  schema:
                                    type: string
                                    required: true
                                - variable: value
                                  label: "Value"
                                  schema:
                                    type: string
                                    required: true




        - variable: netshoot
          label: "Netshoot"
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: enabled
                label: "enabled"
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: envList
                      label: "Netshoot environment Variables"
                      schema:
                        type: list
                        show_if: [["type", "!=", "disabled"]]
                        default: []
                        items:
                          - variable: envItem
                            label: "Environment Variable"
                            schema:
                              additional_attrs: true
                              type: dict
                              attrs:
                                - variable: name
                                  label: "Name"
                                  schema:
                                    type: string
                                    required: true
                                - variable: value
                                  label: "Value"
                                  schema:
                                    type: string
                                    required: true
