diff options
author | Michele Guerini Rocco <rnhmjoj@users.noreply.github.com> | 2021-09-19 01:10:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-19 01:10:55 +0200 |
commit | 1cf01b5215032228c9a3c7860adde5ee0e0cc160 (patch) | |
tree | fcdb73893566bcac2c40c18a53459f2005808197 /nixos | |
parent | ed55c1a44435d36eb4e35da67d0f1faa6e423f04 (diff) | |
parent | 3026ff17ec700429967dda62401c788dba4e90da (diff) | |
download | nixpkgs-1cf01b5215032228c9a3c7860adde5ee0e0cc160.tar nixpkgs-1cf01b5215032228c9a3c7860adde5ee0e0cc160.tar.gz nixpkgs-1cf01b5215032228c9a3c7860adde5ee0e0cc160.tar.bz2 nixpkgs-1cf01b5215032228c9a3c7860adde5ee0e0cc160.tar.lz nixpkgs-1cf01b5215032228c9a3c7860adde5ee0e0cc160.tar.xz nixpkgs-1cf01b5215032228c9a3c7860adde5ee0e0cc160.tar.zst nixpkgs-1cf01b5215032228c9a3c7860adde5ee0e0cc160.zip |
Merge pull request #138207 from rnhmjoj/layouts
nixos/extra-layouts: avoid all rebuilds
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/doc/manual/from_md/release-notes/rl-2111.section.xml | 8 | ||||
-rw-r--r-- | nixos/doc/manual/release-notes/rl-2111.section.md | 2 | ||||
-rw-r--r-- | nixos/modules/config/console.nix | 6 | ||||
-rw-r--r-- | nixos/modules/services/x11/extra-layouts.nix | 52 | ||||
-rw-r--r-- | nixos/modules/services/x11/xserver.nix | 3 |
5 files changed, 24 insertions, 47 deletions
diff --git a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml index 6b3c706bb9b..fafa4299cf8 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml @@ -1051,6 +1051,14 @@ Superuser created successfully. </listitem> <listitem> <para> + The + <link xlink:href="options.html#opt-services.xserver.extraLayouts"><literal>services.xserver.extraLayouts</literal></link> + no longer cause additional rebuilds when a layout is added or + modified. + </para> + </listitem> + <listitem> + <para> Sway: The terminal emulator <literal>rxvt-unicode</literal> is no longer installed by default via <literal>programs.sway.extraPackages</literal>. The current diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md index 71342e0c2c9..1c0f043337c 100644 --- a/nixos/doc/manual/release-notes/rl-2111.section.md +++ b/nixos/doc/manual/release-notes/rl-2111.section.md @@ -319,6 +319,8 @@ To be able to access the web UI this port needs to be opened in the firewall. However, if [`services.fail2ban.enable`](options.html#opt-services.fail2ban.enable) is `true`, the `fail2ban` will override the verbosity to `"VERBOSE"`, so that `fail2ban` can observe the failed login attempts from the SSH logs. +- The [`services.xserver.extraLayouts`](options.html#opt-services.xserver.extraLayouts) no longer cause additional rebuilds when a layout is added or modified. + - Sway: The terminal emulator `rxvt-unicode` is no longer installed by default via `programs.sway.extraPackages`. The current default configuration uses `alacritty` (and soon `foot`) so this is only an issue when using a customized configuration and not installing `rxvt-unicode` explicitly. - `python3` now defaults to Python 3.9. Python 3.9 introduces many deprecation warnings, please look at the [What's New In Python 3.9 post](https://docs.python.org/3/whatsnew/3.9.html) for more information. diff --git a/nixos/modules/config/console.nix b/nixos/modules/config/console.nix index c5150305bd8..98f942ee63f 100644 --- a/nixos/modules/config/console.nix +++ b/nixos/modules/config/console.nix @@ -116,7 +116,11 @@ in { console.keyMap = with config.services.xserver; mkIf cfg.useXkbConfig (pkgs.runCommand "xkb-console-keymap" { preferLocalBuild = true; } '' - '${pkgs.ckbcomp}/bin/ckbcomp' -model '${xkbModel}' -layout '${layout}' \ + '${pkgs.ckbcomp}/bin/ckbcomp' \ + ${optionalString (config.environment.sessionVariables ? XKB_CONFIG_ROOT) + "-I${config.environment.sessionVariables.XKB_CONFIG_ROOT}" + } \ + -model '${xkbModel}' -layout '${layout}' \ -option '${xkbOptions}' -variant '${xkbVariant}' > "$out" ''); } diff --git a/nixos/modules/services/x11/extra-layouts.nix b/nixos/modules/services/x11/extra-layouts.nix index 0e2edc6a530..b1c4e04975f 100644 --- a/nixos/modules/services/x11/extra-layouts.nix +++ b/nixos/modules/services/x11/extra-layouts.nix @@ -79,6 +79,10 @@ let }; }; + xkb_patched = pkgs.xorg.xkeyboardconfig_custom { + layouts = config.services.xserver.extraLayouts; + }; + in { @@ -114,58 +118,14 @@ in config = mkIf (layouts != { }) { - # We don't override xkeyboard_config directly to - # reduce the amount of packages to be recompiled. - # Only the following packages are necessary to set - # a custom layout anyway: - nixpkgs.overlays = lib.singleton (self: super: { - - xkb_patched = self.xorg.xkeyboardconfig_custom { - layouts = config.services.xserver.extraLayouts; - }; - - xorg = super.xorg // { - xorgserver = super.xorg.xorgserver.overrideAttrs (old: { - configureFlags = old.configureFlags ++ [ - "--with-xkb-bin-directory=${self.xorg.xkbcomp}/bin" - "--with-xkb-path=${self.xkb_patched}/share/X11/xkb" - ]; - }); - - setxkbmap = super.xorg.setxkbmap.overrideAttrs (old: { - postInstall = - '' - mkdir -p $out/share - ln -sfn ${self.xkb_patched}/etc/X11 $out/share/X11 - ''; - }); - - xkbcomp = super.xorg.xkbcomp.overrideAttrs (old: { - configureFlags = [ "--with-xkb-config-root=${self.xkb_patched}/share/X11/xkb" ]; - }); - - }; - - ckbcomp = super.ckbcomp.override { - xkeyboard_config = self.xkb_patched; - }; - - xkbvalidate = super.xkbvalidate.override { - libxkbcommon = self.libxkbcommon.override { - xkeyboard_config = self.xkb_patched; - }; - }; - - }); - environment.sessionVariables = { # runtime override supported by multiple libraries e. g. libxkbcommon # https://xkbcommon.org/doc/current/group__include-path.html - XKB_CONFIG_ROOT = "${pkgs.xkb_patched}/etc/X11/xkb"; + XKB_CONFIG_ROOT = "${xkb_patched}/etc/X11/xkb"; }; services.xserver = { - xkbDir = "${pkgs.xkb_patched}/etc/X11/xkb"; + xkbDir = "${xkb_patched}/etc/X11/xkb"; exportConfiguration = config.services.xserver.displayManager.startx.enable || config.services.xserver.displayManager.sx.enable; }; diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index ad9bd88f98a..ee190ac3cc4 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -738,6 +738,9 @@ in nativeBuildInputs = with pkgs.buildPackages; [ xkbvalidate ]; preferLocalBuild = true; } '' + ${optionalString (config.environment.sessionVariables ? XKB_CONFIG_ROOT) + "export XKB_CONFIG_ROOT=${config.environment.sessionVariables.XKB_CONFIG_ROOT}" + } xkbvalidate "$xkbModel" "$layout" "$xkbVariant" "$xkbOptions" touch "$out" ''); |