nixos: allow supply customized locale package

Overriding ``glibcLocales`` via nixpkgs.overlays not works,
so I added i18n.glibcLocales parameter, defaulted with
old override, using i18n.supportedLocales.

+17 -11
+17 -11
nixos/modules/config/i18n.nix
··· 2 2 3 3 with lib; 4 4 5 - let 6 - 7 - glibcLocales = pkgs.glibcLocales.override { 8 - allLocales = any (x: x == "all") config.i18n.supportedLocales; 9 - locales = config.i18n.supportedLocales; 10 - }; 11 - 12 - in 13 - 14 5 { 15 6 ###### interface 16 7 17 8 options = { 18 9 19 10 i18n = { 11 + glibcLocales = mkOption { 12 + type = types.path; 13 + default = pkgs.glibcLocales.override { 14 + allLocales = any (x: x == "all") config.i18n.supportedLocales; 15 + locales = config.i18n.supportedLocales; 16 + }; 17 + example = literalExample "pkgs.glibcLocales"; 18 + description = '' 19 + Customized pkg.glibcLocales package. 20 + 21 + Changing this option can disable handling of i18n.defaultLocale 22 + and supportedLocale. 23 + ''; 24 + }; 25 + 20 26 defaultLocale = mkOption { 21 27 type = types.str; 22 28 default = "en_US.UTF-8"; ··· 118 124 ''); 119 125 120 126 environment.systemPackages = 121 - optional (config.i18n.supportedLocales != []) glibcLocales; 127 + optional (config.i18n.supportedLocales != []) config.i18n.glibcLocales; 122 128 123 129 environment.sessionVariables = 124 130 { LANG = config.i18n.defaultLocale; ··· 126 132 }; 127 133 128 134 systemd.globalEnvironment = mkIf (config.i18n.supportedLocales != []) { 129 - LOCALE_ARCHIVE = "${glibcLocales}/lib/locale/locale-archive"; 135 + LOCALE_ARCHIVE = "${config.i18n.glibcLocales}/lib/locale/locale-archive"; 130 136 }; 131 137 132 138 # ‘/etc/locale.conf’ is used by systemd.