1{ config, pkgs, lib, nodejs, stdenv }:
2
3let
4 inherit (lib) composeManyExtensions extends makeExtensible mapAttrs;
5
6 nodePackages = final: import ./composition.nix {
7 inherit pkgs nodejs;
8 inherit (stdenv.hostPlatform) system;
9 };
10
11 mainProgramOverrides = final: prev:
12 mapAttrs (pkgName: mainProgram:
13 prev.${pkgName}.override (oldAttrs: {
14 meta = oldAttrs.meta // { inherit mainProgram; };
15 })
16 ) (import ./main-programs.nix);
17
18 aliases = final: prev:
19 lib.optionalAttrs config.allowAliases
20 (import ./aliases.nix pkgs lib final prev);
21
22 extensions = composeManyExtensions [
23 aliases
24 mainProgramOverrides
25 (import ./overrides.nix { inherit pkgs nodejs; })
26 ];
27in
28 makeExtensible (extends extensions nodePackages)