引入 devenv 与 starship 配置,统一 Go/Node/Postgres 开发依赖与快捷命令。 同时让脚本在使用本地数据库环境时跳过 Docker 创建步骤。
105 lines
2.4 KiB
Nix
105 lines
2.4 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
inputs,
|
|
...
|
|
}:
|
|
|
|
{
|
|
starship = {
|
|
enable = true;
|
|
config = {
|
|
enable = true;
|
|
path = ./starship.toml;
|
|
};
|
|
};
|
|
|
|
env = {
|
|
AI_GATEWAY_DATABASE_NAME = "easyai_ai_gateway";
|
|
AI_GATEWAY_DATABASE_URL = "host=${config.env.DEVENV_RUNTIME}/postgres dbname=easyai_ai_gateway sslmode=disable";
|
|
AI_GATEWAY_SKIP_DB_CREATE = "1";
|
|
};
|
|
|
|
packages = with pkgs; [
|
|
curl
|
|
docker-client
|
|
git
|
|
jq
|
|
lsof
|
|
postgresql_18
|
|
ripgrep
|
|
watchexec
|
|
];
|
|
|
|
scripts = {
|
|
dev.exec = "pnpm dev";
|
|
build.exec = "pnpm build";
|
|
test-all.exec = "pnpm test";
|
|
lint.exec = "pnpm lint";
|
|
migrate.exec = "pnpm migrate";
|
|
db-create.exec = "pnpm db:create";
|
|
api-test.exec = "pnpm nx run api:test";
|
|
web-build.exec = "pnpm nx run web:build";
|
|
};
|
|
|
|
services.postgres = {
|
|
enable = true;
|
|
package = pkgs.postgresql_18.withPackages (postgresPackages: [
|
|
postgresPackages.pgvector
|
|
]);
|
|
listen_addresses = "";
|
|
initialDatabases = [
|
|
{
|
|
name = "easyai_ai_gateway";
|
|
initialSQL = ''
|
|
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
|
CREATE EXTENSION IF NOT EXISTS vector;
|
|
'';
|
|
}
|
|
];
|
|
};
|
|
|
|
# https://devenv.sh/languages/
|
|
languages.go = {
|
|
enable = true;
|
|
package = pkgs.go;
|
|
};
|
|
|
|
languages.javascript = {
|
|
enable = true;
|
|
package = pkgs.nodejs_22;
|
|
nodejs.enable = true;
|
|
lsp.enable = true;
|
|
pnpm = {
|
|
enable = true;
|
|
install.enable = true;
|
|
};
|
|
};
|
|
|
|
enterShell = ''
|
|
echo ""
|
|
echo "EasyAI AI Gateway 开发环境已就绪"
|
|
echo "当前目录:$PWD"
|
|
echo ""
|
|
echo "运行时版本:"
|
|
echo " go: $(go version | awk '{print $3}')"
|
|
echo " node: $(node --version)"
|
|
echo " pnpm: $(pnpm --version)"
|
|
echo " psql: $(psql --version | awk '{print $3}')"
|
|
echo ""
|
|
echo "常用命令:"
|
|
echo " dev 创建/迁移数据库,并启动 API 和 Web"
|
|
echo " test-all 运行 API 和 Web 测试目标"
|
|
echo " build 构建 API 和 Web"
|
|
echo " lint 运行 Web 与 contracts 类型检查"
|
|
echo " migrate 执行 API 数据库迁移"
|
|
echo " db-create 创建 AI Gateway 数据库"
|
|
echo " api-test 只运行 Go API 测试"
|
|
echo " web-build 只构建 Web 前端"
|
|
echo ""
|
|
echo "提示:根 package.json 是唯一脚本入口;上述短命令由 devenv scripts 转发。"
|
|
echo ""
|
|
'';
|
|
}
|