Files
create-glstack/template/devenv.nix
2026-06-02 12:01:39 +02:00

100 lines
2.4 KiB
Nix

<@if(neq(context.project.frontend,"none"))>
bundev = {
exec = "bun dev";
cwd = "./apps/web";
after= ["devenv:processes:air@started"];
};
<@endif>{ pkgs, lib, config, inputs, ... }:
{
packages = [
pkgs.bun
pkgs.nodejs_24
pkgs.watchexec
pkgs.sqlc
pkgs.dbmate
pkgs.air
pkgs.buf
pkgs.protoc-gen-go
pkgs.protoc-gen-connect-go
pkgs.protoc-gen-es
pkgs.cobra-cli
<@if(eq(context.project.mobile,"expo"))>
pkgs.glib
<@endif>
];
<@if(eq(context.project.mobile,"expo"))>
android = {
enable = true;
emulator = {
enable = true;
};
buildTools.version = ["34.0.0" "35.0.0" "36.0.0" ]; # add 36.0.0
reactNative.enable = true;
android-studio = {
enable = false;
};
ndk = {
enable = true;
version = [ "27.1.12297006" ];
};
};
<@endif>
languages.go.enable = true;
languages.typescript.enable = true;
services.postgres = {
enable = true;
listen_addresses = "127.0.0.1";
initialDatabases = [
{
name = "<@var(context.project.name)>";
user = "pp";
pass = "<@var(context.project.name)>";
}
];
};
<@if(eq(context.project.mobile,"expo"))>
enterShell = ''
export LD_LIBRARY_PATH=$ANDROID_HOME/emulator/lib64:$LD_LIBRARY_PATH
'';
tasks.'<@var(context.project.name)>:create-avd'.exec = ''
avdmanager create avd
-n "Pixel_5_API34"
-k "system-images;android-34;google_apis_playstore;x86_64"
-d "pixel_5"
'';
tasks.'<@var(context.project.name)>:run-emulator' = {
exec = "emulator -avd Pixel_5_API34";
after = [ "<@var(context.project.name)>:create-avd" ]
};
<@endif>
processes = {
air = {
exec = "air";
cwd = "./services/api";
after = ["devenv:processes:postgres"];
};
protowatcher = {
exec = "watchexec -r -e proto buf generate";
cwd = "./packages/proto";
after= ["devenv:processes:air@started"];
};
protojswatcher = {
exec = "watchexec -e js,ts -w ./packages/rpc/src -r bun run ./scripts/gen-rpc-index.ts";
cwd = "./";
after= ["devenv:processes:protowatcher@started"];
};
sqlwatcher = {
exec = "watchexec -w ./db/migrations -w ./db/query -r -e sql sqlc generate";
cwd = "./services/api";
after= ["devenv:processes:air@started"];
};
<@if(eq(context.project.mobile,"expo"))>
emulator = {
exec
}
<@endif>
};
}