Add modules/server/containers/apps/ethercalc.nix

This commit is contained in:
2026-05-11 17:48:54 +02:00
committed by soraefir
parent cd19d8ac06
commit 9e9338d136

View File

@@ -0,0 +1,56 @@
{ config, containerCfg, pkgs, lib, builder, name,... }:
let
serverCfg = config.syscfg.server;
ethercalc_exe = pkgs.ethercalc;
settings = pkgs.writeText"settings.json" (builtins.toJSON {
title= "\${TITLE:Ethercalc}";
});
image = pkgs.dockerTools.streamLayeredImage {
name = "ethercalc";
tag = ethercalc_exe.version;
config = {
Entrypoint = [ "${ethercalc_exe}/bin/ethercalc" ];
ExposedPorts = { "8080/tcp" = {}; };
};
};
in {
paths = [];
containers = {
server = builder.mkContainer {
subdomain = containerCfg.subdomain;
imageStream = image;
port = 8080;
ip = containerCfg.ip;
secret = name;
extraEnv = {
TITLE = "Calc";
PORT = "8080";
DB_TYPE = "postgres";
DB_HOST = builder.host;
DB_NAME = "ethercalc_db";
DB_USER = "ethercalc_user";
DB_CHARSET = "utf8mb4";
TRUST_PROXY = "true";
DEFAULT_CALC_TEXT = "";
SKIN_VARIANTS = "super-dark-toolbar light-editor dark-background";
};
overrides = {
cmd = [ "--settings" "/etc/ethercalc/settings.json" "--apikey" "./APIKEY.txt" ];
volumes = [
"${settings}:/etc/ethercalc/settings.json"
];
};
};
};
setup = {
trigger = "server";
script = pkgs.writeShellScript "setup" ''
# Define the command wrapper
EXEC="${pkgs.podman}/bin/podman --events-backend=none exec --env-file ${config.sops.secrets."CUSTOM".path} ethercalc-server sh -c"
$EXEC "echo \"$APIKEY\" > ./APIKEY.txt"
'';
};
}