1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# This file imports the pinned nixpkgs set and applies relevant
# modifications, such as our overlays.
#
# The actual source pinning happens in //flake.nix (and //flake.lock),
# which is the single source of truth for the nixpkgs revision. It is
# threaded through //default.nix as `nixpkgsSrc`.
#
# Note that the attribute exposed by this (third_party.nixpkgs) is
# "special": //default.nix passes it as the `pkgs` argument to every
# package in the tree.
{ depot ? { }
, externalArgs ? { }
, depotOverlays ? true
, localSystem ? externalArgs.localSystem or builtins.currentSystem
, crossSystem ? externalArgs.crossSystem or localSystem
, nixpkgsSrc
# additional overlays to be applied.
# Useful when calling this file in a view exported from depot.
, additionalOverlays ? [ ]
, ...
}:
let
# 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;
permittedInsecurePackages = [
# TODO(tazjin): https://github.com/tvlfyi/nix/pull/5
"nix-2.3.18-4f415e6"
];
};
inherit localSystem crossSystem;
};
# The nixpkgs source, or optionally the source (e.g. a path) specified by
# the `nixpkgsBisectPath` argument. The latter 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 nixpkgsSrc;
in
import nixpkgsSrc' (commonNixpkgsArgs // {
overlays = (if depotOverlays then [
depot.third_party.overlays.haskell
] else [ ]) ++ additionalOverlays;
})
|