niri: finally, real keyboards

This commit is contained in:
2026-03-17 23:06:15 +01:00
parent 5e7204bd56
commit 43aad292d8
3 changed files with 196 additions and 143 deletions

View File

@@ -51,10 +51,20 @@
inherit (inputs) wrappers; inherit (inputs) wrappers;
pkgs = prev; pkgs = prev;
}; };
niphas-niri = import packages/niri.nix {
niphas-niri-config-with =
overwriteSettings:
(import packages/niri.nix {
inherit (inputs) wrappers;
inherit overwriteSettings;
pkgs = final;
})."config.kdl".path;
niphas-niri =
(import packages/niri.nix {
inherit (inputs) wrappers; inherit (inputs) wrappers;
pkgs = final; pkgs = final;
}; }).wrapper;
niphas-kanshi = import packages/kanshi.nix { niphas-kanshi = import packages/kanshi.nix {
inherit (inputs) wrappers; inherit (inputs) wrappers;
pkgs = final; pkgs = final;
@@ -95,6 +105,11 @@
''; '';
vimv = prev.callPackage packages/vimv.nix { }; vimv = prev.callPackage packages/vimv.nix { };
keyboardScripts = prev.callPackage packages/keyboardScripts.nix {
pkgs = final;
inherit (final) lib;
};
}; };
packages = eachSupportedSystem ( packages = eachSupportedSystem (
@@ -120,6 +135,7 @@
vimv vimv
; ;
} }
// pkgs.keyboardScripts
); );
formatter = eachSupportedSystem (system: treefmtEval.${system}.config.build.wrapper); formatter = eachSupportedSystem (system: treefmtEval.${system}.config.build.wrapper);

View File

@@ -0,0 +1,38 @@
{ pkgs, lib }:
let
keyboards = {
german = {
code = "de";
variant = "T3";
};
russian = {
code = "ru";
variant = "phonetic_winkeys";
};
greek = {
code = "gr";
variant = "polytonic";
};
};
keyboardScripts = lib.mapAttrs' (
name: keyboard:
lib.nameValuePair "kb-${name}" (
pkgs.writers.writeDashBin "kb-${name}" ''
exec ${lib.getExe pkgs.niphas-niri} msg action load-config-file --path ${
pkgs.niphas-niri-config-with {
input = {
keyboard = {
xkb.layout = "de,${keyboard.code}";
xkb.variant = "T3,${keyboard.variant}";
xkb.options = "compose:caps,grp:ctrls_toggle";
numlock = null;
};
};
}
}
''
)
) keyboards;
in
keyboardScripts

View File

@@ -1,6 +1,7 @@
{ {
wrappers, wrappers,
pkgs, pkgs,
overwriteSettings ? { },
}: }:
let let
lib = pkgs.lib; lib = pkgs.lib;
@@ -10,10 +11,9 @@ let
shadow-color = "#0007"; shadow-color = "#0007";
}; };
niri = wrappers.wrapperModules.niri.apply { niriWrapper = wrappers.wrapperModules.niri.apply {
inherit pkgs; inherit pkgs;
settings = builtins.foldl' lib.recursiveUpdate { } ([ settings = lib.recursiveUpdate {
{
input = { input = {
keyboard = { keyboard = {
xkb.layout = "de"; xkb.layout = "de";
@@ -159,8 +159,7 @@ let
"Mod+Shift+E".quit = null; "Mod+Shift+E".quit = null;
"Ctrl+Alt+Delete".quit = null; "Ctrl+Alt+Delete".quit = null;
}; };
} } overwriteSettings;
]);
}; };
in in
niri.wrapper niriWrapper