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
](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
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:
```nix
services.xserver.extraLayouts.us-greek = {
services.xserver.xkb.extraLayouts.us-greek = {
description = "US layout with alt-gr greek";
languages = [ "eng" ];
symbolsFile = /yourpath/symbols/us-greek;
@ -298,7 +298,7 @@ xkb_symbols "media"
As before, to install the layout do
```nix
services.xserver.extraLayouts.media = {
services.xserver.xkb.extraLayouts.media = {
description = "Multimedia keys remapping";
languages = [ "eng" ];
symbolsFile = /path/to/media-key;

View File

@ -318,7 +318,7 @@
order, or relying on `mkBefore` and `mkAfter`, but may impact users calling
`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.

View File

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