From f4b43e3a18012dde61a14f0136a5b077b3f60bbc Mon Sep 17 00:00:00 2001 From: George Kaklamanos Date: Sat, 3 Aug 2024 17:04:29 +0300 Subject: [PATCH] nixvim: Add initial configuration for keymaps Signed-off-by: George Kaklamanos --- home-manager/nixvim/keymaps.nix | 50 +++++++++++++++++++++++++++++++++ home-manager/nixvim/nixvim.nix | 3 ++ 2 files changed, 53 insertions(+) create mode 100644 home-manager/nixvim/keymaps.nix diff --git a/home-manager/nixvim/keymaps.nix b/home-manager/nixvim/keymaps.nix new file mode 100644 index 0000000..83da2fd --- /dev/null +++ b/home-manager/nixvim/keymaps.nix @@ -0,0 +1,50 @@ +{ + pkgs, + config, + ... +}: let + # Telescope + # { key = "ff"; + # action = config.nixvim.helpers.mkRaw "require('telescope.builtin').find_files"; + # } becomes: + # { key = ldr "ff"; + # action = mfn "telescope.builtin" "find_files"; + # } becomes: + # (tscope "ff" "find_files") + lua = config.nixvim.helpers.mkRaw; + ldr = k: "${k}"; + key = k: fn: { + key = "${k}"; + action = lua "${fn}"; + }; + lkey = k: fn: { + key = ldr "${k}"; + action = lua "${fn}"; + }; + luaf = fn: "function() ${fn} end"; + luafr = m: fn: "function() require('${m}').${fn} end"; + + mkey = module: k: fn: (lkey "${k}" "require('${module}').${fn}"); + tscope = k: fn: mkey "telescope.builtin" "${k}" "${fn}"; + gs = k: fn: mkey "gitsigns" "${k}" "${fn}"; +in { + programs.nixvim.keymaps = [ + (tscope "ff" "find_files") + (tscope "fg" "live_grep") + (tscope "fb" "buffers") + (tscope "fh" "help_tags") + + (gs "hs" "stage_hunk") + (gs "rs" "reset_hunk") + (gs "hS" "stage_buffer") + (gs "hu" "undo_stage_hunk") + (gs "hR" "reset_buffer") + (gs "hp" "preview_hunk") + (gs "tb" "toggle_current_line_blame") + (gs "hd" "diffthis") + (gs "td" "toggle_deleted") + + (key "" (luafr "nvim-tree.api" "tree.toggle()")) + (lkey "d" "vim.cmd.bdelete") + ]; +} diff --git a/home-manager/nixvim/nixvim.nix b/home-manager/nixvim/nixvim.nix index ff36865..c11df2e 100644 --- a/home-manager/nixvim/nixvim.nix +++ b/home-manager/nixvim/nixvim.nix @@ -3,6 +3,9 @@ config, ... }: { + imports = [ + ./keymaps.nix + ]; programs.nixvim = { enable = true; plugins = {