{ description = "Personal agent skills, packaged through Nix."; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = { self, nixpkgs, flake-utils }: let mkSkill = import ./lib/mk-skill.nix; discoverSkills = import ./lib/discover.nix nixpkgs.lib; discoveredSkills = discoverSkills ./skills; skillPackages = pkgs: nixpkgs.lib.listToAttrs ( map (skill: { inherit (skill) name; value = mkSkill { inherit pkgs; inherit (skill) name src; }; }) discoveredSkills ); in { lib = { inherit mkSkill; }; } // # An explicit system list rather than `eachDefaultSystem`. # That default set includes x86_64-darwin, which current nixpkgs no longer # evaluates (its `legacyPackages` throws). flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ] ( system: let pkgs = nixpkgs.legacyPackages.${system}; in { # No `default`: a catalog has no single default skill. packages = skillPackages pkgs; # Each discovered skill is folded in as its own check, so # `nix flake check` builds every skill and fails on a malformed one. checks = (skillPackages pkgs) // { skill-build = import ./checks/skill-build.nix { inherit pkgs mkSkill discoverSkills; }; }; } ); }