1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8let
9 cfg = config.programs.npm;
10in
11
12{
13 ###### interface
14
15 options = {
16 programs.npm = {
17 enable = lib.mkEnableOption "{command}`npm` global config";
18
19 package = lib.mkPackageOption pkgs [ "nodePackages" "npm" ] {
20 example = "nodePackages_13_x.npm";
21 };
22
23 npmrc = lib.mkOption {
24 type = lib.types.lines;
25 description = ''
26 The system-wide npm configuration.
27 See <https://docs.npmjs.com/misc/config>.
28 '';
29 default = ''
30 prefix = ''${HOME}/.npm
31 '';
32 example = ''
33 prefix = ''${HOME}/.npm
34 https-proxy=proxy.example.com
35 init-license=MIT
36 init-author-url=https://www.npmjs.com/
37 color=true
38 '';
39 };
40 };
41 };
42
43 ###### implementation
44
45 config = lib.mkIf cfg.enable {
46 environment.etc.npmrc.text = cfg.npmrc;
47
48 environment.variables.NPM_CONFIG_GLOBALCONFIG = "/etc/npmrc";
49
50 environment.systemPackages = [ cfg.package ];
51 };
52
53}