Files
home-manager/tests/modules/programs/antigravity-cli/mutable-settings.nix
Austin Horstman 0e11b7bcba antigravity-cli: add opt-in mutable native settings
Keep native settings and MCP configuration writable while applying
declared values. Treat unspecified permission lists as absent in mutable
native mode so activation does not reset undeclared application choices.
Explicit lists, including empty lists, replace saved lists. Keep
immutable and legacy defaults unchanged.
2026-10-06 08:31:40 -05:00

58 lines
2.0 KiB
Nix

{
config,
lib,
...
}:
let
activation = config.home.activation.antigravitySettings;
in
{
programs.antigravity-cli = {
enable = true;
package = null;
mutableSettings = true;
settings = {
colorScheme = "tokyo night";
};
permissions.allow = [ "command(git)" ];
mcpServers.filesystem = {
command = "fs";
args = [ ];
enabled = true;
};
};
assertions = [
{
assertion = lib.hasInfix "display_path=${lib.escapeShellArg "/home/hm-user/.gemini/antigravity-cli/settings.json"}\n" config.home.activation.antigravitySettings.data;
message = "Antigravity settings must merge into the configured destination.";
}
{
assertion = lib.hasInfix "display_path=${lib.escapeShellArg "/home/hm-user/.gemini/config/mcp_config.json"}\n" config.home.activation.antigravitySettings.data;
message = "Antigravity MCP settings must merge into the configured destination.";
}
{
assertion = !(config.home.file ? ".gemini/config/mcp_config.json");
message = "Mutable Antigravity MCP settings must not be owned by home.file.";
}
{
assertion = !(config.home.file ? ".gemini/antigravity-cli/settings.json");
message = "Mutable Antigravity settings must not be owned by home.file.";
}
{
assertion = activation.after == [ "linkGeneration" ];
message = "Antigravity settings must merge after linkGeneration.";
}
];
nmt.script = ''
assertPathNotExists home-files/.gemini/antigravity-cli/settings.json
assertPathNotExists home-files/.gemini/config/mcp_config.json
settings="$(grep -m1 -o '/nix/store/[^ ]*-antigravity-cli-settings.json' "$TESTED/activate")" \
|| fail "Missing antigravity-cli-settings.json input"
assertFileContent "$settings" ${./mutable-input.json}
mcp="$(grep -m1 -o '/nix/store/[^ ]*-antigravity-cli-mcp-config.json' "$TESTED/activate")" \
|| fail "Missing antigravity-cli-mcp-config.json input"
assertFileContent "$mcp" ${./mutable-mcp-input.json}
'';
}