{ config, lib, pkgs, ... }: let cfg = config.services.mcp-gateway; package = pkgs.mcp-gateway; in { options.services.mcp-gateway = { enable = lib.mkEnableOption "MCP Gateway service"; package = lib.mkOption { type = lib.types.package; default = package; description = "The mcp-gateway package to use."; }; configFile = lib.mkOption { type = lib.types.path; default = "/etc/mcp-gateway/gateway.yaml"; description = "Path to the mcp-gateway configuration file."; }; settings = lib.mkOption { type = with lib.types; attrsOf (attrsOf anything); default = {}; description = "Configuration options for the systemd service."; }; }; config = lib.mkIf cfg.enable { systemd.services.mcp-gateway = { description = "MCP Gateway"; wantedBy = [ "multi-user.target" ]; wants = [ "network-online.target" ]; after = [ "network-online.target" ]; serviceConfig = { Type = "simple"; ExecStart = "${cfg.package}/bin/mcp-gateway --config ${cfg.configFile} serve"; Restart = "on-failure"; RestartSec = 5; } // cfg.settings; }; }; }