diff --git a/nixos/modules/config/i18n.nix b/nixos/modules/config/i18n.nix index aa8f06d1c7f2..1ac6a79722cc 100644 --- a/nixos/modules/config/i18n.nix +++ b/nixos/modules/config/i18n.nix @@ -31,16 +31,23 @@ in i18n = { glibcLocales = lib.mkOption { - type = lib.types.path; - default = pkgs.glibcLocales.override { - allLocales = lib.elem "all" config.i18n.supportedLocales; - locales = config.i18n.supportedLocales; - }; + type = lib.types.nullOr lib.types.path; + default = + if pkgs.glibcLocales != null then + pkgs.glibcLocales.override { + allLocales = lib.elem "all" config.i18n.supportedLocales; + locales = config.i18n.supportedLocales; + } + else + null; defaultText = lib.literalExpression '' - pkgs.glibcLocales.override { - allLocales = lib.elem "all" config.i18n.supportedLocales; - locales = config.i18n.supportedLocales; - } + if pkgs.glibcLocales != null then + pkgs.glibcLocales.override { + allLocales = lib.elem "all" config.i18n.supportedLocales; + locales = config.i18n.supportedLocales; + } + else + null ''; example = lib.literalExpression "pkgs.glibcLocales"; description = '' @@ -171,7 +178,9 @@ in environment.systemPackages = # We increase the priority a little, so that plain glibc in systemPackages can't win. - lib.optional (config.i18n.supportedLocales != [ ]) (lib.setPrio (-1) config.i18n.glibcLocales); + lib.optional (config.i18n.glibcLocales != null && config.i18n.supportedLocales != [ ]) ( + lib.setPrio (-1) config.i18n.glibcLocales + ); environment.sessionVariables = { LANG = config.i18n.defaultLocale; @@ -179,9 +188,11 @@ in } // config.i18n.extraLocaleSettings; - systemd.globalEnvironment = lib.mkIf (config.i18n.supportedLocales != [ ]) { - LOCALE_ARCHIVE = "${config.i18n.glibcLocales}/lib/locale/locale-archive"; - }; + systemd.globalEnvironment = + lib.mkIf (config.i18n.glibcLocales != null && config.i18n.supportedLocales != [ ]) + { + LOCALE_ARCHIVE = "${config.i18n.glibcLocales}/lib/locale/locale-archive"; + }; # ‘/etc/locale.conf’ is used by systemd. environment.etc."locale.conf".source = pkgs.writeText "locale.conf" '' diff --git a/nixos/modules/security/apparmor/includes.nix b/nixos/modules/security/apparmor/includes.nix index 92f5aa8d66b2..ae5a048788b3 100644 --- a/nixos/modules/security/apparmor/includes.nix +++ b/nixos/modules/security/apparmor/includes.nix @@ -95,7 +95,9 @@ in include "${pkgs.apparmor-profiles}/etc/apparmor.d/abstractions/base" ${pkgs.stdenv.cc.libc}/share/locale/** r, ${pkgs.stdenv.cc.libc}/share/locale.alias r, - ${config.i18n.glibcLocales}/lib/locale/locale-archive r, + ${lib.optionalString ( + config.i18n.glibcLocales != null + ) "${config.i18n.glibcLocales}/lib/locale/locale-archive r,"} ${etcRule "localtime"} ${pkgs.tzdata}/share/zoneinfo/** r, ${pkgs.stdenv.cc.libc}/share/i18n/** r, diff --git a/nixos/modules/services/mail/public-inbox.nix b/nixos/modules/services/mail/public-inbox.nix index 353db2e2207c..1ae773c35bcd 100644 --- a/nixos/modules/services/mail/public-inbox.nix +++ b/nixos/modules/services/mail/public-inbox.nix @@ -77,6 +77,8 @@ let BindReadOnlyPaths = [ "/etc" "/run/systemd" + ] + ++ lib.optionals (config.i18n.glibcLocales != null) [ "${config.i18n.glibcLocales}" ] ++ mapAttrsToList (name: inbox: inbox.description) cfg.inboxes diff --git a/nixos/modules/services/networking/xrdp.nix b/nixos/modules/services/networking/xrdp.nix index dd322f468f3b..a1e9f9c23d80 100644 --- a/nixos/modules/services/networking/xrdp.nix +++ b/nixos/modules/services/networking/xrdp.nix @@ -39,8 +39,12 @@ let # Ensure that clipboard works for non-ASCII characters sed -i -e '/.*SessionVariables.*/ a\ - LANG=${config.i18n.defaultLocale}\ - LOCALE_ARCHIVE=${config.i18n.glibcLocales}/lib/locale/locale-archive + LANG=${config.i18n.defaultLocale}${ + lib.optionalString (config.i18n.glibcLocales != null) '' + \ + LOCALE_ARCHIVE=${config.i18n.glibcLocales}/lib/locale/locale-archive + '' + } ' $out/sesman.ini ${cfg.extraConfDirCommands} diff --git a/nixos/modules/system/activation/switchable-system.nix b/nixos/modules/system/activation/switchable-system.nix index d34223bc96a1..7919cc5804aa 100644 --- a/nixos/modules/system/activation/switchable-system.nix +++ b/nixos/modules/system/activation/switchable-system.nix @@ -58,7 +58,11 @@ --set DISTRO_ID ${lib.escapeShellArg config.system.nixos.distroId} \ --set INSTALL_BOOTLOADER ${lib.escapeShellArg config.system.build.installBootLoader} \ --set PRE_SWITCH_CHECK ${lib.escapeShellArg config.system.preSwitchChecksScript} \ - --set LOCALE_ARCHIVE ${config.i18n.glibcLocales}/lib/locale/locale-archive \ + ${ + lib.optionalString ( + config.i18n.glibcLocales != null + ) "--set LOCALE_ARCHIVE ${config.i18n.glibcLocales}/lib/locale/locale-archive" + } \ --set SYSTEMD ${config.systemd.package} ) ''; diff --git a/nixos/modules/system/activation/top-level.nix b/nixos/modules/system/activation/top-level.nix index 50a5204b0d70..25969918bb0e 100644 --- a/nixos/modules/system/activation/top-level.nix +++ b/nixos/modules/system/activation/top-level.nix @@ -351,7 +351,6 @@ in # Legacy environment variables. These were used by the activation script, # but some other script might still depend on them, although unlikely. installBootLoader = config.system.build.installBootLoader; - localeArchive = "${config.i18n.glibcLocales}/lib/locale/locale-archive"; distroId = config.system.nixos.distroId; perl = pkgs.perl.withPackages ( p: with p; [ @@ -374,6 +373,9 @@ in # option, as opposed to `system.extraDependencies`. passedChecks = concatStringsSep " " config.system.checks; } + // lib.optionalAttrs (config.i18n.glibcLocales != null) { + localeArchive = "${config.i18n.glibcLocales}/lib/locale/locale-archive"; + } // lib.optionalAttrs (config.system.forbiddenDependenciesRegexes != [ ]) { closureInfo = pkgs.closureInfo { rootPaths = [