{ lib, config, pkgs, inputs, ... }: let inherit (lib) mkIf; inherit (lib.metacfg) mkBoolOpt; cfg = config.metacfg.cli-apps.opencode; obsidianSkills = lib.mapAttrs' ( name: _: lib.nameValuePair ".agents/skills/${name}" { source = "${inputs.obsidian-skills}/skills/${name}"; recursive = true; } ) ( lib.filterAttrs (_: type: type == "directory") (builtins.readDir "${inputs.obsidian-skills}/skills") ); in { options.metacfg.cli-apps.opencode = { enable = mkBoolOpt true "Enable opencode config."; }; config = mkIf cfg.enable { # Formatters referenced by config/opencode/config.json; keep them on PATH for opencode. home.packages = [ pkgs.nixfmt-rfc-style pkgs.nodePackages.prettier pkgs.shfmt pkgs.ruff pkgs.taplo pkgs.stylua ]; xdg.configFile."opencode" = { source = ../../../../config/opencode; recursive = true; }; home.file = { ".agents/skills" = { source = ../../../../config/agents/skills; recursive = true; }; } // obsidianSkills; }; }