From 9e9338d13611601f2349d2deff2dc55a2c695e5c Mon Sep 17 00:00:00 2001 From: sora-ext Date: Mon, 11 May 2026 17:48:54 +0200 Subject: [PATCH] Add modules/server/containers/apps/ethercalc.nix --- modules/server/containers/apps/ethercalc.nix | 56 ++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 modules/server/containers/apps/ethercalc.nix diff --git a/modules/server/containers/apps/ethercalc.nix b/modules/server/containers/apps/ethercalc.nix new file mode 100644 index 0000000..dfb3f4a --- /dev/null +++ b/modules/server/containers/apps/ethercalc.nix @@ -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" + ''; + }; + +}