summary refs log tree commit diff stats
path: root/user/settings
diff options
context:
space:
mode:
authorAlan Pearce2025-03-26 15:49:36 +0100
committerAlan Pearce2025-03-26 15:49:36 +0100
commit643cb57ea23dd39f357738d47530484800c77b8a (patch)
tree96505101fb888c235063dc6c8d48e12bf2ec9048 /user/settings
parent4d656564a8693818146ed8b59d7c9f81af21169d (diff)
downloadnixfiles-643cb57ea23dd39f357738d47530484800c77b8a.tar.lz
nixfiles-643cb57ea23dd39f357738d47530484800c77b8a.tar.zst
nixfiles-643cb57ea23dd39f357738d47530484800c77b8a.zip
neovim: use nixvim to manage plugins and configuration
Diffstat (limited to 'user/settings')
-rw-r--r--user/settings/development/base.nix10
-rw-r--r--user/settings/development/golang.nix7
-rw-r--r--user/settings/development/web.nix13
-rw-r--r--user/settings/development/zig.nix7
-rw-r--r--user/settings/neovim.nix143
-rw-r--r--user/settings/nix.nix7
6 files changed, 128 insertions, 59 deletions
diff --git a/user/settings/development/base.nix b/user/settings/development/base.nix
index 3954986b..39739695 100644
--- a/user/settings/development/base.nix
+++ b/user/settings/development/base.nix
@@ -58,6 +58,16 @@
     ]))
   ]);
 
+  programs.nixvim.plugins = {
+    lsp.servers = {
+      bashls.enable = true;
+      fish_lsp.enable = true;
+      taplo.enable = true;
+      docker_compose_language_service.enable = true;
+      dockerls.enable = true;
+    };
+  };
+
   editorconfig = {
     enable = true;
     settings = {
diff --git a/user/settings/development/golang.nix b/user/settings/development/golang.nix
index ef6cf412..2cd29685 100644
--- a/user/settings/development/golang.nix
+++ b/user/settings/development/golang.nix
@@ -37,7 +37,8 @@
       tree-sitter-templ
     ]))
   ]);
-  programs.neovim.plugins = with pkgs.vimPlugins; [
-    coc-go
-  ];
+  programs.nixvim.plugins.lsp.servers = {
+    gopls.enable = true;
+    golangci_lint_ls.enable = true;
+  };
 }
diff --git a/user/settings/development/web.nix b/user/settings/development/web.nix
index 0212d9fd..a32f5a21 100644
--- a/user/settings/development/web.nix
+++ b/user/settings/development/web.nix
@@ -8,6 +8,7 @@
     csslint
     stylelint
   ] ++ (with pkgs; [
+    emmet-language-server
     flyctl
     personal.htmlformat
   ]);
@@ -102,8 +103,12 @@
       tree-sitter-html
     ]))
   ]);
-  programs.neovim.plugins = with pkgs.vimPlugins; [
-    coc-css
-    coc-html
-  ];
+  programs.nixvim.plugins = {
+    lsp.servers = {
+      emmet_language_server.enable = true;
+      cssls.enable = true;
+      html.enable = true;
+      jsonls.enable = true;
+    };
+  };
 }
diff --git a/user/settings/development/zig.nix b/user/settings/development/zig.nix
index ac21267f..e3c78305 100644
--- a/user/settings/development/zig.nix
+++ b/user/settings/development/zig.nix
@@ -8,7 +8,8 @@
   programs.emacs.extraPackages = epkgs: (with epkgs; [
     zig-mode
   ]);
-  programs.neovim.plugins = with pkgs.vimPlugins; [
-    zig-vim
-  ];
+  programs.nixvim.plugins = {
+    zig.enable = true;
+    lsp.servers.zls.enable = true;
+  };
 }
diff --git a/user/settings/neovim.nix b/user/settings/neovim.nix
index dcee5fde..d04de0b8 100644
--- a/user/settings/neovim.nix
+++ b/user/settings/neovim.nix
@@ -1,58 +1,109 @@
-{ pkgs
+{ config
 , ...
-}: {
-  programs.neovim = {
+}:
+let
+  nixvim = import <nixvim>;
+in
+{
+  imports = [
+    nixvim.homeManagerModules.nixvim
+  ];
+
+  programs.nixvim = {
     enable = true;
     defaultEditor = true;
+
+    nixpkgs.config = config.nixpkgs.config;
+
     viAlias = true;
     vimAlias = true;
     vimdiffAlias = true;
-    withNodeJs = true;
-    plugins = with pkgs.vimPlugins; [
-      commentary
-      conjure
-      coc-git
-      coc-json
-      coc-yaml
-      direnv-vim
-      (nvim-treesitter.withPlugins (
-        plugins: with plugins; [
-          nix
-        ]
-      ))
-      telescope-nvim
-      telescope-fzf-native-nvim
-      vim-polyglot
-      vim-tridactyl
-      vim-surround
-    ];
-    extraLuaConfig = builtins.readFile ../nvim/init.lua;
-    coc = {
-      enable = true;
-      settings = {
-        "json.enable" = true;
-        languageserver = {
-          nix = {
-            command = "${pkgs.nil}/bin/nil";
-            filetypes = [ "nix" ];
-            rootPatterns = [ "flake.nix" ];
-            settings = {
-              coc.preferences.formatOnSaveFiletypes = [ "nix" ];
-              links.tooltip = true;
-              semanticTokens = {
-                filetypes = [ "nix" ];
-              };
-              nil = {
-                formatting.command = [ "nixpkgs-fmt" ];
-                nix.flake.autoArchive = true;
-              };
-            };
+
+    # withRuby = false;
+
+    clipboard.register = "unnamed";
+    opts = {
+      autoindent = true;
+      number = true;
+      relativenumber = true;
+      shiftwidth = 2;
+      background = "light";
+    };
+    globals.mapleader = ",";
+
+    colorscheme = "shine";
+
+    performance = {
+      byteCompileLua = {
+        enable = true;
+        nvimRuntime = true;
+        plugins = true;
+      };
+    };
+
+    plugins = {
+      blink-cmp = {
+        enable = true;
+        settings = {
+          keymap.preset = "super-tab";
+        };
+      };
+
+      mini = {
+        enable = true;
+        mockDevIcons = true;
+        modules.icons = {
+          style = "glyph";
+        };
+        modules.basics = { };
+      };
+
+      lsp = {
+        enable = true;
+        keymaps = {
+          lspBuf = {
+            gD = "references";
+            gd = "definition";
+            gi = "implementation";
+            gt = "type_definition";
           };
-          lua = {
-            command = "${pkgs.lua-language-server}/bin/lua-language-server";
-            filetypes = [ "lua" ];
+        };
+      };
+
+      direnv.enable = true;
+      friendly-snippets.enable = true;
+      nvim-snippets = {
+        enable = true;
+        settings.friendly_snippets = true;
+        luaConfig.post = ''
+          local capabilities = vim.lsp.protocol.make_client_capabilities()
+          capabilities.textDocument.completion.completionItem.snippetSupport = true
+
+          require'lspconfig'.cssls.setup {
+            capabilities = capabilities,
+          }
+        '';
+      };
+      nvim-surround.enable = true;
+      telescope = {
+        enable = true;
+        keymaps = {
+          "<leader>ff" = "find_files";
+          "<leader>fg" = "live_grep";
+          "<leader>bb" = "buffers";
+          "<leader>pf" = "git_files";
+          "<leader>fh" = "help_tags";
+        };
+        settings = {
+          mappings = {
+            i = {
+              "<C-h>" = "which_key";
+            };
           };
         };
+        extensions = {
+          fzf-native.enable = true;
+        };
       };
     };
   };
diff --git a/user/settings/nix.nix b/user/settings/nix.nix
index eaae1083..c0382078 100644
--- a/user/settings/nix.nix
+++ b/user/settings/nix.nix
@@ -37,7 +37,8 @@ in
     nix-mode
     nix-update
   ]);
-  programs.neovim.plugins = with pkgs.vimPlugins; [
-    vim-nix
-  ];
+  programs.nixvim.plugins = {
+    nix.enable = true;
+    lsp.servers.nixd.enable = true;
+  };
 }