{ stdenvNoCC, lib, kubernetes-helm, cacert, }: let cleanName = name: lib.replaceStrings ["/"] ["-"] name; in { # name of the chart chart, # chart url to fetch from custom location chartUrl ? null, # version of the chart version ? null, # chart hash sha256, # whether to extract chart untar ? true, # use custom charts repo repo ? null, # pass --verify to helm chart verify ? false, # pass --devel to helm chart devel ? false, }: stdenvNoCC.mkDerivation { name = "${cleanName chart}-${ if version == null then "dev" else version }"; buildCommand = '' export HOME="$PWD" echo "adding helm repo" ${ if repo == null then "" else "helm repo add repository ${repo}" } echo "fetching helm chart" helm fetch -d ./chart \ ${ if untar then "--untar" else "" } \ ${ if version == null then "" else "--version ${version}" } \ ${ if devel then "--devel" else "" } \ ${ if verify then "--verify" else "" } \ ${ if chartUrl == null then ( if repo == null then chart else "repository/${chart}" ) else chartUrl } cp -r chart/*/ $out ''; outputHashMode = "recursive"; outputHashAlgo = "sha256"; outputHash = sha256; nativeBuildInputs = [kubernetes-helm cacert]; }