about summary refs log tree commit diff
path: root/third_party/nixpkgs/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/nixpkgs/default.nix')
-rw-r--r--third_party/nixpkgs/default.nix81
1 files changed, 39 insertions, 42 deletions
diff --git a/third_party/nixpkgs/default.nix b/third_party/nixpkgs/default.nix
index 5afed93e4c..b79a963e5c 100644
--- a/third_party/nixpkgs/default.nix
+++ b/third_party/nixpkgs/default.nix
@@ -1,28 +1,41 @@
 # This file imports the pinned nixpkgs sets and applies relevant
 # modifications, such as our overlays.
 #
+# The actual source pinning happens via niv in //third_party/sources
+#
 # Note that the attribute exposed by this (third_party.nixpkgs) is
 # "special" in that the fixpoint used as readTree's config parameter
 # in //default.nix passes this attribute as the `pkgs` argument to all
 # readTree derivations.
 
-{ depot ? {}, externalArgs ? {}, depotOverlays ? true, ... }:
+{ depot ? { }
+, externalArgs ? { }
+, depotOverlays ? true
+, localSystem ? externalArgs.localSystem or builtins.currentSystem
+, crossSystem ? externalArgs.crossSystem or localSystem
+  # additional overlays to be applied.
+  # Useful when calling this file in a view exported from depot.
+, additionalOverlays ? [ ]
+, ...
+}:
 
 let
-  # This provides the sources of nixpkgs. We track both
-  # nixos-unstable, and the current stable channel of the latest NixOS
-  # release.
-
-  # Tracking nixos-unstable as of 2022-01-27.
-  unstableHashes = {
-    commit = "945ec499041db73043f745fad3b2a3a01e826081";
-    sha256 = "1ixv310sjw0r5vda4yfwp3snyha2i9h7aqygd43cyvdk2qsjk8pq";
-  };
+  # Arguments passed to both the stable nixpkgs and the main, unstable one.
+  # Includes everything but overlays which are only passed to unstable nixpkgs.
+  commonNixpkgsArgs = {
+    # allow users to inject their config into builds (e.g. to test CA derivations)
+    config =
+      (if externalArgs ? nixpkgsConfig then externalArgs.nixpkgsConfig else { })
+      // {
+        allowUnfree = true;
+        allowUnfreeRedistributable = true;
+        allowBroken = true;
+        # Forbids our meta.ci attribute
+        # https://github.com/NixOS/nixpkgs/pull/191171#issuecomment-1260650771
+        checkMeta = false;
+      };
 
-  # Tracking nixos-21.11 as of 2022-01-26.
-  stableHashes = {
-    commit = "b3d86c56c786ad9530f1400adbd4dfac3c42877b";
-    sha256 = "09nslcjdgwwb6j9alxrsnq1wvhifq1nmzl2w02l305j0wsmgdial";
+    inherit localSystem crossSystem;
   };
 
   # import the nixos-unstable package set, or optionally use the
@@ -30,50 +43,34 @@ let
   # argument. This is intended for use-cases where the depot is
   # bisected against nixpkgs to find the root cause of an issue in a
   # channel bump.
-  nixpkgsSrc = externalArgs.nixpkgsBisectPath or (fetchTarball {
-    url = "https://github.com/NixOS/nixpkgs/archive/${unstableHashes.commit}.tar.gz";
-    sha256 = unstableHashes.sha256;
-  });
-
-  stableNixpkgsSrc = fetchTarball {
-    url = "https://github.com/NixOS/nixpkgs/archive/${stableHashes.commit}.tar.gz";
-    sha256 = stableHashes.sha256;
-  };
+  nixpkgsSrc = externalArgs.nixpkgsBisectPath or depot.third_party.sources.nixpkgs;
 
   # Stable package set is imported, but not exposed, to overlay
   # required packages into the unstable set.
-  stableNixpkgs = import stableNixpkgsSrc {};
+  stableNixpkgs = import depot.third_party.sources.nixpkgs-stable commonNixpkgsArgs;
 
   # Overlay for packages that should come from the stable channel
   # instead (e.g. because something is broken in unstable).
-  stableOverlay = self: super: {
-    # Nothing picked from stable presently.
-  };
+  # Use `stableNixpkgs` from above.
+  stableOverlay = _unstableSelf: unstableSuper: { };
 
   # Overlay to expose the nixpkgs commits we are using to other Nix code.
   commitsOverlay = _: _: {
     nixpkgsCommits = {
-      unstable = unstableHashes.commit;
-      stable = stableHashes.commit;
+      unstable = depot.third_party.sources.nixpkgs.rev;
+      stable = depot.third_party.sources.nixpkgs-stable.rev;
     };
   };
-
-in import nixpkgsSrc {
-  # allow users to inject their config into builds (e.g. to test CA derivations)
-  config =
-    (if externalArgs ? nixpkgsConfig then externalArgs.nixpkgsConfig else { })
-    // {
-      allowUnfree = true;
-      allowBroken = true;
-    };
-
+in
+import nixpkgsSrc (commonNixpkgsArgs // {
   overlays = [
     commitsOverlay
     stableOverlay
   ] ++ (if depotOverlays then [
     depot.third_party.overlays.haskell
-    depot.third_party.overlays.emacs
     depot.third_party.overlays.tvl
     depot.third_party.overlays.ecl-static
-  ] else []);
-}
+    depot.third_party.overlays.dhall
+    (import depot.third_party.sources.rust-overlay)
+  ] else [ ] ++ additionalOverlays);
+})