summaryrefslogtreecommitdiffstats
path: root/maintainers/scripts/build.nix
diff options
context:
space:
mode:
authorgnidorah <gnidorah@users.noreply.github.com>2020-05-09 18:22:20 +0300
committerBjørn Forsman <bjorn.forsman@gmail.com>2020-05-09 18:59:04 +0200
commitd0c3e7bedb390d79291f23685355bcaf1fcd152f (patch)
treec383dc5a4bcdd1747ca79c840b4419b989c2aff8 /maintainers/scripts/build.nix
parentd4c2f1ab5d1fe5f39d8334547bd7e5eb7e68e568 (diff)
maintainers/scripts/build.nix: script to build all maintainer packages
Diffstat (limited to 'maintainers/scripts/build.nix')
-rw-r--r--maintainers/scripts/build.nix43
1 files changed, 43 insertions, 0 deletions
diff --git a/maintainers/scripts/build.nix b/maintainers/scripts/build.nix
new file mode 100644
index 000000000000..c70993cf138c
--- /dev/null
+++ b/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