1{
2 pkgs,
3 lib,
4 makeWrapper,
5 nodejs ? pkgs.nodejs_20,
6}:
7
8let
9 fetchElmDeps = pkgs.callPackage ./lib/fetchElmDeps.nix { };
10
11 # Haskell packages that require ghc 9.8
12 hs98Pkgs = import ./packages/ghc9_8 { inherit pkgs lib; };
13
14 # Haskell packages that require ghc 9.6
15 hs96Pkgs = import ./packages/ghc9_6 {
16 inherit
17 pkgs
18 lib
19 makeWrapper
20 nodejs
21 fetchElmDeps
22 ;
23 };
24
25 # Patched, originally npm-downloaded, packages
26 patchedNodePkgs = import ./packages/node {
27 inherit
28 pkgs
29 lib
30 nodejs
31 makeWrapper
32 ;
33 };
34
35 assembleScope =
36 self: basics:
37 (hs98Pkgs self).elmPkgs // (hs96Pkgs self).elmPkgs // (patchedNodePkgs self) // basics;
38in
39lib.makeScope pkgs.newScope (
40 self:
41 assembleScope self (
42 with self;
43 {
44 inherit fetchElmDeps nodejs;
45
46 /*
47 Node/NPM based dependencies can be upgraded using script `packages/generate-node-packages.sh`.
48
49 * Packages which depend on npm installation of elm can be patched using
50 `patchNpmElm` function defined in `packages/lib.nix`.
51 */
52 elmLib = import ./lib {
53 inherit lib;
54 inherit (pkgs) writeScriptBin stdenv;
55 inherit (self) elm;
56 };
57
58 elm-json = callPackage ./packages/elm-json { };
59
60 elm-review = callPackage ./packages/elm-review { };
61
62 elm-test-rs = callPackage ./packages/elm-test-rs { };
63
64 elm-test = callPackage ./packages/elm-test { };
65
66 lamdera = callPackage ./packages/lamdera { };
67 }
68 )
69)