- Remove dead overlays/default.nix (flake defines overlays inline)
- Remove orphaned overlays/mods/{beads,n8n}.nix (never imported)
- Remove docs/packages/notesmd-cli.md (package doesn't exist)
- Extract externalSkills submodule to shared-options.nix (eliminates
~100 lines of duplication across opencode/claude-code/pi modules)
- Fix lib output: use nixpkgs.lib directly instead of instantiating
a full nixpkgs just to get lib
- Add lib unit tests to flake checks
- Update stale comment in coding-rules.nix
76 lines
2.3 KiB
Nix
76 lines
2.3 KiB
Nix
# Shared option definitions for agent modules.
|
|
# Prevents copy-pasting the externalSkills submodule across opencode/claude-code/pi.
|
|
{lib}: let
|
|
inherit (lib) mkOption mkEnableOption types literalExpression;
|
|
in {
|
|
# Common agentsInput option used by all agent modules.
|
|
mkAgentsInputOption = description: mkOption {
|
|
type = types.nullOr types.anything;
|
|
default = null;
|
|
inherit description;
|
|
};
|
|
|
|
# Common modelOverrides option.
|
|
mkModelOverridesOption = mkOption {
|
|
type = types.attrsOf types.str;
|
|
default = {};
|
|
description = ''
|
|
Per-agent model overrides. Maps agent slug to model string.
|
|
Example: { chiron = "anthropic/claude-sonnet-4"; }
|
|
'';
|
|
example = literalExpression ''
|
|
{
|
|
chiron = "anthropic/claude-sonnet-4";
|
|
"chiron-forge" = "anthropic/claude-sonnet-4";
|
|
}
|
|
'';
|
|
};
|
|
|
|
# External skills submodule — used by opencode, claude-code, and pi modules.
|
|
externalSkillsOption = mkOption {
|
|
type = types.listOf (types.submodule {
|
|
options = {
|
|
src = mkOption {
|
|
type = types.anything;
|
|
description = "Flake input pointing to a skills repository root.";
|
|
};
|
|
skillsDir = mkOption {
|
|
type = types.str;
|
|
default = "skills";
|
|
description = ''
|
|
Subdirectory inside src that contains skill folders.
|
|
'';
|
|
};
|
|
selectSkills = mkOption {
|
|
type = types.nullOr (types.listOf types.str);
|
|
default = null;
|
|
description = ''
|
|
List of skill names to cherry-pick from this source.
|
|
null means include every skill found in skillsDir.
|
|
'';
|
|
};
|
|
};
|
|
});
|
|
default = [];
|
|
description = ''
|
|
External skill sources passed to mkOpencodeSkills.
|
|
Each entry maps directly to an element of the externalSkills
|
|
list accepted by the AGENTS flake's lib.mkOpencodeSkills.
|
|
'';
|
|
example = literalExpression ''
|
|
[
|
|
{ src = inputs.skills-anthropic; selectSkills = [ "claude-api" ]; }
|
|
{ src = inputs.basecamp; }
|
|
]
|
|
'';
|
|
};
|
|
|
|
# Helper to map externalSkills from module config to mkOpencodeSkills format.
|
|
mapExternalSkills = cfgEntries:
|
|
map (
|
|
entry:
|
|
{inherit (entry) src skillsDir;}
|
|
// lib.optionalAttrs (entry.selectSkills != null) {inherit (entry) selectSkills;}
|
|
) cfgEntries;
|
|
}
|