diff --git a/modules/config/i18n.nix b/modules/config/i18n.nix index c7a6f1c24d83..744eaee66676 100644 --- a/modules/config/i18n.nix +++ b/modules/config/i18n.nix @@ -16,6 +16,18 @@ let "; }; + supportedLocales = mkOption { + default = ["all"]; + example = ["en_US.UTF-8/UTF-8" "nl_NL.UTF-8/UTF-8" "nl_NL/ISO-8859-1"]; + description = '' + List of locales that the system should support. The value + "all" means that all locales supported by + Glibc will be installed. A full list of supported locales + can be found at . + ''; + }; + consoleFont = mkOption { default = "lat9w-16"; example = "LatArCyrHeb-16"; @@ -39,8 +51,23 @@ in ###### implementation +let + + glibcLocales = pkgs.glibcLocales.override { + allLocales = pkgs.lib.any (x: x == "all") config.i18n.supportedLocales; + locales = config.i18n.supportedLocales; + }; + +in + { - require = [ - options - ]; + require = options; + + environment.systemPackages = [glibcLocales]; + + environment.shellInit = + '' + export LANG=${config.i18n.defaultLocale} + export LOCALE_ARCHIVE=/var/run/current-system/sw/lib/locale/locale-archive + ''; } diff --git a/modules/config/system-path.nix b/modules/config/system-path.nix index 62fbde95f7f1..804b9419a459 100644 --- a/modules/config/system-path.nix +++ b/modules/config/system-path.nix @@ -21,7 +21,6 @@ let pkgs.e2fsprogs pkgs.findutils pkgs.glibc # for ldd, getent - pkgs.glibcLocales pkgs.gnugrep pkgs.gnused pkgs.gnutar diff --git a/modules/installer/cd-dvd/installation-cd.nix b/modules/installer/cd-dvd/installation-cd.nix index 24c01dcfe4b6..e5181aebda69 100644 --- a/modules/installer/cd-dvd/installation-cd.nix +++ b/modules/installer/cd-dvd/installation-cd.nix @@ -18,6 +18,10 @@ # Disable some other stuff we don't need. security.sudo.enable = false; + # Include only the en_US locale. This saves 75 MiB or so compared to + # the full glibcLocales package. + i18n.supportedLocales = ["en_US.UTF-8/UTF-8" "en_US/ISO-8859-1"]; + # Include some utilities that are useful for installing or repairing # the system. environment.systemPackages = @@ -77,4 +81,20 @@ # nixos-install will do a pull from this channel to speed up the # installation. installer.nixpkgsURL = http://nixos.org/releases/nixpkgs/channels/nixpkgs-unstable; + + # Provide the NixOS/Nixpkgs sources in /etc/nixos. This is required + # for nixos-install. + boot.postBootCommands = + '' + export PATH=${pkgs.gnutar}/bin:${pkgs.bzip2}/bin:$PATH + + mkdir -p /mnt + + echo "unpacking the NixOS/Nixpkgs sources..." + mkdir -p /etc/nixos/nixos + tar xjf /install/nixos.tar.bz2 -C /etc/nixos/nixos + mkdir -p /etc/nixos/nixpkgs + tar xjf /install/nixpkgs.tar.bz2 -C /etc/nixos/nixpkgs + chown -R root.root /etc/nixos + ''; } diff --git a/modules/programs/bash/bash.nix b/modules/programs/bash/bash.nix index 205cadea7f34..f7ac48ccb28e 100644 --- a/modules/programs/bash/bash.nix +++ b/modules/programs/bash/bash.nix @@ -33,7 +33,6 @@ in systemPath = config.system.path; wrapperDir = config.security.wrapperDir; modulesTree = config.system.modulesTree; - defaultLocale = config.i18n.defaultLocale; shellInit = config.environment.shellInit; }; target = "bashrc"; diff --git a/modules/programs/bash/bashrc.sh b/modules/programs/bash/bashrc.sh index d18cb010b507..92ca71100eef 100644 --- a/modules/programs/bash/bashrc.sh +++ b/modules/programs/bash/bashrc.sh @@ -5,11 +5,8 @@ export MODULE_DIR=@modulesTree@/lib/modules export NIXPKGS_CONFIG=/nix/etc/config.nix export NIXPKGS_ALL=/etc/nixos/nixpkgs export PAGER="less -R" -export LANG=@defaultLocale@ export EDITOR=nano -export INFOPATH=/var/run/current-system/sw/info:/var/run/current-system/sw/share/info export LOCATE_PATH=/var/cache/locatedb -export LOCALE_ARCHIVE=/var/run/current-system/sw/lib/locale/locale-archive @shellInit@ diff --git a/modules/programs/info.nix b/modules/programs/info.nix index e3b8025f933a..a12aef6a7d02 100644 --- a/modules/programs/info.nix +++ b/modules/programs/info.nix @@ -33,4 +33,9 @@ in { environment.systemPackages = [infoWrapper]; + + environment.shellInit = + '' + export INFOPATH=/var/run/current-system/sw/info:/var/run/current-system/sw/share/info + ''; }