aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/maintainers/scripts/build.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/maintainers/scripts/build.nix')
-rw-r--r--nixpkgs/maintainers/scripts/build.nix43
1 files changed, 43 insertions, 0 deletions
diff --git a/nixpkgs/maintainers/scripts/build.nix b/nixpkgs/maintainers/scripts/build.nix
new file mode 100644
index 00000000000..c70993cf138
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/build.nix
@@ -0,0 +1,43 @@
+{ maintainer }:
+
+# based on update.nix
+# nix-build build.nix --argstr maintainer <yourname>
+
+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