mirror of
https://github.com/sourcebot-dev/sourcebot.git
synced 2025-12-12 04:15:30 +00:00
117 lines
3.6 KiB
Nix
117 lines
3.6 KiB
Nix
|
|
{
|
||
|
|
pkgs,
|
||
|
|
lib,
|
||
|
|
}:
|
||
|
|
pkgs.stdenv.mkDerivation (finalAttrs: {
|
||
|
|
name = "sourcebot";
|
||
|
|
|
||
|
|
src = ../.;
|
||
|
|
|
||
|
|
buildInputs = with pkgs; [
|
||
|
|
nodejs
|
||
|
|
yarn
|
||
|
|
redis
|
||
|
|
openssl
|
||
|
|
];
|
||
|
|
buildPhase = ''
|
||
|
|
runHook preBuild
|
||
|
|
${lib.getExe pkgs.yarn-berry} workspaces foreach -R --from '{@sourcebot/schemas,@sourcebot/error,@sourcebot/db}' run build
|
||
|
|
${lib.getExe pkgs.yarn-berry} build:deps
|
||
|
|
${lib.getExe pkgs.yarn-berry} build
|
||
|
|
runHook postBuild
|
||
|
|
'';
|
||
|
|
missingHashes = ./missing-hashes.json;
|
||
|
|
offlineCache = pkgs.yarn-berry.fetchYarnBerryDeps {
|
||
|
|
inherit (finalAttrs) src missingHashes;
|
||
|
|
hash = "sha256-bazFpUV8Pi530wu3wzgx0uAKKBkEtmOosoTTArk888M=";
|
||
|
|
};
|
||
|
|
|
||
|
|
nativeBuildInputs = with pkgs; [
|
||
|
|
yarn-berry.yarnBerryConfigHook
|
||
|
|
yarn-berry
|
||
|
|
nodejs
|
||
|
|
nodePackages.prisma
|
||
|
|
makeWrapper
|
||
|
|
];
|
||
|
|
|
||
|
|
env = {
|
||
|
|
YARN_ENABLE_SCRIPTS = "false";
|
||
|
|
PRISMA_SCHEMA_ENGINE_BINARY = "${pkgs.prisma-engines}/bin/schema-engine";
|
||
|
|
PRISMA_QUERY_ENGINE_BINARY = "${pkgs.prisma-engines}/bin/query-engine";
|
||
|
|
PRISMA_QUERY_ENGINE_LIBRARY = "${pkgs.prisma-engines}/lib/libquery_engine.node";
|
||
|
|
PRISMA_FMT_BINARY = "${pkgs.prisma-engines}/bin/prisma-fmt";
|
||
|
|
};
|
||
|
|
|
||
|
|
installPhase = ''
|
||
|
|
runHook preInstall
|
||
|
|
|
||
|
|
|
||
|
|
cp -r packages/web/.next/standalone $out
|
||
|
|
cp -r node_modules/* $out/node_modules
|
||
|
|
|
||
|
|
mkdir -p $out/packages/web
|
||
|
|
cp -r packages/web/public $out/packages/web/public
|
||
|
|
mkdir -p $out/packages/web/.next
|
||
|
|
cp -r packages/web/.next/static $out/packages/web/.next/static
|
||
|
|
|
||
|
|
mkdir -p $out/packages/backend
|
||
|
|
cp -r packages/backend/node_modules/* $out/node_modules
|
||
|
|
cp -r packages/backend/* $out/packages/backend
|
||
|
|
|
||
|
|
cp -r packages/db/* $out/packages/db
|
||
|
|
cp -r packages/schemas/* $out/packages/schemas
|
||
|
|
cp -r packages/crypto/* $out/packages/crypto
|
||
|
|
cp -r packages/error $out/packages/error
|
||
|
|
cp -r packages/mcp $out/packages/mcp
|
||
|
|
cp -r packages/logger/* $out/packages/logger
|
||
|
|
cp -r packages/shared/* $out/packages/shared
|
||
|
|
cp -r node_modules/* $out/node_modules
|
||
|
|
|
||
|
|
mkdir -p $out/bin
|
||
|
|
cp public.pem $out/
|
||
|
|
|
||
|
|
rm -rf $out/pacakages/web/.next/cache
|
||
|
|
ln -s /var/cache/sourcebot $out/packages/web/.next/cache
|
||
|
|
|
||
|
|
# web
|
||
|
|
cat <<EOF > $out/bin/sourcebot-web
|
||
|
|
#!${pkgs.runtimeShell}
|
||
|
|
export PATH=\$PATH:${pkgs.openssl}/bin
|
||
|
|
export NODE_ENV=production
|
||
|
|
export NODE_PATH=$out/node_modules
|
||
|
|
export PRISMA_SCHEMA_ENGINE_BINARY=${pkgs.prisma-engines}/bin/schema-engine
|
||
|
|
export PRISMA_QUERY_ENGINE_BINARY=${pkgs.prisma-engines}/bin/query-engine
|
||
|
|
export PRISMA_QUERY_ENGINE_LIBRARY=${pkgs.prisma-engines}/lib/libquery_engine.node
|
||
|
|
export PRISMA_FMT_BINARY=${pkgs.prisma-engines}/bin/prisma-fmt
|
||
|
|
|
||
|
|
exec ${pkgs.nodejs}/bin/node $out/packages/web/server.js "\$@"
|
||
|
|
EOF
|
||
|
|
|
||
|
|
# backend
|
||
|
|
cat <<EOF > $out/bin/sourcebot-backend
|
||
|
|
#!${pkgs.runtimeShell}
|
||
|
|
export NODE_ENV=production
|
||
|
|
export NODE_PATH=$out/node_modules
|
||
|
|
export PRISMA_SCHEMA_ENGINE_BINARY=${pkgs.prisma-engines}/bin/schema-engine
|
||
|
|
export PRISMA_QUERY_ENGINE_BINARY=${pkgs.prisma-engines}/bin/query-engine
|
||
|
|
export PRISMA_QUERY_ENGINE_LIBRARY=${pkgs.prisma-engines}/lib/libquery_engine.node
|
||
|
|
export PRISMA_FMT_BINARY=${pkgs.prisma-engines}/bin/prisma-fmt
|
||
|
|
|
||
|
|
export PATH=${pkgs.lib.makeBinPath (with pkgs; [prisma openssl git zoekt])}
|
||
|
|
exec ${pkgs.nodejs}/bin/node $out/packages/backend/dist/index.js "\$@"
|
||
|
|
EOF
|
||
|
|
|
||
|
|
# mcp
|
||
|
|
cat <<EOF > $out/bin/sourcebot-mcp
|
||
|
|
#!${pkgs.runtimeShell}
|
||
|
|
export NODE_ENV=production
|
||
|
|
export NODE_PATH=$out/node_modules
|
||
|
|
exec ${pkgs.nodejs}/bin/node $out/packages/mcp/dist/index.js "\$@"
|
||
|
|
EOF
|
||
|
|
chmod +x $out/bin/*
|
||
|
|
|
||
|
|
|
||
|
|
runHook postInstall
|
||
|
|
'';
|
||
|
|
})
|