modules: move mappings to neovim/init

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I9b04107496df27dcda1a24ce000da3f46a6a6964
This commit is contained in:
raf 2026-01-27 12:54:02 +03:00
commit f8f1017411
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
6 changed files with 149 additions and 131 deletions

View file

@ -10,7 +10,6 @@
# such as spellchecking, mappings, and the init script (init.vim). # such as spellchecking, mappings, and the init script (init.vim).
neovim = map (p: ./neovim + "/${p}") [ neovim = map (p: ./neovim + "/${p}") [
"init" "init"
"mappings"
]; ];
# Individual plugin modules, separated by the type of plugin. # Individual plugin modules, separated by the type of plugin.

View file

@ -8,6 +8,7 @@
./filetype.nix ./filetype.nix
./highlight.nix ./highlight.nix
./lsp.nix ./lsp.nix
./mappings.nix
./spellcheck.nix ./spellcheck.nix
./util.nix ./util.nix
]; ];

View file

@ -1,19 +1,31 @@
{lib, ...}: let {
config,
lib,
...
}: let
inherit (lib.modules) mkMerge;
inherit (lib.options) mkOption literalMD; inherit (lib.options) mkOption literalMD;
inherit (lib.types) either str listOf attrsOf nullOr submodule; inherit (lib.types) either str listOf attrsOf nullOr submodule;
inherit (lib.attrsets) mapAttrsToList;
inherit (lib.lists) flatten;
inherit (lib.trivial) pipe;
inherit (lib.nvim.config) mkBool; inherit (lib.nvim.config) mkBool;
mapConfigOptions = { mapConfigOptions = {
desc = mkOption { desc = mkOption {
type = nullOr str; type = nullOr str;
default = null; default = null;
description = "A description of this keybind, to be shown in which-key, if you have it enabled."; description = ''
Description for the keybind, to be shown in which-key, if you have enabled
in the module system.
'';
}; };
action = mkOption { action = mkOption {
type = str; type = str;
description = "The command to execute."; description = "The command to execute.";
}; };
lua = mkBool false '' lua = mkBool false ''
If true, `action` is considered to be lua code. If true, `action` is considered to be lua code.
Thus, it will not be wrapped in `""`. Thus, it will not be wrapped in `""`.
@ -55,6 +67,22 @@
}); });
default = {}; default = {};
}; };
legacyMapModes = {
normal = ["n"];
insert = ["i"];
select = ["s"];
visual = ["v"];
terminal = ["t"];
normalVisualOp = ["n" "v" "o"];
visualOnly = ["n" "x"];
operator = ["o"];
insertCommand = ["i" "c"];
lang = ["l"];
command = ["c"];
};
cfg = config.vim;
in { in {
options.vim = { options.vim = {
keymaps = mkOption { keymaps = mkOption {
@ -94,4 +122,27 @@ in {
command = legacyMapOption "command-line"; command = legacyMapOption "command-line";
}; };
}; };
config = {
vim.keymaps = mkMerge [
(
pipe cfg.maps
[
(mapAttrsToList (
oldMode: keybinds:
mapAttrsToList (
key: bind:
bind
// {
inherit key;
mode = legacyMapModes.${oldMode};
}
)
keybinds
))
flatten
]
)
];
};
} }

View file

@ -3,11 +3,6 @@
lib, lib,
... ...
}: let }: let
inherit (lib.modules) mkMerge;
inherit (lib.trivial) pipe;
inherit (lib.attrsets) mapAttrsToList;
inherit (lib.lists) flatten;
legacyMapModes = { legacyMapModes = {
normal = ["n"]; normal = ["n"];
insert = ["i"]; insert = ["i"];
@ -24,26 +19,4 @@
cfg = config.vim; cfg = config.vim;
in { in {
config = {
vim.keymaps = mkMerge [
(
pipe cfg.maps
[
(mapAttrsToList (
oldMode: keybinds:
mapAttrsToList (
key: bind:
bind
// {
inherit key;
mode = legacyMapModes.${oldMode};
}
)
keybinds
))
flatten
]
)
];
};
} }

View file

@ -1,6 +0,0 @@
{
imports = [
./config.nix
./options.nix
];
}