diff --git a/modules/dev/home.nix b/modules/dev/home.nix --- a/modules/dev/home.nix +++ b/modules/dev/home.nix @@ -6,7 +6,6 @@ vcs.enable = lib.mkEnableOption "version control tools"; tools.enable = lib.mkEnableOption "dev utilities"; # opencode.* options are defined in ../opencode/home.nix - # omp.* options are defined in ../omp/home.nix }; config = { @@ -16,8 +15,6 @@ dev.tools.enable = lib.mkIf config.dev.enable true; # dev.opencode.enable is declared in ../opencode/home.nix dev.opencode.enable = lib.mkIf config.dev.enable true; - # dev.omp.enable is declared in ../omp/home.nix - dev.omp.enable = lib.mkIf config.dev.enable true; }; imports = [ @@ -26,6 +23,5 @@ ./vcs ./tools ../opencode/home.nix - ../omp/home.nix ]; } diff --git a/modules/dev/options.nix b/modules/dev/options.nix --- a/modules/dev/options.nix +++ b/modules/dev/options.nix @@ -14,7 +14,6 @@ { options.dev = sharedOptions // { opencode.enable = mkEnableOption "OpenCode"; - omp.enable = mkEnableOption "omp (oh-my-pi) coding agent"; }; config = { @@ -23,6 +22,5 @@ dev.vcs.enable = mkIf cfg.enable true; dev.tools.enable = mkIf cfg.enable true; dev.opencode.enable = mkIf cfg.enable true; - dev.omp.enable = mkIf cfg.enable true; }; } diff --git a/modules/home/common.nix b/modules/home/common.nix --- a/modules/home/common.nix +++ b/modules/home/common.nix @@ -26,5 +26,4 @@ sops.age.sshKeyPaths = [ "/home/kar/.ssh/id_ed25519" ]; dev.opencode.sops.enable = true; - dev.omp.sops.enable = true; } diff --git a/modules/omp/default.nix b/modules/omp/default.nix deleted file mode 100644 --- a/modules/omp/default.nix +++ /dev/null @@ -1,103 +0,0 @@ -# omp (oh-my-pi) home-manager module. -# -# Mirrors the shape of ../opencode/default.nix: wrap the llm-agents-built -# binary, prefix the same LSP set on PATH, and source sops-decrypted secrets -# for MCP auth. User-level MCP servers live at ~/.omp/agent/mcp.json -# (per https://omp.sh/docs/mcp-config), which is what omp reads when launched -# with a default profile. -{ - config, - inputs', - lib, - pkgs, - self', - ... -}: -let - cfg = config.dev.omp; - - # Path to the sops-decrypted env file, or /dev/null if not configured. - # The wrapper uses `[ -f ... ]` to skip if missing, so omp always starts - # even on machines where sops can't decrypt. - ompEnvFile = if (config.sops.secrets ? "opencode/env") then config.sops.secrets."opencode/env".path else "/dev/null"; - - # Same LSP set as the opencode wrapper, so the two agents are equivalent - # on the code-intelligence side. - lspBinPath = lib.makeBinPath [ - self'.packages.golangci-lint-langserver - pkgs.nixd - pkgs.marksman - pkgs.typescript-language-server - pkgs.vscode-langservers-extracted - pkgs.yaml-language-server - pkgs.typos-lsp - pkgs.nil - ]; - - ompPkg = pkgs.symlinkJoin { - name = "omp-wrapped"; - paths = [ inputs'.llm-agents.packages.omp ]; - - nativeBuildInputs = [ pkgs.makeWrapper ]; - - postBuild = '' - wrapProgram $out/bin/omp \ - --run 'if [ -f "${ompEnvFile}" ]; then set -a; . "${ompEnvFile}"; set +a; fi' \ - --set PI_SKIP_VERSION_CHECK 1 \ - --set SHELL "${lib.getExe pkgs.bash}" \ - --prefix PATH : "${lspBinPath}" - ''; - }; - - mcpJson = pkgs.writeText "omp-mcp.json" ( - builtins.toJSON { - "$schema" = "https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/coding-agent/src/config/mcp-schema.json"; - mcpServers = lib.optionalAttrs cfg.enableMcp ( - { - # See: https://omp.sh/docs/mcp-config (Auth fields, definition-only) - github = { - type = "http"; - url = "https://api.githubcopilot.com/mcp/"; - }; - linear = { - type = "http"; - url = "https://mcp.linear.app/mcp"; - }; - } - // lib.optionalAttrs cfg.sops.enable { - sentry = { - type = "http"; - url = "\${SENTRY_MCP_URL}"; - }; - } - ); - } - ); - - configYaml = pkgs.writeText "omp-config.yml" ( - builtins.toJSON { - symbolPreset = "nerd"; - theme.dark = "dark-catppuccin"; - setupVersion = 1; - modelRoles = { - default = "opencode-go/minimax-m3"; - smol = "opencode-go/deepseek-v4-flash"; - tiny = "opencode-go/deepseek-v4-flash"; - }; - providers.webSearch = "exa"; - } - ); -in -{ - config = lib.mkIf cfg.enable { - home = { - packages = [ ompPkg ]; - file = { - ".omp/agent/config.yml" = { - source = configYaml; - }; - ".omp/agent/mcp.json" = lib.mkIf cfg.enableMcp { source = mcpJson; }; - }; - }; - }; -} diff --git a/modules/omp/home.nix b/modules/omp/home.nix deleted file mode 100644 --- a/modules/omp/home.nix +++ /dev/null @@ -1,25 +0,0 @@ -# Home-manager options for the omp (oh-my-pi) coding agent. -# -# `omp` is the binary packaged by `llm-agents` as `packages.omp`: -# https://github.com/can1357/oh-my-pi -{ lib, ... }: { - options.dev.omp = { - enable = lib.mkEnableOption "omp (oh-my-pi) coding agent"; - enableMcp = lib.mkOption { - type = lib.types.bool; - default = true; - description = "MCP server integrations for omp"; - }; - sops.enable = lib.mkOption { - type = lib.types.bool; - default = false; - description = '' - Use sops-backed secrets for omp MCP servers. Disable on machines that - don't have a registered SSH key in .sops.yaml — the wrapper will still - let omp start, just without the secret-needing MCPs. - ''; - }; - }; - - imports = [ ./default.nix ]; -} diff --git a/modules/opencode/default.nix b/modules/opencode/default.nix --- a/modules/opencode/default.nix +++ b/modules/opencode/default.nix @@ -29,6 +29,7 @@ --set OPENCODE_DISABLE_LSP_DOWNLOAD true \ --set OPENCODE_DISABLE_AUTOUPDATE true \ --set OPENCODE_EXPERIMENTAL_MARKDOWN true \ + --set OPENCODE_ENABLE_EXA true \ --set SHELL "${lib.getExe pkgs.bash}" \ --prefix PATH : "${ lib.makeBinPath [