about summary refs log tree commit diff
path: root/nixpkgs-overlays/nixpkgs-mozilla/pinned.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs-overlays/nixpkgs-mozilla/pinned.nix')
-rw-r--r--nixpkgs-overlays/nixpkgs-mozilla/pinned.nix36
1 files changed, 36 insertions, 0 deletions
diff --git a/nixpkgs-overlays/nixpkgs-mozilla/pinned.nix b/nixpkgs-overlays/nixpkgs-mozilla/pinned.nix
new file mode 100644
index 000000000000..1499d40ea7c6
--- /dev/null
+++ b/nixpkgs-overlays/nixpkgs-mozilla/pinned.nix
@@ -0,0 +1,36 @@
+# This script extends nixpkgs with mozilla packages.
+#
+# First it imports the <nixpkgs> in the environment and depends on it
+# providing fetchFromGitHub and lib.importJSON.
+#
+# After that it loads a pinned release of nixos-unstable and uses that as the
+# base for the rest of packaging. One can pass it's own pkgsPath attribute if
+# desired, probably in the context of hydra.
+
+{ pkgsPath ? null
+, overlays ? []
+, system ? null
+, geckoSrc ? null
+}:
+
+# Pin a specific version of Nixpkgs.
+let
+  _pkgs = import <nixpkgs> {};
+  _pkgsPath =
+    if pkgsPath != null then pkgsPath
+    else _pkgs.fetchFromGitHub (_pkgs.lib.importJSON ./pkgs/nixpkgs.json);
+  nixpkgs = import _pkgsPath ({
+    overlays = import ./default.nix ++ overlays;
+  } // (if system != null then { inherit system; } else {}));
+in
+  nixpkgs // {
+    # Do not add a name attribute attribute in an overlay !!! As this will cause
+    # tons of recompilations.
+    name = "nixpkgs";
+    updateScript = nixpkgs.lib.updateFromGitHub {
+      owner = "NixOS";
+      repo = "nixpkgs-channels";
+      branch = "nixos-unstable-small";
+      path = "pkgs/nixpkgs.json";
+    };
+  }