{ inputs, config, ... }: let account = config.repo.account; hmModules = config.flake.modules.homeManager; sharedContext = '' # Global Agent Context Be a concise technical thought partner. Check the premise before executing, optimize for the user's actual outcome, and make important assumptions or tradeoffs visible. ## Machine Environment - This machine is Nix/NixOS-based. Standard Linux assumptions may be wrong: software is usually provided by flakes, dev shells, `devenv`, `direnv`, or the user's NixOS/Home Manager config rather than `apt`, `dnf`, or global installs. - If a repo has `flake.nix`, `devenv.nix`, `shell.nix`, or `.envrc`, prefer entering or invoking its dev environment (`nix develop`, `devenv shell`, or `direnv exec . `). `direnv` may not be loaded automatically inside agent shells. - For NixOS/Home Manager/nixpkgs/packages/options, use the NixOS MCP when available instead of relying on memory. ## User Preferences - The user values precision, minimalism, and conceptual clarity. Challenge weak premises, but explain why. - For larger or ambiguous work, interview or plan before broad implementation. For small concrete requests, proceed with the obvious scoped change. ''; in { flake.modules.nixos.ai = { home-manager.sharedModules = [ hmModules.ai ]; nixpkgs.overlays = [ inputs.llm-agents.overlays.default ]; nix.settings = { extra-substituters = [ "https://cache.numtide.com" ]; extra-trusted-public-keys = [ "niks3.numtide.com-1:DTx8wZduET09hRmMtKdQDxNNthLQETkc/yaX7M4qK0g=" ]; }; }; flake.modules.homeManager.ai = { config, lib, pkgs, ... }: { home.sessionVariables.GEMINI_CONFIG_DIR = "${config.xdg.configHome}/gemini"; programs.mcp = { enable = true; servers.nixos = { command = "${pkgs.uv}/bin/uvx"; args = [ "mcp-nixos" ]; }; }; programs.gemini-cli = { enable = false; package = pkgs.llm-agents.gemini-cli; enableMcpIntegration = true; context.AGENTS = sharedContext; settings = { context = { fileName = [ "AGENTS.md" "GEMINI.md" ]; loadMemoryFromIncludeDirectories = true; }; model.name = "gemini-3.1-pro-preview"; }; }; programs.codex = { enable = true; package = pkgs.llm-agents.codex; enableMcpIntegration = true; context = sharedContext; settings = { model = "gpt-5.5"; model_reasoning_effort = "high"; plan_mode_reasoning_effort = "high"; tui.status_line = [ "model-with-reasoning" "current-dir" "git-branch" "context-remaining" "five-hour-limit" ]; projects.${account.nixosConfigurationPath}.trust_level = "trusted"; projects."${config.homeDirectory}/work/repos/yookr_data_science".trust_level = "trusted"; sandbox_mode = "workspace-write"; personality = "pragmatic"; features.undo = true; mcp_servers.nixos = config.programs.mcp.servers.nixos // { enabled = true; default_tools_approval_mode = "approve"; }; }; }; }; }