diff --git a/maintainers/scripts/build.nix b/maintainers/scripts/build.nix new file mode 100644 index 00000000000..c70993cf138 --- /dev/null +++ b/maintainers/scripts/build.nix @@ -0,0 +1,43 @@ +{ maintainer }: + +# based on update.nix +# nix-build build.nix --argstr maintainer + +let + pkgs = import ./../../default.nix {}; + maintainer_ = pkgs.lib.maintainers.${maintainer}; + packagesWith = cond: return: set: + (pkgs.lib.flatten + (pkgs.lib.mapAttrsToList + (name: pkg: + let + result = builtins.tryEval + ( + if pkgs.lib.isDerivation pkg && cond name pkg + then [ (return name pkg) ] + else if pkg.recurseForDerivations or false || pkg.recurseForRelease or false + then packagesWith cond return pkg + else [ ] + ); + in + if result.success then result.value + else [ ] + ) + set + ) + ); +in +packagesWith + (name: pkg: + ( + if builtins.hasAttr "maintainers" pkg.meta + then ( + if builtins.isList pkg.meta.maintainers + then builtins.elem maintainer_ pkg.meta.maintainers + else maintainer_ == pkg.meta.maintainers + ) + else false + ) + ) + (name: pkg: pkg) + pkgs