# yaml-language-server: $schema=./values.schema.json
image:
  repository: ghcr.io/gethomepage/homepage
  tag: v1.12.3@sha256:cc84f2f5eb3c7734353701ccbaa24ed02dacb0d119114e50e4251e2005f3990a
  pullPolicy: IfNotPresent

workload:
  main:
    podSpec:
      automountServiceAccountToken: true
      containers:
        main:
          env:
            # Set this to your host (example: home.mydomain.com)
            HOMEPAGE_ALLOWED_HOSTS: "localhost"
      initContainers:
        init-config:
          enabled: true
          type: init
          imageSelector: ubuntuImage
          command:
            - /bin/sh
            - -c
            - |
              mkdir -p /app/config
              if [ ! -f /app/config/bookmarks.yaml ]; then
                echo "Bookmarks file not found, copying dummy..."
                cp /dummy-config/bookmarks.yaml /app/config/bookmarks.yaml
                echo "Config file copied, you can now edit it at /app/config/bookmarks.yaml"
              fi
              if [ ! -f /app/config/services.yaml ]; then
                echo "services file not found, copying dummy..."
                cp /dummy-config/services.yaml /app/config/services.yaml
                echo "Config file copied, you can now edit it at /app/config/services.yaml"
              fi
              if [ ! -f /app/config/settings.yaml ]; then
                echo "settings file not found, copying dummy..."
                cp /dummy-config/settings.yaml /app/config/settings.yaml
                echo "Config file copied, you can now edit it at /app/config/settings.yaml"
              fi
              if [ ! -f /app/config/widgets.yaml ]; then
                echo "widgets file not found, copying dummy..."
                cp /dummy-config/widgets.yaml /app/config/widgets.yaml
                echo "Config file copied, you can now edit it at /app/config/widgets.yaml"
              fi
              if [ ! -f /app/config/custom.css ]; then
                echo "custom.css file not found, copying dummy..."
                cp /dummy-config/custom.css /app/config/custom.css
                echo "Config file copied, you can now edit it at /app/config/custom.css"
              fi
              if [ ! -f /app/config/custom.js ]; then
                echo "custom.js file not found, copying dummy..."
                cp /dummy-config/custom.js /app/config/custom.js
                echo "Config file copied, you can now edit it at /app/config/custom.js"
              fi
service:
  main:
    ports:
      main:
        port: 10352
        protocol: http
        targetPort: 3000
persistence:
  config:
    enabled: true
    mountPath: /app/config
    targetSelector:
      main:
        main: {}
        init-config: {}
  kubernetes-config:
    enabled: true
    mountPath: /app/config/kubernetes.yaml
    subPath: kubernetes.yaml
    readOnly: true
    type: "configmap"
    objectName: config
  bookmarks-config:
    # Only enable when not using forceConfigFromValues
    enabled: "{{ not .Values.forceConfigFromValues }}"
    mountPath: /dummy-config/bookmarks.yaml
    subPath: bookmarks.yaml
    readOnly: true
    type: "configmap"
    objectName: config
    targetSelector:
      main:
        init-config: {}
  force-bookmarks-config:
    # Only enable when using forceConfigFromValues
    enabled: "{{ .Values.forceConfigFromValues }}"
    mountPath: /app/config/bookmarks.yaml
    subPath: bookmarks.yaml
    readOnly: true
    type: "configmap"
    objectName: config
  settings-config:
    # Only enable when not using forceConfigFromValues
    enabled: "{{ not .Values.forceConfigFromValues }}"
    mountPath: /dummy-config/settings.yaml
    subPath: settings.yaml
    readOnly: true
    type: "configmap"
    objectName: config
    targetSelector:
      main:
        init-config: {}
  force-settings-config:
    # Only enable when using forceConfigFromValues
    enabled: "{{ .Values.forceConfigFromValues }}"
    mountPath: /app/config/settings.yaml
    subPath: settings.yaml
    readOnly: true
    type: "configmap"
    objectName: config
  services-config:
    # Only enable when not using forceConfigFromValues
    enabled: "{{ not .Values.forceConfigFromValues }}"
    mountPath: /dummy-config/services.yaml
    subPath: services.yaml
    readOnly: true
    type: "configmap"
    objectName: config
    targetSelector:
      main:
        init-config: {}
  force-services-config:
    # Only enable when using forceConfigFromValues
    enabled: "{{ .Values.forceConfigFromValues }}"
    mountPath: /app/config/services.yaml
    subPath: services.yaml
    readOnly: true
    type: "configmap"
    objectName: config
  widgets-config:
    # Only enable when not using forceConfigFromValues
    enabled: "{{ not .Values.forceConfigFromValues }}"
    mountPath: /dummy-config/widgets.yaml
    subPath: widgets.yaml
    readOnly: true
    type: "configmap"
    objectName: config
    targetSelector:
      main:
        init-config: {}
  force-widgets-config:
    # Only enable when using forceConfigFromValues
    enabled: "{{ .Values.forceConfigFromValues }}"
    mountPath: /app/config/widgets.yaml
    subPath: widgets.yaml
    readOnly: true
    type: "configmap"
    objectName: config
  custom-css-config:
    # Only enable when not using forceConfigFromValues
    enabled: "{{ not .Values.forceConfigFromValues }}"
    mountPath: /dummy-config/custom.css
    subPath: custom.css
    readOnly: true
    type: "configmap"
    objectName: config
    targetSelector:
      main:
        init-config: {}
  force-custom-css-config:
    # Only enable when using forceConfigFromValues
    enabled: "{{ .Values.forceConfigFromValues }}"
    mountPath: /app/config/custom.css
    subPath: custom.css
    readOnly: true
    type: "configmap"
    objectName: config
  custom-js-config:
    # Only enable when not using forceConfigFromValues
    enabled: "{{ not .Values.forceConfigFromValues }}"
    mountPath: /dummy-config/custom.js
    subPath: custom.js
    readOnly: true
    type: "configmap"
    objectName: config
    targetSelector:
      main:
        init-config: {}
  force-custom-js-config:
    # Only enable when using forceConfigFromValues
    enabled: "{{ .Values.forceConfigFromValues }}"
    mountPath: /app/config/custom.js
    subPath: custom.js
    readOnly: true
    type: "configmap"
    objectName: config

serviceAccount:
  main:
    enabled: true
    primary: true

podOptions:
  dnsConfig:
    options:
      - name: ndots
        value: "3"

configmap:
  config:
    enabled: true
    data:
      # https://gethomepage.dev/configs/custom-css-js/
      custom.js: ""
      custom.css: ""
      kubernetes.yaml: |
        ---
        # For configuration options and examples, please see:
        # https://gethomepage.dev/configs/kubernetes/

        mode: cluster
      settings.yaml: |
        ---
        # For configuration options and examples, please see:
        # https://gethomepage.dev/configs/

        providers:
          openweathermap: openweathermapapikey
          weatherapi: weatherapiapikey
      widgets.yaml: |
        ---
        # For configuration options and examples, please see:
        # https://gethomepage.dev/widgets/

        - resources:
            cpu: true
            memory: true
            disk: /

        - search:
            provider: duckduckgo
            target: _blank

      services.yaml: |
        ---
        # For configuration options and examples, please see:
        # https://gethomepage.dev/configs/services/

        - Arr:
            - My First Service:
                href: http://localhost/
                description: Homepage is awesome

        - Media:
            - My Second Service:
                href: http://localhost/
                description: Homepage is the best

        - Infra:
            - My Third Service:
                href: http://localhost/
                description: Homepage is 😎
      bookmarks.yaml: |
        ---
        # For configuration options and examples, please see:
        # https://gethomepage.dev/configs/bookmarks/

        - Developer:
            - Github:
                - abbr: GH
                  href: https://github.com/

        - Social:
            - Reddit:
                - abbr: RE
                  href: https://reddit.com/

        - Entertainment:
            - YouTube:
                - abbr: YT
                  href: https://youtube.com/

        - TrueCharts:
            - TrueCharts:
              - abbr: TC
                icon: https://trueforge.org/svg/favicon.svg
                href: https://truecharts.org
                description: "TrueCharts Website"
            - Github:
              - abbr: GH
                icon: https://github.com/fluidicon.png
                href: https://github.com/truecharts
                description: "TrueCharts GitHub"
            - Open Collective:
              - abbr: TC
                icon: https://opencollective.com/favicon.ico
                href: https://opencollective.com/truecharts
                description: "TrueCharts Open Collective"
            - Discord:
              - abbr: DC
                icon: https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=http://discord.com&size=32
                href: https://trueforge.org/s/discord
                description: "TrueCharts Discord"

forceConfigFromValues: false

rbac:
  main:
    enabled: true
    primary: true
    clusterWide: true
    rules:
      - apiGroups:
          - ""
        resources:
          - namespaces
          - pods
          - nodes
        verbs:
          - get
          - list
      - apiGroups:
          - extensions
          - networking.k8s.io
        resources:
          - ingresses
        verbs:
          - get
          - list
      - apiGroups:
          - traefik.containo.us
          - traefik.io
        resources:
          - ingressroutes
        verbs:
          - get
          - list
      - apiGroups:
          - metrics.k8s.io
        resources:
          - nodes
          - pods
        verbs:
          - get
          - list
      - apiGroups:
          - apiextensions.k8s.io
        resources:
          - customresourcedefinitions/status
        verbs:
          - get
