Merge pull request #264787 from katexochen/feat/xkb-extralayouts

nixos/x11: move extraLayouts into xkb attrset
This commit is contained in:
Michele Guerini Rocco 2023-11-03 13:49:14 +01:00 committed by GitHub
commit 5654dea8a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 31 additions and 23 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

@ -322,7 +322,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" ''

View File

@ -568,7 +568,7 @@ This is how the pull request looks like in this case: [https://github.com/NixOS/
To run the main types of tests locally:
- Run package-internal tests with `nix-build --attr pkgs.PACKAGE.passthru.tests`
- Run [NixOS tests](https://nixos.org/manual/nixos/unstable/#sec-nixos-tests) with `nix-build --attr nixosTest.NAME`, where `NAME` is the name of the test listed in `nixos/tests/all-tests.nix`
- Run [NixOS tests](https://nixos.org/manual/nixos/unstable/#sec-nixos-tests) with `nix-build --attr nixosTests.NAME`, where `NAME` is the name of the test listed in `nixos/tests/all-tests.nix`
- Run [global package tests](https://nixos.org/manual/nixpkgs/unstable/#sec-package-tests) with `nix-build --attr tests.PACKAGE`, where `PACKAGE` is the name of the test listed in `pkgs/test/default.nix`
- See `lib/tests/NAME.nix` for instructions on running specific library tests