{ pkgs, ... }: { renderMustache = name: template: data: # Render handlebars `template` called `name` by converting `data` to JSON pkgs.stdenv.mkDerivation { name = "${name}"; # Disable phases which are not needed. In particular the unpackPhase will # fail, if no src attribute is set nativeBuildInpts = [ pkgs.mustache-go ]; # Pass Json as file to avoid escaping passAsFile = [ "jsonData" ]; jsonData = builtins.toJSON data; phases = [ "buildPhase" "installPhase" ]; buildPhase = '' ${pkgs.mustache-go}/bin/mustache $jsonDataPath ${template} > rendered_file ''; installPhase = '' cp rendered_file $out ''; }; }