234 lines
7.2 KiB
Nix
234 lines
7.2 KiB
Nix
{ pkgs, config, lib, ... }:
|
|
{
|
|
imports = lib.optional (builtins.pathExists ./devenv.local.nix) ./devenv.local.nix;
|
|
|
|
env = {
|
|
FLUXER_CONFIG = "${config.git.root}/config/config.json";
|
|
FLUXER_DATABASE = "sqlite";
|
|
PC_DISABLE_TUI = "1";
|
|
};
|
|
|
|
dotenv.enable = false;
|
|
cachix.pull = [ "devenv" ];
|
|
|
|
process.manager.implementation = "process-compose";
|
|
|
|
process.managers.process-compose = {
|
|
port = 8090;
|
|
unixSocket.enable = true;
|
|
settings = {
|
|
is_tui_disabled = true;
|
|
log_level = "info";
|
|
log_configuration = {
|
|
flush_each_line = true;
|
|
};
|
|
processes = {
|
|
caddy = {
|
|
command = lib.mkForce "exec ${config.git.root}/scripts/dev_process_entry.sh caddy caddy run --config ${config.git.root}/dev/Caddyfile.dev --adapter caddyfile";
|
|
log_location = "${config.git.root}/dev/logs/caddy.log";
|
|
availability = {
|
|
restart = "always";
|
|
};
|
|
};
|
|
css_watch = {
|
|
command = lib.mkForce "exec ${config.git.root}/scripts/dev_process_entry.sh css_watch ${config.git.root}/scripts/dev_css_watch.sh";
|
|
log_location = "${config.git.root}/dev/logs/css_watch.log";
|
|
availability = {
|
|
restart = "always";
|
|
};
|
|
};
|
|
fluxer_app = {
|
|
command = lib.mkForce "exec ${config.git.root}/scripts/dev_process_entry.sh fluxer_app env FORCE_COLOR=1 FLUXER_APP_DEV_PORT=49427 ${config.git.root}/scripts/dev_fluxer_app.sh";
|
|
log_location = "${config.git.root}/dev/logs/fluxer_app.log";
|
|
availability = {
|
|
restart = "always";
|
|
};
|
|
};
|
|
fluxer_gateway = {
|
|
command = lib.mkForce "exec ${config.git.root}/scripts/dev_process_entry.sh fluxer_gateway env FLUXER_GATEWAY_NO_SHELL=1 ${config.git.root}/scripts/dev_gateway.sh";
|
|
log_location = "${config.git.root}/dev/logs/fluxer_gateway.log";
|
|
log_configuration = {
|
|
flush_each_line = true;
|
|
};
|
|
availability = {
|
|
restart = "always";
|
|
};
|
|
};
|
|
fluxer_server = {
|
|
command = lib.mkForce "exec ${config.git.root}/scripts/dev_process_entry.sh fluxer_server pnpm --filter fluxer_server dev";
|
|
log_location = "${config.git.root}/dev/logs/fluxer_server.log";
|
|
availability = {
|
|
restart = "always";
|
|
};
|
|
};
|
|
livekit = {
|
|
command = lib.mkForce "exec ${config.git.root}/scripts/dev_process_entry.sh livekit livekit-server --config ${config.git.root}/dev/livekit.yaml";
|
|
log_location = "${config.git.root}/dev/logs/livekit.log";
|
|
availability = {
|
|
restart = "always";
|
|
};
|
|
};
|
|
mailpit = {
|
|
command = lib.mkForce "exec ${config.git.root}/scripts/dev_process_entry.sh mailpit mailpit --listen 127.0.0.1:49667 --smtp 127.0.0.1:49621 --webroot /mailpit/";
|
|
log_location = "${config.git.root}/dev/logs/mailpit.log";
|
|
availability = {
|
|
restart = "always";
|
|
};
|
|
};
|
|
meilisearch = {
|
|
command = lib.mkForce "MEILI_NO_ANALYTICS=true exec ${config.git.root}/scripts/dev_process_entry.sh meilisearch meilisearch --env development --master-key \"$(cat ${config.git.root}/dev/meilisearch_master_key 2>/dev/null || true)\" --db-path ${config.git.root}/dev/data/meilisearch --http-addr 127.0.0.1:7700";
|
|
log_location = "${config.git.root}/dev/logs/meilisearch.log";
|
|
availability = {
|
|
restart = "always";
|
|
};
|
|
};
|
|
valkey = {
|
|
command = lib.mkForce "exec ${config.git.root}/scripts/dev_process_entry.sh valkey valkey-server --bind 127.0.0.1 --port 6379";
|
|
log_location = "${config.git.root}/dev/logs/valkey.log";
|
|
availability = {
|
|
restart = "always";
|
|
};
|
|
};
|
|
marketing_dev = {
|
|
command = lib.mkForce "exec ${config.git.root}/scripts/dev_process_entry.sh marketing_dev env FORCE_COLOR=1 pnpm --filter fluxer_marketing dev";
|
|
log_location = "${config.git.root}/dev/logs/marketing_dev.log";
|
|
availability = {
|
|
restart = "always";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
packages = with pkgs; [
|
|
nodejs_24
|
|
pnpm
|
|
erlang_28
|
|
rebar3
|
|
valkey
|
|
meilisearch
|
|
ffmpeg
|
|
exiftool
|
|
caddy
|
|
livekit
|
|
mailpit
|
|
go_1_24
|
|
(rust-bin.stable."1.93.0".default.override {
|
|
targets = [ "wasm32-unknown-unknown" ];
|
|
})
|
|
jq
|
|
gettext
|
|
lsof
|
|
iproute2
|
|
python3
|
|
pkg-config
|
|
gcc
|
|
gnumake
|
|
sqlite
|
|
openssl
|
|
curl
|
|
uv
|
|
];
|
|
|
|
tasks."fluxer:bootstrap" = {
|
|
exec = "${config.git.root}/scripts/dev_bootstrap.sh";
|
|
before = [
|
|
"devenv:processes:meilisearch"
|
|
"devenv:processes:fluxer_server"
|
|
"devenv:processes:fluxer_app"
|
|
"devenv:processes:marketing_dev"
|
|
"devenv:processes:css_watch"
|
|
"devenv:processes:fluxer_gateway"
|
|
"devenv:processes:livekit"
|
|
"devenv:processes:mailpit"
|
|
"devenv:processes:valkey"
|
|
"devenv:processes:caddy"
|
|
];
|
|
};
|
|
|
|
tasks."cassandra:mig:create" = {
|
|
exec = ''
|
|
name="$(echo "$DEVENV_TASK_INPUT" | jq -r '.name // empty')"
|
|
if [ -z "$name" ]; then
|
|
echo "Missing --input name" >&2
|
|
exit 1
|
|
fi
|
|
cd "${config.git.root}/fluxer_api"
|
|
pnpm tsx scripts/CassandraMigrate.tsx create "$name"
|
|
'';
|
|
};
|
|
|
|
tasks."cassandra:mig:check" = {
|
|
exec = ''
|
|
cd "${config.git.root}/fluxer_api"
|
|
pnpm tsx scripts/CassandraMigrate.tsx check
|
|
'';
|
|
};
|
|
|
|
tasks."cassandra:mig:status" = {
|
|
exec = ''
|
|
host="$(echo "$DEVENV_TASK_INPUT" | jq -r '.host // "localhost"')"
|
|
user="$(echo "$DEVENV_TASK_INPUT" | jq -r '.user // "cassandra"')"
|
|
pass="$(echo "$DEVENV_TASK_INPUT" | jq -r '.pass // "cassandra"')"
|
|
cd "${config.git.root}/fluxer_api"
|
|
pnpm tsx scripts/CassandraMigrate.tsx --host "$host" --username "$user" --password "$pass" status
|
|
'';
|
|
};
|
|
|
|
tasks."cassandra:mig:up" = {
|
|
exec = ''
|
|
host="$(echo "$DEVENV_TASK_INPUT" | jq -r '.host // "localhost"')"
|
|
user="$(echo "$DEVENV_TASK_INPUT" | jq -r '.user // "cassandra"')"
|
|
pass="$(echo "$DEVENV_TASK_INPUT" | jq -r '.pass // "cassandra"')"
|
|
cd "${config.git.root}/fluxer_api"
|
|
pnpm tsx scripts/CassandraMigrate.tsx --host "$host" --username "$user" --password "$pass" up
|
|
'';
|
|
};
|
|
|
|
tasks."licence:check" = {
|
|
exec = ''
|
|
cd "${config.git.root}/fluxer_api"
|
|
pnpm tsx scripts/LicenseEnforcer.tsx
|
|
'';
|
|
};
|
|
|
|
tasks."ci:py:sync" = {
|
|
exec = ''
|
|
cd "${config.git.root}/scripts/ci"
|
|
uv sync --dev
|
|
'';
|
|
};
|
|
|
|
tasks."ci:py:test" = {
|
|
exec = ''
|
|
cd "${config.git.root}/scripts/ci"
|
|
uv run pytest
|
|
'';
|
|
};
|
|
|
|
processes = {
|
|
fluxer_server.exec = "cd ${config.git.root} && pnpm --filter fluxer_server dev";
|
|
fluxer_app.exec = "cd ${config.git.root} && FORCE_COLOR=1 FLUXER_APP_DEV_PORT=49427 pnpm --filter fluxer_app dev";
|
|
marketing_dev.exec = "cd ${config.git.root} && FORCE_COLOR=1 pnpm --filter fluxer_marketing dev";
|
|
css_watch.exec = "cd ${config.git.root} && ${config.git.root}/scripts/dev_css_watch.sh";
|
|
fluxer_gateway.exec = "cd ${config.git.root} && ${config.git.root}/scripts/dev_gateway.sh";
|
|
meilisearch.exec = ''
|
|
MEILI_NO_ANALYTICS=true exec meilisearch \
|
|
--env development \
|
|
--master-key "$(cat ${config.git.root}/dev/meilisearch_master_key 2>/dev/null || true)" \
|
|
--db-path ${config.git.root}/dev/data/meilisearch \
|
|
--http-addr 127.0.0.1:7700
|
|
'';
|
|
livekit.exec = ''
|
|
exec livekit-server --config ${config.git.root}/dev/livekit.yaml
|
|
'';
|
|
mailpit.exec = ''
|
|
exec mailpit --listen 127.0.0.1:49667 --smtp 127.0.0.1:49621 --webroot /mailpit/
|
|
'';
|
|
valkey.exec = "exec valkey-server --bind 127.0.0.1 --port 6379";
|
|
caddy.exec = ''
|
|
exec caddy run --config ${config.git.root}/dev/Caddyfile.dev --adapter caddyfile
|
|
'';
|
|
};
|
|
}
|