From 8722626a35c21119e4fbaf5b192445e31f052745 Mon Sep 17 00:00:00 2001 From: Yadunand Prem Date: Tue, 27 Aug 2024 17:03:16 -0400 Subject: [PATCH] feat: add neovim --- modules/neovim.nix | 138 ++++++++++++++++++++++++++++++++++++++++--- yadunut-mba/home.nix | 15 ++++- yadunut-mbp/home.nix | 2 - 3 files changed, 143 insertions(+), 12 deletions(-) diff --git a/modules/neovim.nix b/modules/neovim.nix index 428399f..da2da5c 100644 --- a/modules/neovim.nix +++ b/modules/neovim.nix @@ -1,14 +1,134 @@ -{ config, pkgs, ... }: +{ config, pkgs, inputs, ... }: { - programs.neovim = { + imports = [ + inputs.nixvim.homeManagerModules.nixvim + ]; + programs.nixvim = { enable = true; defaultEditor = true; - viAlias = true; - vimAlias = true; - # extraLuaConfig = '' ''; - # extraPackages = [ ]; + colorschemes.gruvbox.enable = true; + extraPlugins = [ pkgs.vimPlugins.todo-txt-vim ]; + plugins = { + oil.enable = true; + neogit.enable = true; + lsp = { + enable = true; + servers = { + tsserver.enable = true; # TS/JS + pyright.enable = true; # Python + biome.enable = true; # TS/JS + }; + keymaps.lspBuf = { + gd = { action = "definition"; desc = "Goto Definition"; }; + gr = { action = "references"; desc = "Goto References"; }; + gD = { action = "declaration"; desc = "Goto Declaration"; }; + gI = { action = "implementation"; desc = "Goto Implementation"; }; + gT = { action = "type_definition"; desc = "Type Definition"; }; + K = { action = "hover"; desc = "Hover"; }; + "rn" = { action = "rename"; desc = "Rename"; }; + }; + keymaps.extra = [ + { action.__raw = "vim.lsp.buf.code_action"; key = "la"; } + { action.__raw = "function() vim.lsp.buf.format { async = true } end"; key = "lf"; } + ]; + keymaps.diagnostic = { + "cd" = { + action = "open_float"; + desc = "Line Diagnostics"; + }; + "[d" = { + action = "goto_next"; + desc = "Next Diagnostic"; + }; + "]d" = { + action = "goto_prev"; + desc = "Previous Diagnostic"; + }; + }; + }; + trouble.enable = true; + cmp = { + enable = true; + autoEnableSources = true; + settings = { + sources = [ + { name = "nvim_lsp"; } + { name = "emoji"; } + { name = "emoji"; } + { name = "buffer"; option.get_bufnrs.__raw = "vim.api.nvim_list_bufs"; keywordLength = 3; } + { name = "path"; keywordLength = 3; } + { name = "luasnip"; keywordLength = 3; } + ]; + window = { + completion = { border = "solid"; }; + documentation = { border = "solid"; }; + }; + mapping = { + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.abort()"; + "" = "cmp.mapping.scroll_docs(-4)"; + "" = "cmp.mapping.scroll_docs(4)"; + "" = "cmp.mapping.complete()"; + "" = "cmp.mapping.confirm({ select = true })"; + "" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })"; + }; + }; + }; + cmp-nvim-lsp.enable = true; + cmp-buffer.enable = true; + cmp-path.enable = true; + cmp_luasnip.enable = true; + cmp-cmdline.enable = true; + + luasnip.enable = true; + + treesitter = { + enable = true; + folding = true; + settings = { + ensure_installed = "all"; + highlight.enable = true; + indent.enable = true; + }; + }; + which-key.enable = true; + ts-autotag.enable = true; + telescope = { + enable = true; + extensions.fzf-native.enable = true; + }; + }; + opts = { + number = true; + relativenumber = true; + signcolumn = "yes"; + undofile = true; + ignorecase = true; + smartcase = true; + swapfile = false; + foldlevel = 9; + smartindent = true; + tabstop = 2; + shiftwidth = 2; + softtabstop = 0; + expandtab = true; + smarttab = true; + scrolloff = 5; + }; + globals = { + mapleader = " "; + maplocalleader = " "; + }; + keymaps = [ + { action = ":"; key = ";"; mode = [ "n" ]; } + { action = "Telescope find_files"; key = ""; options.desc = "Find Files"; } + { action = "Telescope live_grep"; key = "fg"; options.desc = "Grep";} + { action = "Telescope buffers"; key = "fb"; options.desc = "Find Buffers";} + { action = "gj"; key = "j"; mode = [ "n" ]; } + { action = "gk"; key = "k"; mode = [ "n" ]; } + { action = "Trouble diagnostics toggle"; key = "tr"; } + { action = "Neogit"; key = "gg"; options.desc = "Open Git"; } + ]; }; - home.packages = [ - pkgs.nil - ]; } diff --git a/yadunut-mba/home.nix b/yadunut-mba/home.nix index 47cb4e1..43ecd42 100644 --- a/yadunut-mba/home.nix +++ b/yadunut-mba/home.nix @@ -26,12 +26,14 @@ home.packages = [ pkgs.lazygit pkgs.jq + pkgs.todo-txt-cli pkgs.wezterm pkgs.raycast pkgs.cocoapods pkgs.tailscale pkgs.entr + pkgs.vscode # # Adds the 'hello' command to your environment. It prints a friendly # # "Hello, world!" when run. # pkgs.hello @@ -82,8 +84,19 @@ # /etc/profiles/per-user/yadunut/etc/profile.d/hm-session-vars.sh # home.sessionVariables = { - # EDITOR = "emacs"; + JAVA_HOME="/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home"; + ANDROID_HOME="$HOME/Library/Android/sdk"; + EDITOR="nvim"; + VISUAL="nvim"; }; + home.sessionPath = [ + "$ANDROID_HOME/emulator" + "$ANDROID_HOME/platform-tools" + ]; + programs.zsh.shellAliases = { + lg = "lazygit"; + }; + programs.direnv = { enable = true; enableZshIntegration = true; diff --git a/yadunut-mbp/home.nix b/yadunut-mbp/home.nix index ef4b2d6..11a500e 100644 --- a/yadunut-mbp/home.nix +++ b/yadunut-mbp/home.nix @@ -38,8 +38,6 @@ pkgs.pyright pkgs.yt-dlp pkgs.rsync - - pkgs.wezterm # Neovim deps # pkgs.texlab # pkgs.efm-langserver