├── .github ├── dependabot.yml └── workflows │ ├── cache-updated.yml │ ├── rebuild-cache.yml │ └── update-charts.yml ├── .gitignore ├── LICENSE ├── README.md ├── charts ├── 1password │ └── connect │ │ └── default.nix ├── ananace-charts │ └── lemmy │ │ └── default.nix ├── argoproj │ ├── argo-cd │ │ └── default.nix │ ├── argo-workflows │ │ └── default.nix │ └── argocd-image-updater │ │ └── default.nix ├── atlantis │ └── atlantis │ │ └── default.nix ├── authelia │ └── authelia │ │ └── default.nix ├── authentik │ └── authentik │ │ └── default.nix ├── bitnami │ ├── elasticsearch │ │ └── default.nix │ ├── external-dns │ │ └── default.nix │ ├── ghost │ │ └── default.nix │ ├── mariadb-galera │ │ └── default.nix │ ├── mastodon │ │ └── default.nix │ ├── mysql │ │ └── default.nix │ ├── nginx │ │ └── default.nix │ ├── postgresql │ │ └── default.nix │ ├── rabbitmq-cluster-operator │ │ └── default.nix │ └── wordpress │ │ └── default.nix ├── bjw-s-labs │ └── app-template │ │ └── default.nix ├── cilium │ └── cilium │ │ └── default.nix ├── cloudnative-pg │ └── cloudnative-pg │ │ └── default.nix ├── concourse │ └── concourse │ │ └── default.nix ├── dendrite │ └── dendrite │ │ └── default.nix ├── external-dns │ └── external-dns │ │ └── default.nix ├── external-secrets │ └── external-secrets │ │ └── default.nix ├── fluxcd-community │ └── flux2 │ │ └── default.nix ├── grafana │ ├── grafana │ │ └── default.nix │ ├── loki │ │ └── default.nix │ ├── promtail │ │ └── default.nix │ └── tempo │ │ └── default.nix ├── groundhog2k │ └── ghost │ │ └── default.nix ├── hashicorp │ └── vault │ │ └── default.nix ├── immich │ └── immich │ │ └── default.nix ├── isindir │ └── sops-secrets-operator │ │ └── default.nix ├── istio │ ├── base │ │ └── default.nix │ ├── gateway │ │ └── default.nix │ └── istiod │ │ └── default.nix ├── jetstack │ └── cert-manager │ │ └── default.nix ├── kiali │ └── kiali-operator │ │ └── default.nix ├── kubernetes-dashboard │ └── kubernetes-dashboard │ │ └── default.nix ├── kubernetes-ingress-nginx │ └── ingress-nginx │ │ └── default.nix ├── kubernetes-sigs │ └── node-feature-discovery │ │ └── default.nix ├── kyverno │ └── kyverno │ │ └── default.nix ├── longhorn │ └── longhorn │ │ └── default.nix ├── mariadb-operator │ └── mariadb-operator │ │ └── default.nix ├── metallb │ └── metallb │ │ └── default.nix ├── mojo2600 │ └── pihole │ │ └── default.nix ├── nvidia │ └── gpu-operator │ │ └── default.nix ├── oauth2-proxy │ └── oauth2-proxy │ │ └── default.nix ├── openebs │ └── zfs-localpv │ │ └── default.nix ├── prometheus-community │ ├── kube-prometheus-stack │ │ └── default.nix │ ├── prometheus-blackbox-exporter │ │ └── default.nix │ └── prometheus │ │ └── default.nix ├── redpanda │ └── redpanda │ │ └── default.nix ├── rook-release │ ├── rook-ceph-cluster │ │ └── default.nix │ └── rook-ceph │ │ └── default.nix ├── sealed-secrets │ └── sealed-secrets │ │ └── default.nix ├── sysdig │ └── sysdig-deploy │ │ └── default.nix ├── tailscale │ └── tailscale-operator │ │ └── default.nix ├── traefik │ └── traefik │ │ └── default.nix ├── vault-config-operator │ └── vault-config-operator │ │ └── default.nix └── victoriametrics │ ├── victoria-metrics-agent │ └── default.nix │ ├── victoria-metrics-cluster │ └── default.nix │ ├── victoria-metrics-k8s-stack │ └── default.nix │ └── victoria-metrics-operator │ └── default.nix ├── flake.lock ├── flake.nix ├── helmupdater └── __init__.py ├── poetry.lock └── pyproject.toml /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "github-actions" 9 | directory: "/" 10 | schedule: 11 | interval: "weekly" 12 | -------------------------------------------------------------------------------- /.github/workflows/cache-updated.yml: -------------------------------------------------------------------------------- 1 | name: cache-updated 2 | on: 3 | push: 4 | branches: [master] 5 | permissions: 6 | contents: write 7 | jobs: 8 | cache-updated: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | with: 13 | fetch-depth: 0 14 | - uses: nrwl/nx-set-shas@v4 15 | id: last_successful_commit_push 16 | with: 17 | main-branch-name: master 18 | workflow-id: 'cache-updated.yml' 19 | - id: changed-files 20 | uses: tj-actions/changed-files@v46 21 | with: 22 | files: charts/** 23 | base_sha: ${{ steps.last_successful_commit_push.outputs.base }} 24 | - uses: fregante/setup-git-user@v2 25 | if: steps.changed-files.outputs.any_changed == 'true' 26 | - name: Install Nix 27 | uses: cachix/install-nix-action@v31 28 | if: steps.changed-files.outputs.any_changed == 'true' 29 | with: 30 | extra_nix_config: 'experimental-features = nix-command flakes' 31 | nix_path: nixpkgs=channel:nixos-unstable 32 | - uses: cachix/cachix-action@v16 33 | if: steps.changed-files.outputs.any_changed == 'true' 34 | with: 35 | name: nixhelm 36 | authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' 37 | - name: Check for updates 38 | if: steps.changed-files.outputs.any_changed == 'true' 39 | run: | 40 | for CHANGED_FILE in ${{ steps.changed-files.outputs.added_files }}; do 41 | if [[ "$CHANGED_FILE" =~ charts/(.+/.+)/default.nix$ ]]; then 42 | CHART="${BASH_REMATCH[1]}" 43 | echo "rebuilding for $CHART" 44 | nix run .#helmupdater -- update "$CHART" --commit --rebuild 45 | fi 46 | done 47 | -------------------------------------------------------------------------------- /.github/workflows/rebuild-cache.yml: -------------------------------------------------------------------------------- 1 | name: rebuild-cache 2 | on: 3 | workflow_dispatch: {} 4 | permissions: 5 | contents: write 6 | jobs: 7 | rebuild-cache: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v4 11 | - uses: fregante/setup-git-user@v2 12 | - name: Install Nix 13 | uses: cachix/install-nix-action@v31 14 | with: 15 | extra_nix_config: 'experimental-features = nix-command flakes' 16 | nix_path: nixpkgs=channel:nixos-unstable 17 | - uses: cachix/cachix-action@v16 18 | with: 19 | name: nixhelm 20 | authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' 21 | - name: Check for updates 22 | run: nix run .#helmupdater -- update-all --commit --rebuild 23 | - name: Push updates 24 | run: git push 25 | -------------------------------------------------------------------------------- /.github/workflows/update-charts.yml: -------------------------------------------------------------------------------- 1 | name: update-charts 2 | on: 3 | schedule: 4 | - cron: '0 0 * * *' 5 | workflow_dispatch: {} 6 | jobs: 7 | update-charts: 8 | runs-on: ubuntu-latest 9 | permissions: 10 | contents: write 11 | steps: 12 | - uses: actions/checkout@v4 13 | - uses: fregante/setup-git-user@v2 14 | - name: Install Nix 15 | uses: cachix/install-nix-action@v31 16 | with: 17 | extra_nix_config: 'experimental-features = nix-command flakes' 18 | nix_path: nixpkgs=channel:nixos-unstable 19 | - uses: cachix/cachix-action@v16 20 | with: 21 | name: nixhelm 22 | authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' 23 | - name: Check for updates 24 | run: nix run .#helmupdater -- update-all --commit 25 | - name: Push updates 26 | run: git push 27 | 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | result 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # nixhelm 2 | 3 | This is a collection of helm charts in a nix-digestable format. 4 | 5 | ## Supported chart repoitories 6 | 7 | Nixhelm supports only the traditional helm chart repos (served over http[s]). 8 | The support for OCI charts is [pending](https://github.com/farcaller/nixhelm/issues/1). 9 | 10 | If your chart is hosted in a git repo, remember that you can fetch it as a flake 11 | input and pass to `buildHelmChart` [directly](https://github.com/farcaller/nixhelm/issues/10). 12 | 13 | ## Outputs 14 | 15 | The flake has the following outputs: 16 | 17 | `chartsMetadata.${repo}.${chart}` contains the metadata about a specific chart. 18 | 19 | `chartsDerivations.${system}.${repo}.${chart}` contains the derivations producing 20 | the charts. 21 | 22 | `charts { pkgs = ... }.${repo}.${chart}` a shortcut for the above that doesn't 23 | depend on the nixpkgs input and allows to specify any nixpkgs. 24 | 25 | The charts are updated nightly. 26 | 27 | ## Usage 28 | 29 | ```sh 30 | nix build .#chartsDerivations.x86_64-linux."argoproj"."argo-cd" 31 | ``` 32 | 33 | Will download the Argo CD helm chart to `result/`. 34 | 35 | To build a chart, you should use the kube generators from 36 | [github:farcaller/nix-kube-generators](https://github.com/farcaller/nix-kube-generators), 37 | and just pass your chart to the `buildCharts` function. So for example to render 38 | the Argo CD chart: 39 | 40 | ```nix 41 | argo = (kubelib.buildHelmChart { 42 | name = "argo"; 43 | chart = (nixhelm.charts { inherit pkgs; }).argoproj.argo-cd; 44 | namespace = "argo"; 45 | }); 46 | ``` 47 | 48 | If you want to use this setup within Argo CD, check out [cake](https://github.com/farcaller/cake). 49 | 50 | ## Using the cache 51 | 52 | This repository and all the charts within are publicly cached at `cachix` as 53 | [nixhelm](https://app.cachix.org/cache/nixhelm). Here's how you can quickly 54 | enable it in your nix installation: 55 | 56 | ### Without flakes 57 | 58 | ```sh 59 | nix-env -iA cachix -f https://cachix.org/api/v1/install 60 | ``` 61 | 62 | ### With flakes 63 | 64 | ```sh 65 | nix profile install nixpkgs#cachix 66 | ``` 67 | 68 | ### Then enable the cache 69 | 70 | ```sh 71 | cachix use nixhelm 72 | ``` 73 | 74 | Alternatively, manually add this to `/etc/nix/nix.conf`: 75 | 76 | ```nix 77 | substituters = https://cache.nixos.org https://nixhelm.cachix.org 78 | trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nixhelm.cachix.org-1:esqauAsR4opRF0UsGrA6H3gD21OrzMnBBYvJXeddjtY= 79 | ``` 80 | 81 | ## Adding new charts 82 | 83 | Clone the repository and run the following command from within it: 84 | 85 | ```sh 86 | nix run .#helmupdater -- init $REPO $REPO_NAME/$CHART_NAME --commit 87 | ``` 88 | 89 | Where `REPO` is the url to the chart, `REPO_NAME` is the short name for the 90 | repository and the `CHART_NAME` is the name of the chart in the repository. 91 | 92 | For example, if you want to add [bitnami's 93 | nginx](https://github.com/bitnami/charts/tree/main/bitnami/nginx), run the 94 | following command: 95 | 96 | ```sh 97 | nix run .#helmupdater -- init "https://charts.bitnami.com/bitnami" bitnami/nginx --commit 98 | ``` 99 | 100 | The command will create the properly formatted commit that you can then submit 101 | as a pull request to the repo. 102 | 103 | ## License 104 | 105 | Apache-2.0 106 | -------------------------------------------------------------------------------- /charts/1password/connect/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://1password.github.io/connect-helm-charts/"; 3 | chart = "connect"; 4 | version = "1.17.0"; 5 | chartHash = "sha256-iwdro2gtzXEjCnEYK/naCgxdvkVTjFhoKwTMA2tZWSA="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/ananace-charts/lemmy/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://ananace.gitlab.io/charts/"; 3 | chart = "lemmy"; 4 | version = "0.6.6"; 5 | chartHash = "sha256-lPWWy6XENGD8hY0/P9GQdRE0srUNx85QWS3IkNi1GtM="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/argoproj/argo-cd/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://argoproj.github.io/argo-helm/"; 3 | chart = "argo-cd"; 4 | version = "8.0.14"; 5 | chartHash = "sha256-75XQBHonKkx2u6msOqt8iwddenNbzbujDWRqGh1I66o="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/argoproj/argo-workflows/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://argoproj.github.io/argo-helm/"; 3 | chart = "argo-workflows"; 4 | version = "0.45.15"; 5 | chartHash = "sha256-rUnV9/KNPCH77emjBSl0Jjk8bv42g0YAYBqKT68XQAc="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/argoproj/argocd-image-updater/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://argoproj.github.io/argo-helm/"; 3 | chart = "argocd-image-updater"; 4 | version = "0.12.2"; 5 | chartHash = "sha256-/+N4ZmdeZk2CeKbwk+jGnN0dOKazQ8lyZMhouJLDouk="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/atlantis/atlantis/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://runatlantis.github.io/helm-charts/"; 3 | chart = "atlantis"; 4 | version = "5.17.2"; 5 | chartHash = "sha256-N2sxf2GM4tV7vz/sFyXuHpbhX8FuV46Z9cP3/ZIhos0="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/authelia/authelia/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.authelia.com/"; 3 | chart = "authelia"; 4 | version = "0.10.10"; 5 | chartHash = "sha256-Bv84EWT3gNYH0QJQ/jhz10sROUjDAY+nY6fBp3Dh2sc="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/authentik/authentik/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.goauthentik.io/"; 3 | chart = "authentik"; 4 | version = "2025.4.1"; 5 | chartHash = "sha256-u0cW6GDYQWa6WO/wzx4UFswXi78ly7+xWGMi8RFrfV8="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/bitnami/elasticsearch/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.bitnami.com/bitnami/"; 3 | chart = "elasticsearch"; 4 | version = "22.0.4"; 5 | chartHash = "sha256-R8ITGl8Y5aXpMTxvViv5aUMcxpV66SXV5ipf1aCGBNE="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/bitnami/external-dns/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.bitnami.com/bitnami/"; 3 | chart = "external-dns"; 4 | version = "8.8.3"; 5 | chartHash = "sha256-cGIpwI+NsFOMNqlcN7+kpFvQJM0ApzksjjuYErnTi5o="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/bitnami/ghost/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.bitnami.com/bitnami/"; 3 | chart = "ghost"; 4 | version = "23.0.10"; 5 | chartHash = "sha256-HjCvlbLfmoLOW96+erXFt2rhiAWQhSErGNoJ2ywqMf0="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/bitnami/mariadb-galera/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.bitnami.com/bitnami/"; 3 | chart = "mariadb-galera"; 4 | version = "14.2.6"; 5 | chartHash = "sha256-LZGGJGyRHNG6Aq/zyoW246YEWiXnkdwszXKTAQF6e5Q="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/bitnami/mastodon/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.bitnami.com/bitnami/"; 3 | chart = "mastodon"; 4 | version = "12.0.0"; 5 | chartHash = "sha256-RpLk17jXUCLGYkHMgZC/SFVopDxZa897dEJAoF6RxCo="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/bitnami/mysql/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.bitnami.com/bitnami/"; 3 | chart = "mysql"; 4 | version = "13.0.0"; 5 | chartHash = "sha256-78Ajl1c502ly03lBHU2hLtcFRmiuupDPlwDVsG7MIAQ="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/bitnami/nginx/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.bitnami.com/bitnami/"; 3 | chart = "nginx"; 4 | version = "20.0.5"; 5 | chartHash = "sha256-28U9DW9w18w1SgtNn4PZGhRz0YooZeiNxq3MKkbGhoc="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/bitnami/postgresql/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.bitnami.com/bitnami/"; 3 | chart = "postgresql"; 4 | version = "16.7.8"; 5 | chartHash = "sha256-9ies6wLY8opfglGVgkKSaG5FdXRk4iWnMeqPvuhRZFg="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/bitnami/rabbitmq-cluster-operator/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.bitnami.com/bitnami/"; 3 | chart = "rabbitmq-cluster-operator"; 4 | version = "4.4.15"; 5 | chartHash = "sha256-k68rGeFEJXsyBFORZvmmnvGDnFHZ7PlLDFx7vBjPuts="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/bitnami/wordpress/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.bitnami.com/bitnami/"; 3 | chart = "wordpress"; 4 | version = "24.2.7"; 5 | chartHash = "sha256-mPEVux027cF/ZYROTrGtvEoj/Ib9N/UkLYUjGjbO5oo="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/bjw-s-labs/app-template/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://bjw-s-labs.github.io/helm-charts/"; 3 | chart = "app-template"; 4 | version = "4.0.1"; 5 | chartHash = "sha256-VHTJPFgEOXlW4829ZgguWqIyVstfe8pYV9zhpyN1rkQ="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/cilium/cilium/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://helm.cilium.io/"; 3 | chart = "cilium"; 4 | version = "1.17.4"; 5 | chartHash = "sha256-NsOOFJN3hEytx9GuPoJ6SQo/lxjVogkuZtgsvbLUMoE="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/cloudnative-pg/cloudnative-pg/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://cloudnative-pg.github.io/charts/"; 3 | chart = "cloudnative-pg"; 4 | version = "0.24.0"; 5 | chartHash = "sha256-J/9/1PBl1YgNyjsnCKDWeaayfVG0e+kN7nLZ791aOUk="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/concourse/concourse/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://concourse-charts.storage.googleapis.com/"; 3 | chart = "concourse"; 4 | version = "18.2.0"; 5 | chartHash = "sha256-fFHPCuUhw/hShZpVpvmve+zxQdwE6dB15li+Zkp1oSs="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/dendrite/dendrite/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://matrix-org.github.io/dendrite/"; 3 | chart = "dendrite"; 4 | version = "0.14.6"; 5 | chartHash = "sha256-kR1RLt0dj1vfwGJ5uon9hN84jwVnp4hizVMxGbn0Jec="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/external-dns/external-dns/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://kubernetes-sigs.github.io/external-dns/"; 3 | chart = "external-dns"; 4 | version = "1.16.1"; 5 | chartHash = "sha256-0Hda7wKttTw9o2h21xFg0DB9DxEceh+XUEJ5mzBuM78="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/external-secrets/external-secrets/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.external-secrets.io/"; 3 | chart = "external-secrets"; 4 | version = "0.17.0"; 5 | chartHash = "sha256-OMA7CylP7xYqvGiRaVdji/IBRyyecsmqdvJE03hMli0="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/fluxcd-community/flux2/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://fluxcd-community.github.io/helm-charts/"; 3 | chart = "flux2"; 4 | version = "2.15.0"; 5 | chartHash = "sha256-U33lQ6dG8LMQemEI5ww0gySOsvSjA3nXfD6AGF/isxo="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/grafana/grafana/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://grafana.github.io/helm-charts/"; 3 | chart = "grafana"; 4 | version = "9.2.2"; 5 | chartHash = "sha256-NV2kGCTT+pgdS1PlwCaOQNn8LbphlUX46HBn9TQqBQM="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/grafana/loki/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://grafana.github.io/helm-charts/"; 3 | chart = "loki"; 4 | version = "6.30.1"; 5 | chartHash = "sha256-591a/wtRZmhpeuOAbTfxaT0jZn+mgEU2STBhQI6GbfE="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/grafana/promtail/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://grafana.github.io/helm-charts/"; 3 | chart = "promtail"; 4 | version = "6.17.0"; 5 | chartHash = "sha256-bCKUa7sYINXl+JTD5Xz/kxcRJd6cyXncC5yzOUEqWPs="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/grafana/tempo/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://grafana.github.io/helm-charts/"; 3 | chart = "tempo"; 4 | version = "1.21.1"; 5 | chartHash = "sha256-BADTGLV6tbceaYv+tIUPV4ORnlhW8YGDGx1WwyhcIlU="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/groundhog2k/ghost/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://groundhog2k.github.io/helm-charts/"; 3 | chart = "ghost"; 4 | version = "0.160.0"; 5 | chartHash = "sha256-hqgLQfJlyTTn9EVrDmjXTSL7oo5togWnur4iTfGP8mc="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/hashicorp/vault/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://helm.releases.hashicorp.com/"; 3 | chart = "vault"; 4 | version = "0.30.0"; 5 | chartHash = "sha256-VOBal3+dJiFmmA2pgZ1w+Y+SDbVbHQiPp3Bvs5s32Vk="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/immich/immich/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://immich-app.github.io/immich-charts/"; 3 | chart = "immich"; 4 | version = "0.9.3"; 5 | chartHash = "sha256-UHuuu6u+UjHPgdLONZim6j+nyCINtClcAZRRJlHuaaw="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/isindir/sops-secrets-operator/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://isindir.github.io/sops-secrets-operator/"; 3 | chart = "sops-secrets-operator"; 4 | version = "0.22.0"; 5 | chartHash = "sha256-+XYYUXKgAQTYntIAqt1bKpHKShxx4OkegwMoUxQ7gh0="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/istio/base/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://istio-release.storage.googleapis.com/charts/"; 3 | chart = "base"; 4 | version = "1.26.1"; 5 | chartHash = "sha256-SbHiCVaYMYPnmJ2nteOsEHfgz+BCl8Y2ceB6sAgOHgo="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/istio/gateway/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://istio-release.storage.googleapis.com/charts/"; 3 | chart = "gateway"; 4 | version = "1.26.1"; 5 | chartHash = "sha256-9WXMC2LKuZNvedAr1VmI5s430wVMXGVMKT5JxJvMLhA="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/istio/istiod/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://istio-release.storage.googleapis.com/charts/"; 3 | chart = "istiod"; 4 | version = "1.26.1"; 5 | chartHash = "sha256-OCzaCQ0mEma5ptPdkm4+AllVwMZhV1PsM/h4eM+Kytg="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/jetstack/cert-manager/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.jetstack.io/"; 3 | chart = "cert-manager"; 4 | version = "v1.17.2"; 5 | chartHash = "sha256-8d/BPet3MNGd8n0r5F1HEW4Rgb/UfdtwqSFuUZTyKl4="; 6 | bogusVersion = true; 7 | } 8 | -------------------------------------------------------------------------------- /charts/kiali/kiali-operator/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://kiali.org/helm-charts/"; 3 | chart = "kiali-operator"; 4 | version = "2.10.0"; 5 | chartHash = "sha256-DbbH8AEH/G7RRGAz35J7/Pxr0O3suVL1Zre2OunqXEM="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/kubernetes-dashboard/kubernetes-dashboard/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://kubernetes.github.io/dashboard/"; 3 | chart = "kubernetes-dashboard"; 4 | version = "7.13.0"; 5 | chartHash = "sha256-RdSSq9TqZyaSRtTGDm36zDwwI8zyWbeww3hQzuPAPTs="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/kubernetes-ingress-nginx/ingress-nginx/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://kubernetes.github.io/ingress-nginx/"; 3 | chart = "ingress-nginx"; 4 | version = "4.12.2"; 5 | chartHash = "sha256-TqN7OJD7GxGCm3mHhPXwaz2Xp0zn1BFzl92jmI68l3c="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/kubernetes-sigs/node-feature-discovery/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://kubernetes-sigs.github.io/node-feature-discovery/charts/"; 3 | chart = "node-feature-discovery"; 4 | version = "0.17.3"; 5 | chartHash = "sha256-giR4wf7XzfjtqCQsALh4+752N/4B+ZFDJkyMoSakm+I="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/kyverno/kyverno/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://kyverno.github.io/kyverno/"; 3 | chart = "kyverno"; 4 | version = "v3.4.1"; 5 | chartHash = "sha256-Fs0Z4VnkpZvAMI/I7XXiaZTuW/VKG9ImP8a2Fe+8P6Y="; 6 | bogusVersion = true; 7 | } 8 | -------------------------------------------------------------------------------- /charts/longhorn/longhorn/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.longhorn.io/"; 3 | chart = "longhorn"; 4 | version = "1.9.0"; 5 | chartHash = "sha256-y6L7OlZIUuu3pZzMyaL01qFMsyvmUtXC7Pf8jx6Mi8A="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/mariadb-operator/mariadb-operator/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://mariadb-operator.github.io/mariadb-operator/"; 3 | chart = "mariadb-operator"; 4 | version = "0.38.1"; 5 | chartHash = "sha256-QaO2dyxhHMuYx5QUImyEc7XK5Vj0HMCgJShhHy1pLkQ="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/metallb/metallb/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://metallb.github.io/metallb/"; 3 | chart = "metallb"; 4 | version = "0.14.9"; 5 | chartHash = "sha256-OqMqGQB6ikNCjZQBDwGJeIwDFljXdxfdBqoqIcID3rc="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/mojo2600/pihole/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://mojo2600.github.io/pihole-kubernetes/"; 3 | chart = "pihole"; 4 | version = "2.31.0"; 5 | chartHash = "sha256-r7LuPPOPPi/u6UgMUD17p4M4EWattVaTLzChU96VY/U="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/nvidia/gpu-operator/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://helm.ngc.nvidia.com/nvidia/"; 3 | chart = "gpu-operator"; 4 | version = "v25.3.0"; 5 | chartHash = "sha256-DbVQcH1AvxcDFcgboainVTI9VMn5tT7e6evzKjGWEM4="; 6 | bogusVersion = true; 7 | } 8 | -------------------------------------------------------------------------------- /charts/oauth2-proxy/oauth2-proxy/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://oauth2-proxy.github.io/manifests/"; 3 | chart = "oauth2-proxy"; 4 | version = "7.12.17"; 5 | chartHash = "sha256-YHZtJWBwzLJudqKf1q9C9PQWJXNef1f9CWTx3UOoDTI="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/openebs/zfs-localpv/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://openebs.github.io/zfs-localpv/"; 3 | chart = "zfs-localpv"; 4 | version = "2.7.1"; 5 | chartHash = "sha256-BUN5X8x/MmZrBc0nxAhXpmqT2mDxdfezb9uOYFsOW8w="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/prometheus-community/kube-prometheus-stack/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://prometheus-community.github.io/helm-charts/"; 3 | chart = "kube-prometheus-stack"; 4 | version = "72.9.1"; 5 | chartHash = "sha256-GM1lq+i12qsU4ejaZ6QU813DhYrw+KumsEUsLRfEbPM="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/prometheus-community/prometheus-blackbox-exporter/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://prometheus-community.github.io/helm-charts/"; 3 | chart = "prometheus-blackbox-exporter"; 4 | version = "9.8.0"; 5 | chartHash = "sha256-Bp8IZgqz8geDG7yY/qN0Qw/pMXDnu583B3Kd7TUrDmE="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/prometheus-community/prometheus/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://prometheus-community.github.io/helm-charts/"; 3 | chart = "prometheus"; 4 | version = "27.19.0"; 5 | chartHash = "sha256-WzXhCFCADbg5YKbHUHDHHBomUc9yqjBZPEpguRIR4Pc="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/redpanda/redpanda/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.redpanda.com/"; 3 | chart = "redpanda"; 4 | version = "5.10.2"; 5 | chartHash = "sha256-BNq8y6NAih6bQmSlKq+O8FLcOPiX6lLciJtOojS7iaw="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/rook-release/rook-ceph-cluster/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.rook.io/release/"; 3 | chart = "rook-ceph-cluster"; 4 | version = "v1.17.3"; 5 | chartHash = "sha256-r4IZoiooMYmGapeL8Tjc97bYIIQ7fkDFGJiogNNCtdQ="; 6 | bogusVersion = true; 7 | } 8 | -------------------------------------------------------------------------------- /charts/rook-release/rook-ceph/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.rook.io/release/"; 3 | chart = "rook-ceph"; 4 | version = "v1.17.3"; 5 | chartHash = "sha256-F9oYAe+X0dV77YTiKlMjFS+fuJIIT1j0rkFtclZoO9c="; 6 | bogusVersion = true; 7 | } 8 | -------------------------------------------------------------------------------- /charts/sealed-secrets/sealed-secrets/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://bitnami-labs.github.io/sealed-secrets/"; 3 | chart = "sealed-secrets"; 4 | version = "2.17.2"; 5 | chartHash = "sha256-AMIDP3k8/gdFv7Nih8FyLD5kRl6Xe3RbK+09Aqukix0="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/sysdig/sysdig-deploy/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://charts.sysdig.com/"; 3 | chart = "sysdig-deploy"; 4 | version = "1.84.3"; 5 | chartHash = "sha256-HMBPgPAs02Ujnncmrz777uQWfpvlIOuXBAtrxfQXrS8="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/tailscale/tailscale-operator/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://pkgs.tailscale.com/helmcharts/"; 3 | chart = "tailscale-operator"; 4 | version = "1.84.0"; 5 | chartHash = "sha256-9mPNCYI+qt5uJGtSXkNw6YYXNh2+pCa9YMlbh2w1c0w="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/traefik/traefik/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://traefik.github.io/charts/"; 3 | chart = "traefik"; 4 | version = "35.4.0"; 5 | chartHash = "sha256-zl5jnQK5mzxXwbEdbeIgRaiOqZHB0Jls9t7QUEKu8H4="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/vault-config-operator/vault-config-operator/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://redhat-cop.github.io/vault-config-operator/"; 3 | chart = "vault-config-operator"; 4 | version = "v0.8.33"; 5 | chartHash = "sha256-AP+RZX7gC+/6NiXoF2FWyCr5d+i/1xqBQjBcWmMZZ0M="; 6 | bogusVersion = true; 7 | } 8 | -------------------------------------------------------------------------------- /charts/victoriametrics/victoria-metrics-agent/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://victoriametrics.github.io/helm-charts/"; 3 | chart = "victoria-metrics-agent"; 4 | version = "0.21.0"; 5 | chartHash = "sha256-Bf5l6CXKsMcDdpHx3380YjzsQYxrnHi7PwAINnyPdQc="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/victoriametrics/victoria-metrics-cluster/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://victoriametrics.github.io/helm-charts/"; 3 | chart = "victoria-metrics-cluster"; 4 | version = "0.23.0"; 5 | chartHash = "sha256-LWaL3cfqoYtuUreuqj2wVp1VMWs+jFfjtgC8dVFBtoQ="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/victoriametrics/victoria-metrics-k8s-stack/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://victoriametrics.github.io/helm-charts/"; 3 | chart = "victoria-metrics-k8s-stack"; 4 | version = "0.50.1"; 5 | chartHash = "sha256-8o1nPq9Ju3xs3cW+c7zMPrPWOZlcoFwpvSQ80lrNxdw="; 6 | } 7 | -------------------------------------------------------------------------------- /charts/victoriametrics/victoria-metrics-operator/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | repo = "https://victoriametrics.github.io/helm-charts/"; 3 | chart = "victoria-metrics-operator"; 4 | version = "0.49.1"; 5 | chartHash = "sha256-KkfGgslHGWTodG8hwyqEpOeoptuwW4ikkod7A9QHHGY="; 6 | } 7 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "flake-utils": { 4 | "inputs": { 5 | "systems": "systems" 6 | }, 7 | "locked": { 8 | "lastModified": 1731533236, 9 | "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 10 | "owner": "numtide", 11 | "repo": "flake-utils", 12 | "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 13 | "type": "github" 14 | }, 15 | "original": { 16 | "id": "flake-utils", 17 | "type": "indirect" 18 | } 19 | }, 20 | "flake-utils_2": { 21 | "inputs": { 22 | "systems": "systems_2" 23 | }, 24 | "locked": { 25 | "lastModified": 1726560853, 26 | "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", 27 | "owner": "numtide", 28 | "repo": "flake-utils", 29 | "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", 30 | "type": "github" 31 | }, 32 | "original": { 33 | "owner": "numtide", 34 | "repo": "flake-utils", 35 | "type": "github" 36 | } 37 | }, 38 | "haumea": { 39 | "inputs": { 40 | "nixpkgs": [ 41 | "nixpkgs" 42 | ] 43 | }, 44 | "locked": { 45 | "lastModified": 1685133229, 46 | "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", 47 | "owner": "nix-community", 48 | "repo": "haumea", 49 | "rev": "34dd58385092a23018748b50f9b23de6266dffc2", 50 | "type": "github" 51 | }, 52 | "original": { 53 | "owner": "nix-community", 54 | "ref": "v0.2.2", 55 | "repo": "haumea", 56 | "type": "github" 57 | } 58 | }, 59 | "nix-github-actions": { 60 | "inputs": { 61 | "nixpkgs": [ 62 | "poetry2nix", 63 | "nixpkgs" 64 | ] 65 | }, 66 | "locked": { 67 | "lastModified": 1729742964, 68 | "narHash": "sha256-B4mzTcQ0FZHdpeWcpDYPERtyjJd/NIuaQ9+BV1h+MpA=", 69 | "owner": "nix-community", 70 | "repo": "nix-github-actions", 71 | "rev": "e04df33f62cdcf93d73e9a04142464753a16db67", 72 | "type": "github" 73 | }, 74 | "original": { 75 | "owner": "nix-community", 76 | "repo": "nix-github-actions", 77 | "type": "github" 78 | } 79 | }, 80 | "nix-kube-generators": { 81 | "locked": { 82 | "lastModified": 1729269463, 83 | "narHash": "sha256-8jDDpC99fYl5CSHjZyPwb5PK7nQSknhkpfe8+DXI910=", 84 | "owner": "farcaller", 85 | "repo": "nix-kube-generators", 86 | "rev": "2be4f3cb99e179d9f94e6c8723862421437f8efb", 87 | "type": "github" 88 | }, 89 | "original": { 90 | "owner": "farcaller", 91 | "repo": "nix-kube-generators", 92 | "type": "github" 93 | } 94 | }, 95 | "nixpkgs": { 96 | "locked": { 97 | "lastModified": 1739020877, 98 | "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=", 99 | "owner": "NixOS", 100 | "repo": "nixpkgs", 101 | "rev": "a79cfe0ebd24952b580b1cf08cd906354996d547", 102 | "type": "github" 103 | }, 104 | "original": { 105 | "owner": "NixOS", 106 | "ref": "nixos-unstable", 107 | "repo": "nixpkgs", 108 | "type": "github" 109 | } 110 | }, 111 | "poetry2nix": { 112 | "inputs": { 113 | "flake-utils": "flake-utils_2", 114 | "nix-github-actions": "nix-github-actions", 115 | "nixpkgs": [ 116 | "nixpkgs" 117 | ], 118 | "systems": "systems_3", 119 | "treefmt-nix": "treefmt-nix" 120 | }, 121 | "locked": { 122 | "lastModified": 1738741221, 123 | "narHash": "sha256-UiTOA89yQV5YNlO1ZAp4IqJUGWOnTyBC83netvt8rQE=", 124 | "owner": "nix-community", 125 | "repo": "poetry2nix", 126 | "rev": "be1fe795035d3d36359ca9135b26dcc5321b31fb", 127 | "type": "github" 128 | }, 129 | "original": { 130 | "owner": "nix-community", 131 | "repo": "poetry2nix", 132 | "type": "github" 133 | } 134 | }, 135 | "root": { 136 | "inputs": { 137 | "flake-utils": "flake-utils", 138 | "haumea": "haumea", 139 | "nix-kube-generators": "nix-kube-generators", 140 | "nixpkgs": "nixpkgs", 141 | "poetry2nix": "poetry2nix" 142 | } 143 | }, 144 | "systems": { 145 | "locked": { 146 | "lastModified": 1681028828, 147 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 148 | "owner": "nix-systems", 149 | "repo": "default", 150 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 151 | "type": "github" 152 | }, 153 | "original": { 154 | "owner": "nix-systems", 155 | "repo": "default", 156 | "type": "github" 157 | } 158 | }, 159 | "systems_2": { 160 | "locked": { 161 | "lastModified": 1681028828, 162 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 163 | "owner": "nix-systems", 164 | "repo": "default", 165 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 166 | "type": "github" 167 | }, 168 | "original": { 169 | "owner": "nix-systems", 170 | "repo": "default", 171 | "type": "github" 172 | } 173 | }, 174 | "systems_3": { 175 | "locked": { 176 | "lastModified": 1681028828, 177 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 178 | "owner": "nix-systems", 179 | "repo": "default", 180 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 181 | "type": "github" 182 | }, 183 | "original": { 184 | "owner": "nix-systems", 185 | "repo": "default", 186 | "type": "github" 187 | } 188 | }, 189 | "treefmt-nix": { 190 | "inputs": { 191 | "nixpkgs": [ 192 | "poetry2nix", 193 | "nixpkgs" 194 | ] 195 | }, 196 | "locked": { 197 | "lastModified": 1730120726, 198 | "narHash": "sha256-LqHYIxMrl/1p3/kvm2ir925tZ8DkI0KA10djk8wecSk=", 199 | "owner": "numtide", 200 | "repo": "treefmt-nix", 201 | "rev": "9ef337e492a5555d8e17a51c911ff1f02635be15", 202 | "type": "github" 203 | }, 204 | "original": { 205 | "owner": "numtide", 206 | "repo": "treefmt-nix", 207 | "type": "github" 208 | } 209 | } 210 | }, 211 | "root": "root", 212 | "version": 7 213 | } 214 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A collection of kubernetes helm charts in a nix-digestable format."; 3 | 4 | inputs = { 5 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 | haumea = { 7 | url = "github:nix-community/haumea/v0.2.2"; 8 | inputs.nixpkgs.follows = "nixpkgs"; 9 | }; 10 | nix-kube-generators.url = "github:farcaller/nix-kube-generators"; 11 | poetry2nix.url = "github:nix-community/poetry2nix"; 12 | poetry2nix.inputs.nixpkgs.follows = "nixpkgs"; 13 | }; 14 | 15 | outputs = { self, haumea, nixpkgs, flake-utils, nix-kube-generators, poetry2nix, ... }: { 16 | chartsMetadata = haumea.lib.load { 17 | src = ./charts; 18 | transformer = haumea.lib.transformers.liftDefault; 19 | }; 20 | 21 | charts = { pkgs }: 22 | let 23 | kubelib = nix-kube-generators.lib { inherit pkgs; }; 24 | trimBogusVersion = attrs: builtins.removeAttrs attrs ["bogusVersion"]; 25 | in 26 | haumea.lib.load { 27 | src = ./charts; 28 | loader = {...}: p: kubelib.downloadHelmChart (trimBogusVersion (import p)); 29 | transformer = haumea.lib.transformers.liftDefault; 30 | }; 31 | } // flake-utils.lib.eachDefaultSystem (system: 32 | let 33 | pkgs = nixpkgs.legacyPackages.${system}; 34 | inherit (poetry2nix.lib.mkPoetry2Nix { inherit pkgs; }) mkPoetryEnv mkPoetryApplication; 35 | in 36 | { 37 | chartsDerivations = self.charts { inherit pkgs; }; 38 | 39 | packages.helmupdater = mkPoetryApplication { 40 | python = pkgs.python312; 41 | projectDir = ./.; 42 | }; 43 | 44 | devShell = pkgs.mkShell { 45 | buildInputs = with pkgs; [ 46 | nixpkgs-fmt 47 | poetry 48 | python310Packages.autopep8 49 | (mkPoetryEnv { 50 | python = pkgs.python312; 51 | projectDir = ./.; 52 | editablePackageSources = { 53 | manager = ./.; 54 | }; 55 | }) 56 | ]; 57 | }; 58 | }); 59 | } 60 | -------------------------------------------------------------------------------- /helmupdater/__init__.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | import json 3 | import os 4 | import functools 5 | 6 | from semver import VersionInfo 7 | import chevron 8 | import requests 9 | import typer 10 | import yaml 11 | 12 | app = typer.Typer() 13 | 14 | CHART_TEMPLATE = '''{ 15 | repo = "{{ repo }}"; 16 | chart = "{{ chart }}"; 17 | version = "{{ version }}"; 18 | chartHash = "{{ hash }}";{{#bogus_version}} 19 | bogusVersion = true;{{/bogus_version}} 20 | } 21 | ''' 22 | 23 | @functools.cache 24 | def current_system(): 25 | return subprocess.run([ 26 | 'nix', 27 | 'eval', 28 | '--impure', 29 | '--expr', 30 | 'builtins.currentSystem', 31 | ], capture_output=True, text=True, check=True).stdout.strip() 32 | 33 | def build_chart(repo_name: str, chart_name: str, check=False): 34 | return subprocess.run([ 35 | 'nix', 36 | 'build', 37 | f'.#chartsDerivations.{current_system()}.{repo_name}.{chart_name}' 38 | ], capture_output=True, text=True, check=check) 39 | 40 | def get_hash(repo_name: str, chart_name: str) -> str: 41 | cp = build_chart(repo_name, chart_name) 42 | for l in cp.stderr.split('\n'): 43 | l = l.strip() 44 | if not l.startswith('got:'): 45 | continue 46 | l = l[4:] 47 | return l.strip() 48 | raise RuntimeError(f'failed to get the hash for {repo_name}/{chart_name}:\n{cp.stderr}') 49 | 50 | def get_charts(): 51 | return json.loads(subprocess.check_output(['nix', 'eval', '.#chartsMetadata', '--json'])) 52 | 53 | def update_one_chart( 54 | repo_name: str, 55 | chart_name: str, 56 | local_chart, 57 | commit: bool, 58 | fail_on_fetch: bool, 59 | rehash_only: bool = False, 60 | ): 61 | repo_url = local_chart['repo'] 62 | if repo_url[-1] != '/': 63 | repo_url += '/' 64 | 65 | if not rehash_only: 66 | try: 67 | index_req = requests.get(f'{repo_url}index.yaml') 68 | except requests.exceptions.ConnectionError as e: 69 | print(f'failed to fetch the repo: {e}') 70 | if fail_on_fetch: 71 | raise 72 | return 73 | index_req.encoding = 'utf8' 74 | all_charts = yaml.safe_load(index_req.text) 75 | remote_chart = all_charts['entries'][chart_name] 76 | bogus_version = local_chart.get('bogusVersion', False) 77 | raw_version = local_chart['version'] 78 | bogus_version_fixed = False 79 | if bogus_version and raw_version.startswith('v'): 80 | raw_version = raw_version[1:] 81 | bogus_version_fixed = True 82 | my_version = VersionInfo.parse(raw_version) 83 | remote_version = '0.0.0' 84 | 85 | for chart in remote_chart[::-1]: 86 | version_str = chart['version'] 87 | if bogus_version and version_str.startswith('v'): 88 | version_str = version_str[1:] 89 | bogus_version_fixed = True 90 | if len(version_str.split('-')) != 1: 91 | continue 92 | try: 93 | version = VersionInfo.parse(version_str) 94 | if version > remote_version: 95 | remote_version = version 96 | except ValueError: 97 | print(f"skipping version `{version_str}` for chart {chart_name}") 98 | 99 | if remote_version <= my_version: 100 | return 101 | 102 | if bogus_version_fixed: 103 | my_version = 'v' + str(my_version) 104 | remote_version = 'v' + str(remote_version) 105 | 106 | print(f'updating {my_version} -> {remote_version}') 107 | else: 108 | remote_version = local_chart['version'] 109 | bogus_version = local_chart.get('bogusVersion', False) 110 | 111 | chart_path = os.path.join(os.curdir, 'charts', repo_name, chart_name, 'default.nix') 112 | 113 | with open(chart_path, 'w') as f: 114 | f.write(chevron.render( 115 | CHART_TEMPLATE, 116 | data=dict( 117 | repo=repo_url, 118 | chart=chart_name, 119 | version=str(remote_version), 120 | hash='sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=', 121 | bogus_version=bogus_version, 122 | ))) 123 | 124 | correct_hash = get_hash(repo_name, chart_name) 125 | 126 | if not correct_hash: 127 | raise RuntimeError('failed to get the correct hash') 128 | 129 | with open(chart_path, 'w') as f: 130 | f.write(chevron.render( 131 | CHART_TEMPLATE, 132 | data=dict( 133 | repo=repo_url, 134 | chart=chart_name, 135 | version=str(remote_version), 136 | hash=correct_hash, 137 | bogus_version=bogus_version, 138 | ))) 139 | 140 | if commit: 141 | subprocess.run(['git', 'add', chart_path], check=True) 142 | subprocess.run(['git', 'commit', '-m', f'{repo_name}/{chart_name}: update to {remote_version}'], check=True) 143 | 144 | @app.command() 145 | def update( 146 | name: str, 147 | commit: bool = typer.Option(False), 148 | rebuild: bool = typer.Option(False), 149 | rehash_only: bool = typer.Option(False), 150 | ): 151 | repo_name, chart_name = name.split('/') 152 | charts = get_charts() 153 | local_chart = charts[repo_name][chart_name] 154 | 155 | update_one_chart(repo_name, chart_name, local_chart, commit, fail_on_fetch=True, rehash_only=rehash_only) 156 | if rebuild: 157 | build_chart(repo_name, chart_name, check=True) 158 | 159 | @app.command() 160 | def update_all( 161 | commit: bool = typer.Option(False), 162 | rebuild: bool = typer.Option(False), 163 | rehash_only: bool = typer.Option(False), 164 | ): 165 | charts = get_charts() 166 | for repo_name, charts in charts.items(): 167 | for chart_name, local_chart in charts.items(): 168 | print(f'checking {repo_name}/{chart_name}') 169 | try: 170 | update_one_chart(repo_name, chart_name, local_chart, commit, fail_on_fetch=False, rehash_only=rehash_only) 171 | if rebuild: 172 | build_chart(repo_name, chart_name, check=True) 173 | except RuntimeError as e: 174 | print(f'failed: {e}') 175 | 176 | @app.command() 177 | def init(repo_url: str, name: str, commit: bool = typer.Option(False), bogus_version: bool = typer.Option(False)): 178 | repo_name, chart_name = name.split('/') 179 | charts = get_charts() 180 | if charts.get(repo_name, {}).get(chart_name, None): 181 | print('chart already exists') 182 | exit(1) 183 | 184 | repo_dir = os.path.join(os.curdir, 'charts', repo_name) 185 | if not os.path.exists(repo_dir): 186 | os.mkdir(repo_dir) 187 | 188 | chart_dir = os.path.join(repo_dir, chart_name) 189 | os.mkdir(chart_dir) 190 | 191 | chart_path = os.path.join(chart_dir, 'default.nix') 192 | with open(chart_path, 'w') as f: 193 | f.write(chevron.render( 194 | CHART_TEMPLATE, 195 | data=dict( 196 | repo=repo_url, 197 | chart=chart_name, 198 | version='0.0.0', 199 | hash='sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=', 200 | bogus_version=bogus_version, 201 | ))) 202 | 203 | subprocess.run(['git', 'add', chart_path], check=True) 204 | charts = get_charts() 205 | local_chart = charts[repo_name][chart_name] 206 | update_one_chart(repo_name, chart_name, local_chart, commit=False, fail_on_fetch=True) 207 | 208 | charts = get_charts() 209 | local_chart = charts[repo_name][chart_name] 210 | subprocess.run(['git', 'add', chart_path], check=True) 211 | 212 | if commit: 213 | subprocess.run(['git', 'commit', '-m', f'{repo_name}/{chart_name}: init at {local_chart["version"]}'], check=True) 214 | 215 | 216 | if __name__ == "__main__": 217 | app() 218 | -------------------------------------------------------------------------------- /poetry.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. 2 | 3 | [[package]] 4 | name = "certifi" 5 | version = "2024.6.2" 6 | description = "Python package for providing Mozilla's CA Bundle." 7 | optional = false 8 | python-versions = ">=3.6" 9 | files = [ 10 | {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, 11 | {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, 12 | ] 13 | 14 | [[package]] 15 | name = "charset-normalizer" 16 | version = "3.3.2" 17 | description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." 18 | optional = false 19 | python-versions = ">=3.7.0" 20 | files = [ 21 | {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, 22 | {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, 23 | {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, 24 | {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, 25 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, 26 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, 27 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, 28 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, 29 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, 30 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, 31 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, 32 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, 33 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, 34 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, 35 | {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, 36 | {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, 37 | {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, 38 | {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, 39 | {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, 40 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, 41 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, 42 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, 43 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, 44 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, 45 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, 46 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, 47 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, 48 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, 49 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, 50 | {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, 51 | {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, 52 | {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, 53 | {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, 54 | {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, 55 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, 56 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, 57 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, 58 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, 59 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, 60 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, 61 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, 62 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, 63 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, 64 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, 65 | {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, 66 | {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, 67 | {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, 68 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, 69 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, 70 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, 71 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, 72 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, 73 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, 74 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, 75 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, 76 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, 77 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, 78 | {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, 79 | {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, 80 | {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, 81 | {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, 82 | {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, 83 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, 84 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, 85 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, 86 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, 87 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, 88 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, 89 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, 90 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, 91 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, 92 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, 93 | {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, 94 | {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, 95 | {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, 96 | {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, 97 | {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, 98 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, 99 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, 100 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, 101 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, 102 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, 103 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, 104 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, 105 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, 106 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, 107 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, 108 | {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, 109 | {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, 110 | {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, 111 | ] 112 | 113 | [[package]] 114 | name = "chevron" 115 | version = "0.14.0" 116 | description = "Mustache templating language renderer" 117 | optional = false 118 | python-versions = "*" 119 | files = [ 120 | {file = "chevron-0.14.0-py3-none-any.whl", hash = "sha256:fbf996a709f8da2e745ef763f482ce2d311aa817d287593a5b990d6d6e4f0443"}, 121 | {file = "chevron-0.14.0.tar.gz", hash = "sha256:87613aafdf6d77b6a90ff073165a61ae5086e21ad49057aa0e53681601800ebf"}, 122 | ] 123 | 124 | [[package]] 125 | name = "click" 126 | version = "8.1.7" 127 | description = "Composable command line interface toolkit" 128 | optional = false 129 | python-versions = ">=3.7" 130 | files = [ 131 | {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, 132 | {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, 133 | ] 134 | 135 | [package.dependencies] 136 | colorama = {version = "*", markers = "platform_system == \"Windows\""} 137 | 138 | [[package]] 139 | name = "colorama" 140 | version = "0.4.6" 141 | description = "Cross-platform colored terminal text." 142 | optional = false 143 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" 144 | files = [ 145 | {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, 146 | {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, 147 | ] 148 | 149 | [[package]] 150 | name = "idna" 151 | version = "3.7" 152 | description = "Internationalized Domain Names in Applications (IDNA)" 153 | optional = false 154 | python-versions = ">=3.5" 155 | files = [ 156 | {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, 157 | {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, 158 | ] 159 | 160 | [[package]] 161 | name = "pyyaml" 162 | version = "6.0.1" 163 | description = "YAML parser and emitter for Python" 164 | optional = false 165 | python-versions = ">=3.6" 166 | files = [ 167 | {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, 168 | {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, 169 | {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, 170 | {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, 171 | {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, 172 | {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, 173 | {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, 174 | {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, 175 | {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, 176 | {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, 177 | {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, 178 | {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, 179 | {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, 180 | {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, 181 | {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, 182 | {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, 183 | {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, 184 | {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, 185 | {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, 186 | {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, 187 | {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, 188 | {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, 189 | {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, 190 | {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, 191 | {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, 192 | {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, 193 | {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, 194 | {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, 195 | {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, 196 | {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, 197 | {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, 198 | {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, 199 | {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, 200 | {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, 201 | {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, 202 | {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, 203 | {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, 204 | {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, 205 | {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, 206 | {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, 207 | {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, 208 | {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, 209 | {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, 210 | {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, 211 | {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, 212 | {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, 213 | {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, 214 | {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, 215 | {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, 216 | {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, 217 | {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, 218 | ] 219 | 220 | [[package]] 221 | name = "requests" 222 | version = "2.32.3" 223 | description = "Python HTTP for Humans." 224 | optional = false 225 | python-versions = ">=3.8" 226 | files = [ 227 | {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, 228 | {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, 229 | ] 230 | 231 | [package.dependencies] 232 | certifi = ">=2017.4.17" 233 | charset-normalizer = ">=2,<4" 234 | idna = ">=2.5,<4" 235 | urllib3 = ">=1.21.1,<3" 236 | 237 | [package.extras] 238 | socks = ["PySocks (>=1.5.6,!=1.5.7)"] 239 | use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] 240 | 241 | [[package]] 242 | name = "semver" 243 | version = "2.13.0" 244 | description = "Python helper for Semantic Versioning (http://semver.org/)" 245 | optional = false 246 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 247 | files = [ 248 | {file = "semver-2.13.0-py2.py3-none-any.whl", hash = "sha256:ced8b23dceb22134307c1b8abfa523da14198793d9787ac838e70e29e77458d4"}, 249 | {file = "semver-2.13.0.tar.gz", hash = "sha256:fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f"}, 250 | ] 251 | 252 | [[package]] 253 | name = "typer" 254 | version = "0.7.0" 255 | description = "Typer, build great CLIs. Easy to code. Based on Python type hints." 256 | optional = false 257 | python-versions = ">=3.6" 258 | files = [ 259 | {file = "typer-0.7.0-py3-none-any.whl", hash = "sha256:b5e704f4e48ec263de1c0b3a2387cd405a13767d2f907f44c1a08cbad96f606d"}, 260 | {file = "typer-0.7.0.tar.gz", hash = "sha256:ff797846578a9f2a201b53442aedeb543319466870fbe1c701eab66dd7681165"}, 261 | ] 262 | 263 | [package.dependencies] 264 | click = ">=7.1.1,<9.0.0" 265 | 266 | [package.extras] 267 | all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] 268 | dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"] 269 | doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] 270 | test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] 271 | 272 | [[package]] 273 | name = "urllib3" 274 | version = "2.2.2" 275 | description = "HTTP library with thread-safe connection pooling, file post, and more." 276 | optional = false 277 | python-versions = ">=3.8" 278 | files = [ 279 | {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, 280 | {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, 281 | ] 282 | 283 | [package.extras] 284 | brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] 285 | h2 = ["h2 (>=4,<5)"] 286 | socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] 287 | zstd = ["zstandard (>=0.18.0)"] 288 | 289 | [metadata] 290 | lock-version = "2.0" 291 | python-versions = "^3.10" 292 | content-hash = "dac630f6b4e8543a945f06b455478ea2f874796cb21aada9291c0a61b1ac96a3" 293 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "helmupdater" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Vladimir Pouzanov "] 6 | 7 | [tool.poetry.dependencies] 8 | python = "^3.10" 9 | requests = "^2.28.2" 10 | typer = "^0.7.0" 11 | pyyaml = "^6.0" 12 | semver = "^2.13.0" 13 | chevron = "^0.14.0" 14 | 15 | [tool.poetry.dev-dependencies] 16 | 17 | [build-system] 18 | requires = ["poetry-core>=1.0.0"] 19 | build-backend = "poetry.core.masonry.api" 20 | 21 | [tool.poetry.scripts] 22 | helmupdater = "helmupdater:app" 23 | --------------------------------------------------------------------------------