{ description = "Templates Helm deployments using Nix"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs"; flake-utils.url = "github:numtide/flake-utils"; haumea = { url = "github:nix-community/haumea/v0.2.2"; inputs.nixpkgs.follows = "nixpkgs"; }; nixhelm = { url = "github:farcaller/nixhelm"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-kube-generators.url = "github:farcaller/nix-kube-generators"; }; outputs = inputs @ { self, flake-utils, haumea, nix-kube-generators, nixhelm, nixpkgs, }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs {inherit system;}; kubelib = nix-kube-generators.lib {inherit pkgs;}; lib = import ./lib {inherit kubelib pkgs;}; nixhelmCharts = nixhelm.chartsDerivations.${system}; mkCharts = src: haumea.lib.load { inherit src; loader = {...}: p: lib.fetchers.helmChart (import p); transformer = haumea.lib.transformers.liftDefault; # TODO: split charts to own `.nix` files # and remove this transformer }; in { lib = { mkDerivation = { charts ? nixhelmCharts, user ? {}, }: (import self { inherit charts haumea lib pkgs user; }).mkDerivation; app-template = import src/app-template.nix { charts = nixhelmCharts; inherit lib pkgs; }; inherit mkCharts; mkChartsWithNixhelm = src: pkgs.lib.attrsets.recursiveUpdate nixhelmCharts (mkCharts src); }; # TODO: make a template formatter = pkgs.alejandra; }); }