{ lib, config, ... }:

{
  options = let
    inherit (lib) mkOption types;
  in {
    my.secrets.apps = mkOption {
      default = {};
      type = with types; attrsOf attrs;
    };
  };

  config = let
    inherit (lib) nameValuePair mapAttrs';
  in {
    resource.vault_generic_secret = mapAttrs' (name: value: nameValuePair "apps_${name}" {
      path = "kv/apps/${name}";

      data_json = builtins.toJSON value;
    }) config.my.secrets.apps;
  };
}