Files
nixpkgs/pkgs/by-name/pr/prisma-engines_7/package.nix
2026-08-03 22:53:53 +02:00

75 lines
2.4 KiB
Nix

{
fetchFromGitHub,
lib,
openssl,
pkg-config,
rustPlatform,
}:
# Updating this package will force an update for prisma. The
# version of prisma-engines and prisma must be the same for them to
# function correctly.
rustPlatform.buildRustPackage (finalAttrs: {
pname = "prisma-engines_7";
version = "7.9.1";
src = fetchFromGitHub {
owner = "prisma";
repo = "prisma-engines";
tag = finalAttrs.version;
hash = "sha256-bGtVKGoWZc/3s0lhTXksp+6fM/Q461ve/HQsRPxWD0Q=";
};
cargoHash = "sha256-zLl2ErsCTXZVShPFLH94GLJ0q2FrMnfnecnfKD7VDL4=";
# Use system openssl.
env.OPENSSL_NO_VENDOR = 1;
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ];
preBuild = ''
export OPENSSL_DIR=${lib.getDev openssl}
export OPENSSL_LIB_DIR=${lib.getLib openssl}/lib
export SQLITE_MAX_VARIABLE_NUMBER=250000
export SQLITE_MAX_EXPR_DEPTH=10000
export GIT_HASH=0000000000000000000000000000000000000000
'';
cargoBuildFlags = [
"-p"
"schema-engine-cli"
];
# Tests are long to compile
doCheck = false;
setupHook = ./setup-hook.sh;
meta = {
description = "Collection of engines that power the core stack for Prisma";
homepage = "https://www.prisma.io/";
license = lib.licenses.asl20;
platforms = lib.platforms.unix;
mainProgram = "schema-engine";
maintainers = with lib.maintainers; [
aqrln
];
};
})
### Troubleshooting
# Here's an example application using Prisma with Nix: https://github.com/pimeys/nix-prisma-example
# At example's `flake.nix` shellHook, notice the requirement of defining environment variables for prisma, it's values will show on `prisma --version`.
# Read the example's README: https://github.com/pimeys/nix-prisma-example/blob/main/README.md
# Prisma requires 2 packages, `prisma-engines` and `prisma`, to be at *exact* same versions.
# Certify at `package.json` that dependencies "@prisma/client" and "prisma" are equal, meaning no caret (`^`) in version.
# Configure npm to use exact version: `npm config set save-exact=true`
# Delete `package-lock.json`, delete `node_modules` directory and run `npm install`.
# Run prisma client from `node_modules/.bin/prisma`.
# Run `./node_modules/.bin/prisma --version` and check if both prisma packages versions are equal, current platform is `linux-nixos`, and other keys equal to the prisma environment variables you defined for prisma.
# Test prisma with `generate`, `db push`, etc. It should work. If not, open an issue.