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