refactor progress
This commit is contained in:
233
devenv.nix
Normal file
233
devenv.nix
Normal file
@@ -0,0 +1,233 @@
|
||||
{ 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
|
||||
'';
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user