on iko/ghcjs-patch-master help sign in
Simplify the way evalPackages works (#1162)
61e89b7Hamish Mackenzie
@@ -27,10 +27,7 @@
27 overlaysOverrideable = import ./overlays;
27 overlaysOverrideable = import ./overlays;
28 };
28 };
29
29
30− # Using the eval-on-build version here as the plan is that
31− # `builtins.currentSystem` will not be supported in flakes.
32− # https://github.com/NixOS/rfcs/pull/49/files#diff-a5a138ca225433534de8d260f225fe31R429
33− overlay = self.overlays.combined-eval-on-build;
30+ overlay = self.overlays.combined;
34 overlays = self.internal.overlaysOverrideable { sourcesOverride = self.internal.sources; };
31 overlays = self.internal.overlaysOverrideable { sourcesOverride = self.internal.sources; };
35
32
36 legacyPackages = let
33 legacyPackages = let
overlays/default.nix+4−7
@@ -19,8 +19,7 @@ let
19 nix-prefetch-git-minimal = import ./nix-prefetch-git-minimal.nix;
19 nix-prefetch-git-minimal = import ./nix-prefetch-git-minimal.nix;
20 gobject-introspection = import ./gobject-introspection.nix;
20 gobject-introspection = import ./gobject-introspection.nix;
21 hix = import ./hix.nix;
21 hix = import ./hix.nix;
22− eval-on-current = import ./eval-on-current.nix;
22+ eval-packages = import ./eval-packages.nix;
23− eval-on-build = import ./eval-on-build.nix;
24 ghcjs = import ./ghcjs.nix;
23 ghcjs = import ./ghcjs.nix;
25 };
24 };
26
25
@@ -54,11 +53,9 @@ let
54 ghcjs
53 ghcjs
55 gobject-introspection
54 gobject-introspection
56 hix
55 hix
56+ eval-packages
57 # Restore nixpkgs haskell and haskellPackages
57 # Restore nixpkgs haskell and haskellPackages
58 (_: prev: { inherit (prev.haskell-nix-prev) haskell haskellPackages; })
58 (_: prev: { inherit (prev.haskell-nix-prev) haskell haskellPackages; })
59 ];
59 ];
60− combined = builtins.foldl' composeExtensions (_: _: { })
60+ combined = builtins.foldl' composeExtensions (_: _: { }) ordered;
61− (ordered ++ [overlays.eval-on-current]);
62− combined-eval-on-build = builtins.foldl' composeExtensions (_: _: { })
63− (ordered ++ [overlays.eval-on-build]);
64−in overlays // { inherit combined combined-eval-on-build; }
61+in overlays // { inherit combined; }
overlays/eval-on-build.nixdeleted−6
@@ -1,6 +0,0 @@
1−final: prev: {
2− # This overlay sets `evalPackages` as just `buildPackages`
3− # See `eval-on-current.nix` for alternative that uses
4− # `builtins.currentSystem`.
5− evalPackages = final.buildPackages;
6−}
overlays/eval-on-current.nixdeleted−8
@@ -1,8 +0,0 @@
1−final: prev: {
2− # This overlay makes `evalPackages` is like `buildPackages`, but on
3− # `builtins.currentSystem`.
4− # See `eval-on-build.nix` for alternative that just uses `buildPackages`.
5− evalPackages = (import final.path {
6− inherit (final.haskell-nix) overlays;
7− }).buildPackages;
8−}
overlays/eval-packages.nixnew file+16
@@ -0,0 +1,16 @@
1+final: prev: {
2+ # This overlay makes `evalPackages` is like `buildPackages`, but on
3+ # `builtins.currentSystem` (when not building a nix flake).
4+ # We do not pass the `config` or `overlays` (not in `final.haskell-nix.overlays`).
5+ # This could cause flake and non flake builds to diverge, although only the
6+ # derivations that use `evalPackages` (these should be eval time only derviations
7+ # used to build nix inputs for IFD, the generated nix should match and so derivations
8+ # that depend on the IFD should match).
9+ evalPackages =
10+ # If we are building a flake there will be no currentSystem attribute
11+ if builtins ? currentSystem
12+ then (import final.path {
13+ inherit (final.haskell-nix) overlays;
14+ }).buildPackages
15+ else final.buildPackages;
16+}