|
1 |
| -{ checkMaterialization ? false # Allows us to easily switch on materialization checking |
2 |
| -, defaultCompilerNixName ? null # Quick way to override the default compiler e.g. "ghc883" |
3 |
| -, system ? builtins.currentSystem |
4 |
| -, sourcesOverride ? {} |
5 |
| -, ... }@args: rec { |
6 |
| - sources = (import ./nix/sources.nix) // sourcesOverride; |
| 1 | +let haskellNix = { |
| 2 | + checkMaterialization ? false, # Allows us to easily switch on materialization checking |
| 3 | + defaultCompilerNixName ? null, # Quick way to override the default compiler e.g. "ghc883" |
| 4 | + system ? builtins.currentSystem, |
| 5 | + sourcesOverride ? {}, |
| 6 | + ... }@args: rec { |
| 7 | + sources = (import ./nix/sources.nix) // sourcesOverride; |
7 | 8 |
|
8 |
| - config = import ./config.nix; |
9 |
| - overlays = [ allOverlays.combined ] ++ ( |
10 |
| - if checkMaterialization == true |
11 |
| - then [( |
12 |
| - final: prev: { |
13 |
| - haskell-nix = prev.haskell-nix // { |
14 |
| - checkMaterialization = true; |
15 |
| - }; |
16 |
| - } |
17 |
| - )] |
18 |
| - else [] |
19 |
| - ) ++ ( |
20 |
| - if defaultCompilerNixName != null |
21 |
| - then [( |
22 |
| - final: prev: { |
23 |
| - haskell-nix = prev.haskell-nix // { |
24 |
| - inherit defaultCompilerNixName; |
25 |
| - }; |
26 |
| - } |
27 |
| - )] |
28 |
| - else [] |
29 |
| - ); |
30 |
| - allOverlays = import ./overlays args; |
31 |
| - nixpkgsArgs = { inherit config overlays system; }; |
32 |
| - pkgs = import sources.nixpkgs-default nixpkgsArgs; |
| 9 | + config = import ./config.nix; |
| 10 | + overlays = [ allOverlays.combined ] ++ ( |
| 11 | + if checkMaterialization == true |
| 12 | + then [( |
| 13 | + final: prev: { |
| 14 | + haskell-nix = prev.haskell-nix // { |
| 15 | + checkMaterialization = true; |
| 16 | + }; |
| 17 | + } |
| 18 | + )] |
| 19 | + else [] |
| 20 | + ) ++ ( |
| 21 | + if defaultCompilerNixName != null |
| 22 | + then [( |
| 23 | + final: prev: { |
| 24 | + haskell-nix = prev.haskell-nix // { |
| 25 | + inherit defaultCompilerNixName; |
| 26 | + }; |
| 27 | + } |
| 28 | + )] |
| 29 | + else [] |
| 30 | + ); |
| 31 | + allOverlays = import ./overlays args; |
| 32 | + nixpkgsArgs = { inherit config overlays system; }; |
| 33 | + pkgs = import sources.nixpkgs-default nixpkgsArgs; |
| 34 | + }; |
| 35 | + |
| 36 | + v1DeprecationMessage = "Version 1 is deprecated: use version 2 (nixpkgs arguments are available as the `nixpkgsArgs` attribute of version 2)"; |
| 37 | + haskellNixV1 = (haskellNix {}).nixpkgsArgs // { |
| 38 | + overlays = builtins.trace v1DeprecationMessage (haskellNix {}).nixpkgsArgs.overlays; |
| 39 | + }; |
| 40 | + haskellNixV2 = haskellNix; |
| 41 | + |
| 42 | +# If no arguments, then you get V1 |
| 43 | +in haskellNixV1 // { |
| 44 | + __functor = _: { |
| 45 | + version ? 2, |
| 46 | + checkMaterialization ? false, # Allows us to easily switch on materialization checking |
| 47 | + defaultCompilerNixName ? null, # Quick way to override the default compiler e.g. "ghc883" |
| 48 | + system ? builtins.currentSystem, |
| 49 | + sourcesOverride ? {}, |
| 50 | + ... }@args: |
| 51 | + if version == 1 |
| 52 | + then haskellNixV1 |
| 53 | + else if version == 2 |
| 54 | + then haskellNixV2 args |
| 55 | + else builtins.throw ("haskell.nix: unknown version: " + (builtins.toString version)); |
33 | 56 | }
|
0 commit comments