{ lib, pkgs, config, ... }: with lib; with lib.plusultra; let cfg = config.plusultra.cli-apps.prisma; in { options.plusultra.cli-apps.prisma = with types; { enable = mkBoolOpt false "Whether or not to install Prisma"; pkgs = { npm = mkOpt package pkgs.nodePackages.prisma "The NPM package to install"; engines = mkOpt package pkgs.prisma-engines "The package to get prisma engines from"; }; }; config = mkIf cfg.enable { environment.systemPackages = [ cfg.pkgs.npm ]; plusultra.home.extraOptions = { programs.zsh.initExtra = '' export PRISMA_MIGRATION_ENGINE_BINARY="${cfg.pkgs.engines}/bin/migration-engine" export PRISMA_QUERY_ENGINE_BINARY="${cfg.pkgs.engines}/bin/query-engine" export PRISMA_QUERY_ENGINE_LIBRARY="${cfg.pkgs.engines}/lib/libquery_engine.node" export PRISMA_INTROSPECTION_ENGINE_BINARY="${cfg.pkgs.engines}/bin/introspection-engine" export PRISMA_FMT_BINARY="${cfg.pkgs.engines}/bin/prisma-fmt" ''; }; }; }