{
description = "agent-environments example: one environment with instructions and skills";
inputs = {
# In your own flake: github:<owner>/agent-environments
agent-environments.url = "path:../..";
nixpkgs.follows = "agent-environments/nixpkgs";
};
outputs =
{ agent-environments, nixpkgs, ... }:
let
forAllSystems = nixpkgs.lib.genAttrs [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
inherit (agent-environments.lib) mkEnvironment mkSkill mkSkillModule;
in
{
packages = forAllSystems (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
ripgrep-search = mkSkill {
inherit pkgs;
name = "ripgrep-search";
src = ./skills/ripgrep-search;
runtimeInputs = [ pkgs.ripgrep ];
};
# Depends on ripgrep-search: enabling code-review links both skills.
code-review = mkSkill {
inherit pkgs;
name = "code-review";
src = ./skills/code-review;
skills = [ ripgrep-search ];
};
env = mkEnvironment {
inherit pkgs;
modules = [
(mkSkillModule ripgrep-search)
(mkSkillModule code-review)
{
claude.enable = true;
codex.enable = true;
modules.skills.code-review.enable = true;
instructions.style.text = ''
# Style
- Prefer small, focused commits.
- Explain *why* in commit messages.
'';
claude.settings.includeCoAuthoredBy = false;
codex.settings.approval_policy = "on-request";
launchers = {
claude-basic.agent = "claude";
codex-basic.agent = "codex";
};
}
];
};
in
{
default = env.package;
}
);
};
}