summaryrefslogtreecommitdiff
path: root/hm/editors/nixvim.nix
diff options
context:
space:
mode:
Diffstat (limited to 'hm/editors/nixvim.nix')
-rw-r--r--hm/editors/nixvim.nix255
1 files changed, 179 insertions, 76 deletions
diff --git a/hm/editors/nixvim.nix b/hm/editors/nixvim.nix
index 51fdf95..e46f6e2 100644
--- a/hm/editors/nixvim.nix
+++ b/hm/editors/nixvim.nix
@@ -1,4 +1,10 @@
-{ inputs, config, lib, pkgs, ... }:
+{
+ inputs,
+ config,
+ lib,
+ pkgs,
+ ...
+}:
let
cfg = config.hm.editors.nixvim;
in
@@ -6,8 +12,10 @@ in
imports = [ inputs.nixvim.homeModules.nixvim ];
options.hm.editors.nixvim.enable = lib.mkEnableOption "enables nixvim config framework";
+
config = lib.mkIf cfg.enable {
programs.nixvim = {
+ diagnostics.virtual_text = false;
enable = true;
package = inputs.neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default;
@@ -19,21 +27,82 @@ in
globals.mapleader = " ";
+ clipboard = {
+ providers.wl-copy.enable = true;
+ register = "unnamedplus";
+ };
+
+ opts = {
+ number = true;
+ relativenumber = true;
+ termguicolors = true;
+ ignorecase = true;
+ smartcase = true;
+ expandtab = true;
+ shiftwidth = 2;
+ encoding = "utf-8";
+ fileencoding = "utf-8";
+ undofile = true;
+ swapfile = true;
+ backup = false;
+ autoread = true;
+ cursorline = true;
+ ruler = true;
+ gdefault = true;
+ scrolloff = 5;
+ };
+
keymaps = [
{
- # mode = [ "n" "i" "v" ];
+ mode = [ "" ];
key = "<F1>";
action = "<NOP>";
options.silent = true;
}
{
mode = "n";
+ key = "<leader>gs";
+ action = "<cmd>Neogit<CR>";
+ options.desc = "Neogit Status";
+ }
+ {
+ mode = "n";
key = "<leader>ff";
action = "<cmd>Telescope find_files<CR>";
options.desc = "Find Files";
}
{
mode = "n";
+ key = "gd";
+ action = "<cmd>lua vim.lsp.buf.definition()<CR>";
+ options.desc = "Go to Definition";
+ }
+ {
+ mode = "n";
+ key = "K";
+ action = "<cmd>lua vim.lsp.buf.hover()<CR>";
+ options.desc = "Hover Docs";
+ }
+ {
+ mode = "n";
+ key = "<leader>ca";
+ action = "<cmd>lua vim.lsp.buf.code_action()<CR>";
+ options.desc = "Code Actions";
+ }
+ {
+ mode = "n";
+ key = "<leader>rn";
+ action = "<cmd>lua vim.lsp.buf.rename()<CR>";
+ options.desc = "Rename Symbol";
+ }
+ {
+ mode = "n";
+ key = "<leauer>fs";
+ action = "<cmd>Telescope lsp_document_symbols<CR>";
+ options.desc = "Find Symbols (Functions/Variables)";
+ }
+ {
+ mode = "n";
key = "<leader>fg";
action = "<cmd>Telescope live_grep<CR>";
options.desc = "Live Grep";
@@ -62,14 +131,60 @@ in
action = "<cmd>Trouble diagnostics toggle<CR>";
options.desc = "Toggle Trouble (Diagnostics)";
}
+ {
+ mode = "n";
+ key = "<leader>p";
+ action = "<cmd>Telescope yank_history<CR>";
+ options.desc = "Open Yank History";
+ }
];
- plugins = {
- lualine = {
- enable = true;
- settings.options.theme = "gruvbox-material";
- };
- multicursors.enable = true;
+ plugins = {
+ overseer.enable = true;
+ neotest.enable = true;
+
+ tiny-inline-diagnostic = {
+ enable = true;
+ settings = {
+ preset = "minimal";
+ show_all_diags_on_cursorline = true;
+ options = {
+ multilines = {
+ enabled = true;
+ always_show = true;
+ };
+ };
+ };
+ };
+ comment.enable = true;
+ flash = {
+ enable = true;
+ settings = {
+ search.enabled = true;
+ jump.autojump = true;
+ };
+ };
+ notify = {
+ enable = true;
+ settings.topDown = false;
+ };
+ yanky = {
+ enable = true;
+ settings.ring.history_length = 100;
+ settings.system_clipboard.sync_with_ring = true;
+ };
+ lualine = {
+ enable = true;
+ settings = {
+ options.theme = "gruvbox-material";
+ sections = {
+ lualine_b = [ "diagnostics" ];
+ lualine_c = [ "filename" ];
+ lualine_x = [ "filetype" ];
+ };
+ };
+ };
+
treesitter-context = {
enable = true;
settings = {
@@ -77,87 +192,75 @@ in
trim_scope = "outer";
};
};
- oil.enable = true;
- persistence.enable = true;
- nvim-autopairs.enable = true;
- neoscroll.enable = true;
- bufferline.enable = true;
- web-devicons.enable = true;
+ oil.enable = true;
+ nvim-autopairs.enable = true;
+ neoscroll.enable = true;
+ bufferline.enable = true;
+ web-devicons.enable = true;
+ lsp-kind.enable = true;
- blink-cmp.enable = true;
- gitsigns.enable = true;
- which-key.enable = true;
- harpoon = {
- enable = true;
- enableTelescope = true;
- };
- toggleterm.enable = true;
- treesitter = {
- enable = true;
- };
- telescope = {
- enable = true;
- extensions = {
- fzf-native = {
- enable = true;
- };
+ blink-cmp = {
+ enable = true;
+ settings = {
+ keymap = {
+ preset = "default";
+ "<C-space>" = [
+ "show"
+ "show_documentation"
+ "hide"
+ ];
+ "<CR>" = [
+ "accept"
+ "fallback"
+ ];
+ "<Tab>" = [
+ "select_next"
+ "fallback"
+ ];
+ "<S-Tab>" = [
+ "select_prev"
+ "fallback"
+ ];
};
};
+ };
+ gitsigns.enable = true;
+ which-key.enable = true;
+ harpoon = {
+ enable = true;
+ enableTelescope = true;
+ };
+ toggleterm.enable = true;
+ treesitter.enable = true;
+ telescope = {
+ enable = true;
+ extensions.fzf-native.enable = true;
+ };
noice.enable = true;
dressing.enable = true;
- trouble.enable = true;
+
conform-nvim = {
enable = true;
- settings.format_on_save = {
- lsp_fallback = true;
- timeout_ms = 500;
+ settings = {
+ formatters_by_ft = {
+ nix = [ "alejandra" ];
+ };
+ format_on_save = {
+ lsp_fallback = true;
+ timeout_ms = 500;
+ };
};
};
- # notify = {
- # enable = true;
- # settings = {
- # backgroundColour = "#1e1e2e";
- # fps = 60;
- # render = "default";
- # timeout = 500;
- # topDown = true;
- # };
- # };
-
- nix.enable = true;
- lsp = {
- enable = true;
- servers = {
+ lsp = {
+ enable = true;
+ servers = {
+ zls.enable = true;
+ zls.package = pkgs.zls;
nil_ls.enable = true;
clangd.enable = true;
- };
- };
- };
-
- opts = {
- number = true;
- relativenumber = true;
- termguicolors = true;
- # mouse = "a";
- ignorecase = true;
- smartcase = true;
- expandtab = true;
- shiftwidth = 2;
- encoding = "utf-8";
- fileencoding = "utf-8";
- undofile = true;
- swapfile = true;
- backup = false;
- autoread = true;
- cursorline = true;
- ruler = true;
- gdefault = true;
- scrolloff = 5;
- clipboard = {
- providers.wl-copy.enable = true;
- register = "unnamedplus";
+ };
};
};
};