at 25.11-pre 1.0 kB view raw
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}