{ lib, ... }: with lib; { config.outputKinds = [ ( { hasSystem, ... }: optionalAttrs hasSystem { options = { apps = mkOption { type = with types; attrsOf (submodule { options = { type = mkOption { type = enum [ "app" ]; default = "app"; }; program = mkOption { type = path; description = "An executable to run"; }; meta = mkOption { type = attrs; description = "App metadata"; default = { }; }; }; }); description = "Executed by `nix run .#`"; }; }; outputs = { config, system, ... }: { apps.${system} = config.apps; }; } ) ]; }