nixos/x11: move extraLayouts into xkb attrset

[Motivation](NixOS#257817 (comment))

`extraLayouts` was missed in #259891, so moving it to the other xkb
options with this PR.

Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
This commit is contained in:
Paul Meyer 2023-11-01 11:55:25 +01:00
parent e0acf703ce
commit 143680787e
4 changed files with 30 additions and 22 deletions

View File

@ -208,7 +208,7 @@ qt.style = "gtk2";
It is possible to install custom [ XKB It is possible to install custom [ XKB
](https://en.wikipedia.org/wiki/X_keyboard_extension) keyboard layouts ](https://en.wikipedia.org/wiki/X_keyboard_extension) keyboard layouts
using the option `services.xserver.extraLayouts`. using the option `services.xserver.xkb.extraLayouts`.
As a first example, we are going to create a layout based on the basic As a first example, we are going to create a layout based on the basic
US layout, with an additional layer to type some greek symbols by US layout, with an additional layer to type some greek symbols by
@ -235,7 +235,7 @@ xkb_symbols "us-greek"
A minimal layout specification must include the following: A minimal layout specification must include the following:
```nix ```nix
services.xserver.extraLayouts.us-greek = { services.xserver.xkb.extraLayouts.us-greek = {
description = "US layout with alt-gr greek"; description = "US layout with alt-gr greek";
languages = [ "eng" ]; languages = [ "eng" ];
symbolsFile = /yourpath/symbols/us-greek; symbolsFile = /yourpath/symbols/us-greek;
@ -298,7 +298,7 @@ xkb_symbols "media"
As before, to install the layout do As before, to install the layout do
```nix ```nix
services.xserver.extraLayouts.media = { services.xserver.xkb.extraLayouts.media = {
description = "Multimedia keys remapping"; description = "Multimedia keys remapping";
languages = [ "eng" ]; languages = [ "eng" ];
symbolsFile = /path/to/media-key; symbolsFile = /path/to/media-key;

View File

@ -318,7 +318,7 @@
order, or relying on `mkBefore` and `mkAfter`, but may impact users calling order, or relying on `mkBefore` and `mkAfter`, but may impact users calling
`mkOrder n` with n  400. `mkOrder n` with n  400.
- X keyboard extension (XKB) options have been reorganized into a single attribute set, `services.xserver.xkb`. Specifically, `services.xserver.layout` is now `services.xserver.xkb.layout`, `services.xserver.xkbModel` is now `services.xserver.xkb.model`, `services.xserver.xkbOptions` is now `services.xserver.xkb.options`, `services.xserver.xkbVariant` is now `services.xserver.xkb.variant`, and `services.xserver.xkbDir` is now `services.xserver.xkb.dir`. - X keyboard extension (XKB) options have been reorganized into a single attribute set, `services.xserver.xkb`. Specifically, `services.xserver.layout` is now `services.xserver.xkb.layout`, `services.xserver.extraLayouts` is now `services.xserver.xkb.extraLayouts`, `services.xserver.xkbModel` is now `services.xserver.xkb.model`, `services.xserver.xkbOptions` is now `services.xserver.xkb.options`, `services.xserver.xkbVariant` is now `services.xserver.xkb.variant`, and `services.xserver.xkbDir` is now `services.xserver.xkb.dir`.
- `networking.networkmanager.firewallBackend` was removed as NixOS is now using iptables-nftables-compat even when using iptables, therefore Networkmanager now uses the nftables backend unconditionally. - `networking.networkmanager.firewallBackend` was removed as NixOS is now using iptables-nftables-compat even when using iptables, therefore Networkmanager now uses the nftables backend unconditionally.

View File

@ -3,7 +3,7 @@
with lib; with lib;
let let
layouts = config.services.xserver.extraLayouts; layouts = config.services.xserver.xkb.extraLayouts;
layoutOpts = { layoutOpts = {
options = { options = {
@ -15,10 +15,10 @@ let
languages = mkOption { languages = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
description = description =
lib.mdDoc '' lib.mdDoc ''
A list of languages provided by the layout. A list of languages provided by the layout.
(Use ISO 639-2 codes, for example: "eng" for english) (Use ISO 639-2 codes, for example: "eng" for english)
''; '';
}; };
compatFile = mkOption { compatFile = mkOption {
@ -80,29 +80,37 @@ let
}; };
xkb_patched = pkgs.xorg.xkeyboardconfig_custom { xkb_patched = pkgs.xorg.xkeyboardconfig_custom {
layouts = config.services.xserver.extraLayouts; layouts = config.services.xserver.xkb.extraLayouts;
}; };
in in
{ {
imports = [
(lib.mkRenamedOptionModuleWith {
sinceRelease = 2311;
from = [ "services" "xserver" "extraLayouts" ];
to = [ "services" "xserver" "xkb" "extraLayouts" ];
})
];
###### interface ###### interface
options.services.xserver = { options.services.xserver.xkb = {
extraLayouts = mkOption { extraLayouts = mkOption {
type = types.attrsOf (types.submodule layoutOpts); type = types.attrsOf (types.submodule layoutOpts);
default = {}; default = { };
example = literalExpression example = literalExpression
'' ''
{ {
mine = { mine = {
description = "My custom xkb layout."; description = "My custom xkb layout.";
languages = [ "eng" ]; languages = [ "eng" ];
symbolsFile = /path/to/my/layout; symbolsFile = /path/to/my/layout;
}; };
} }
''; '';
description = lib.mdDoc '' description = lib.mdDoc ''
Extra custom layouts that will be included in the xkb configuration. Extra custom layouts that will be included in the xkb configuration.
Information on how to create a new layout can be found here: Information on how to create a new layout can be found here:

View File

@ -213,7 +213,7 @@ in pkgs.lib.mapAttrs mkKeyboardTest {
extraConfig.console.useXkbConfig = true; extraConfig.console.useXkbConfig = true;
extraConfig.services.xserver.xkb.layout = "us-greek"; extraConfig.services.xserver.xkb.layout = "us-greek";
extraConfig.services.xserver.extraLayouts.us-greek = extraConfig.services.xserver.xkb.extraLayouts.us-greek =
{ description = "US layout with alt-gr greek"; { description = "US layout with alt-gr greek";
languages = [ "eng" ]; languages = [ "eng" ];
symbolsFile = pkgs.writeText "us-greek" '' symbolsFile = pkgs.writeText "us-greek" ''