···365365366366## Other Notable Changes {#sec-nixpkgs-release-25.05-notable-changes}
367367368368+- `i18n` module improvements:
369369+ - `i18n.extraLocales` should now be the preferred way to install additional locales.
370370+ - `i18n.supportedLocales` is now considered an implementation detail and will be hidden from the documentation. But the option will still continue to work.
371371+ - `i18n.supportedLocales` will now trigger a warning when it omits any locale set in `i18n.defaultLocale`, `i18n.extraLocales` or `i18n.extraLocaleSettings`.
372372+368373- `titaniumenv`, `titanium`, and `titanium-alloy` have been removed due to lack of maintenance in Nixpkgs []{#sec-nixpkgs-release-25.05-incompatibilities-titanium-removed}.
369374370375- androidenv has been improved:
···11# Minimal {#sec-profile-minimal}
2233This profile defines a small NixOS configuration. It does not contain any
44-graphical stuff. It's a very short file that sets [](#opt-i18n.supportedLocales)
44+graphical stuff. It's a very short file that sets the supported locales
55to only support the user-selected locale, and
66[disables packages' documentation](#opt-documentation.enable).
+39-20
nixos/modules/config/i18n.nix
···44 pkgs,
55 ...
66}:
77+let
88+ aggregatedLocales =
99+ builtins.map
1010+ (l: (lib.replaceStrings [ "utf8" "utf-8" "UTF8" ] [ "UTF-8" "UTF-8" "UTF-8" ] l) + "/UTF-8")
1111+ (
1212+ [ config.i18n.defaultLocale ]
1313+ ++ config.i18n.extraLocales
1414+ ++ (lib.attrValues (lib.filterAttrs (n: v: n != "LANGUAGE") config.i18n.extraLocaleSettings))
1515+ );
1616+in
717{
818 ###### interface
919···4252 '';
4353 };
44545555+ extraLocales = lib.mkOption {
5656+ type = lib.types.listOf lib.types.str;
5757+ default = [ ];
5858+ example = [ "nl_NL.UTF-8" ];
5959+ description = ''
6060+ Additional locales that the system should support, besides the ones
6161+ configured with {option}`i18n.defaultLocale` and
6262+ {option}`i18n.extraLocaleSettings`.
6363+ '';
6464+ };
6565+4566 extraLocaleSettings = lib.mkOption {
4667 type = lib.types.attrsOf lib.types.str;
4768 default = { };
···58795980 supportedLocales = lib.mkOption {
6081 type = lib.types.listOf lib.types.str;
8282+ visible = false;
6183 default = lib.unique (
6262- builtins.map
6363- (l: (lib.replaceStrings [ "utf8" "utf-8" "UTF8" ] [ "UTF-8" "UTF-8" "UTF-8" ] l) + "/UTF-8")
6464- (
6565- [
6666- "C.UTF-8"
6767- "en_US.UTF-8"
6868- config.i18n.defaultLocale
6969- ]
7070- ++ (lib.attrValues (lib.filterAttrs (n: v: n != "LANGUAGE") config.i18n.extraLocaleSettings))
7171- )
8484+ [
8585+ "C.UTF-8/UTF-8"
8686+ "en_US.UTF-8/UTF-8"
8787+ ]
8888+ ++ aggregatedLocales
7289 );
7373- defaultText = lib.literalExpression ''
7474- lib.unique
7575- (builtins.map (l: (lib.replaceStrings [ "utf8" "utf-8" "UTF8" ] [ "UTF-8" "UTF-8" "UTF-8" ] l) + "/UTF-8") (
7676- [
7777- "C.UTF-8"
7878- "en_US.UTF-8"
7979- config.i18n.defaultLocale
8080- ] ++ (lib.attrValues (lib.filterAttrs (n: v: n != "LANGUAGE") config.i18n.extraLocaleSettings))
8181- ))
8282- '';
8390 example = [
8491 "en_US.UTF-8/UTF-8"
8592 "nl_NL.UTF-8/UTF-8"
···100107 ###### implementation
101108102109 config = {
110110+ warnings =
111111+ lib.optional ((lib.subtractLists config.i18n.supportedLocales aggregatedLocales) != [ ])
112112+ ''
113113+ `i18n.supportedLocales` is deprecated in favor of `i18n.extraLocales`,
114114+ and it seems you are using `i18n.supportedLocales` and forgot to
115115+ include some locales specified in `i18n.defaultLocale`,
116116+ `i18n.extraLocales` or `i18n.extraLocaleSettings`.
117117+118118+ If you're trying to install additional locales not specified in
119119+ `i18n.defaultLocale` or `i18n.extraLocaleSettings`, consider adding
120120+ only those locales to `i18n.extraLocales`.
121121+ '';
103122104123 environment.systemPackages =
105124 # We increase the priority a little, so that plain glibc in systemPackages can't win.
···7474 # The upstream default is dependent on the builders' page size
7575 # https://github.com/jemalloc/jemalloc/issues/467
7676 # https://sources.debian.org/src/jemalloc/5.3.0-3/debian/rules/
7777- ++ [ (if stdenv.hostPlatform.isAarch64 then "--with-lg-page=16" else "--with-lg-page=12") ]
7777+ ++ [
7878+ (
7979+ if (stdenv.hostPlatform.isAarch64 || stdenv.hostPlatform.isLoongArch64) then
8080+ "--with-lg-page=16"
8181+ else
8282+ "--with-lg-page=12"
8383+ )
8484+ ]
7885 # See https://github.com/jemalloc/jemalloc/issues/1997
7986 # Using a value of 48 should work on both emulated and native x86_64-darwin.
8087 ++ lib.optional (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) "--with-lg-vaddr=48";
···2233grafanaPlugin {
44 pname = "grafana-lokiexplore-app";
55- version = "1.0.10";
66- zipHash = "sha256-1+5xil0XmcLCDKpObuxpnoMnQZaT1I62zL6xatlyKc4=";
55+ version = "1.0.13";
66+ zipHash = "sha256-oTiwvkKiKpeI7MUxyaRuxXot4UhMeSvuJh0N1VIfA5Q=";
77 meta = with lib; {
88 description = "The Grafana Logs Drilldown app offers a queryless experience for browsing Loki logs without the need for writing complex queries.";
99 license = licenses.agpl3Only;
···2233grafanaPlugin {
44 pname = "marcusolsson-calendar-panel";
55- version = "3.7.0";
66- zipHash = "sha256-O8EvkS+lWq2qaIj1HJzPagRGhrEENvY1YDBusvUejM0=";
55+ version = "3.9.1";
66+ zipHash = "sha256-52MhkjsTke256cId6BtgjdRiU4w9cA6MTWA79/UfHQw=";
77 meta = with lib; {
88 description = "Calendar Panel is a Grafana plugin that displays events from various data sources.";
99 license = licenses.asl20;
···2233grafanaPlugin {
44 pname = "volkovlabs-echarts-panel";
55- version = "6.4.1";
66- zipHash = "sha256-RHOfFKplZs0gbD/esvrpXkkPKPfo5R4zjCUJWPpkDNU=";
55+ version = "6.6.0";
66+ zipHash = "sha256-SjZl33xoHVmE6y0D7FT9x2wVPil7HK1rYVgTXICpXZ4=";
77 meta = with lib; {
88 description = "The Apache ECharts plugin is a visualization panel for Grafana that allows you to incorporate the popular Apache ECharts library into your Grafana dashboard.";
99 license = licenses.asl20;
···2233grafanaPlugin {
44 pname = "volkovlabs-form-panel";
55- version = "4.6.0";
66- zipHash = "sha256-ne2dfCr+PBodeaxGfZL0VrAxHLYEAaeQfuZQf2F3s0s=";
55+ version = "5.1.0";
66+ zipHash = "sha256-aFIrKrfcTk4dGBaGVMv6mMLQqys5QaD9XgZIGmtgA5s=";
77 meta = with lib; {
88 description = "The Data Manipulation Panel is the first plugin that allows inserting and updating application data, as well as modifying configuration directly from your Grafana dashboard.";
99 license = licenses.asl20;
···2233grafanaPlugin {
44 pname = "volkovlabs-rss-datasource";
55- version = "4.2.0";
66- zipHash = "sha256-+3tgvpH6xlJORqN4Sx7qwzsiQZoLwdarzhx6kHvtOoY=";
55+ version = "4.3.0";
66+ zipHash = "sha256-HF37azbhlYp8RndUMr7Xs1ajgOTJplVP7rQzGQ0GrU4=";
77 meta = with lib; {
88 description = "The RSS/Atom data source is a plugin for Grafana that retrieves RSS/Atom feeds and allows visualizing them using Dynamic Text and other panels.";
99 license = licenses.asl20;
···2233grafanaPlugin {
44 pname = "volkovlabs-variable-panel";
55- version = "3.5.0";
66- zipHash = "sha256-SqMTCdB+8OUo94zJ3eS5NoCeyjc7sdMCR0CTvVe/L1g=";
55+ version = "3.9.0";
66+ zipHash = "sha256-M9upfNMK45dPnouSO6Do3Li833q9NI0H2gc6DaLEsbA=";
77 meta = with lib; {
88 description = "The Variable panel allows you to have dashboard filters in a separate panel which you can place anywhere on the dashboard.";
99 license = licenses.asl20;