{ config, lib, pkgs, ... }: let cfg = config.services.antigravity2api; workDir = "/home/ashie/git/antigravity2api-nodejs"; in { options.services.antigravity2api = { enable = lib.mkEnableOption "Antigravity2API service"; credentials = { username = lib.mkOption { type = lib.types.str; default = "admin"; description = "Admin username for the dashboard"; }; password = lib.mkOption { type = lib.types.str; default = "password"; description = "Admin password for the dashboard"; }; apiKey = lib.mkOption { type = lib.types.str; default = ""; description = "API Key for client access"; }; glmApiKeyPath = lib.mkOption { type = lib.types.str; default = ""; description = "Path to Z.AI (GLM) API Key file"; }; }; }; config = lib.mkIf cfg.enable { systemd.user.services.antigravity2api = { Unit = { Description = "Antigravity API to OpenAI Proxy"; After = [ "network-online.target" ]; Wants = [ "network-online.target" ]; }; Service = { WorkingDirectory = workDir; ExecStartPre = pkgs.writeShellScript "antigravity2api-init" '' export PATH="${pkgs.coreutils}/bin:${pkgs.iputils}/bin:$PATH" mkdir -p "${workDir}" # Ensure network exists ${pkgs.podman}/bin/podman network create antigravity-net --ignore >/dev/null 2>&1 || true # Wait for connectivity until ping -c1 -W1 8.8.8.8 >/dev/null 2>&1; do sleep 2; done # Generate .env file using a temporary script to capture secret correctly GLM_VAL=$(cat /run/secrets/glm_api_key) cat > "${workDir}/.env" <