aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/maintainers/scripts/eval-release.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/maintainers/scripts/eval-release.nix')
-rw-r--r--nixpkgs/maintainers/scripts/eval-release.nix24
1 files changed, 24 insertions, 0 deletions
diff --git a/nixpkgs/maintainers/scripts/eval-release.nix b/nixpkgs/maintainers/scripts/eval-release.nix
new file mode 100644
index 00000000000..bb9572cbc79
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/eval-release.nix
@@ -0,0 +1,24 @@
+# Evaluate `release.nix' like Hydra would. Too bad nix-instantiate
+# can't to do this.
+
+with import ../../lib;
+
+let
+ trace = if builtins.getEnv "VERBOSE" == "1" then builtins.trace else (x: y: y);
+
+ rel = removeAttrs (import ../../pkgs/top-level/release.nix { }) [ "tarball" "unstable" "xbursttools" ];
+
+ # Add the ā€˜recurseForDerivationsā€™ attribute to ensure that
+ # nix-instantiate recurses into nested attribute sets.
+ recurse = path: attrs:
+ if (builtins.tryEval attrs).success then
+ if isDerivation attrs
+ then
+ if (builtins.tryEval attrs.drvPath).success
+ then { inherit (attrs) name drvPath; }
+ else { failed = true; }
+ else { recurseForDerivations = true; } //
+ mapAttrs (n: v: let path' = path ++ [n]; in trace path' (recurse path' v)) attrs
+ else { };
+
+in recurse [] rel