{ config, pkgs, rice, ... }: let toLua = str: "lua << EOF\n${str}\nEOF\n"; toLuaFile = file: "lua << EOF\n${builtins.readFile file}\nEOF\n"; in { programs.neovim = { enable = true; viAlias = true; vimAlias = true; vimdiffAlias = true; extraPackages = with pkgs; [ lua-language-server # rnix-lsp xclip wl-clipboard ]; plugins = with pkgs.vimPlugins; [ { plugin = nvim-lspconfig; config = toLuaFile ./nvim-lua/plugin/lsp.lua; } { plugin = comment-nvim; config = toLua ''require("Comment").setup()''; } { plugin = gruvbox-nvim; config = "colorscheme gruvbox"; } neodev-nvim nvim-cmp { plugin = nvim-cmp; config = toLuaFile ./nvim-lua/plugin/cmp.lua; } { plugin = telescope-nvim; config = toLuaFile ./nvim-lua/plugin/telescope.lua; } telescope-fzf-native-nvim cmp_luasnip cmp-nvim-lsp luasnip friendly-snippets lualine-nvim nvim-web-devicons { plugin = (nvim-treesitter.withPlugins (p: [ p.tree-sitter-nix p.tree-sitter-vim p.tree-sitter-bash p.tree-sitter-lua p.tree-sitter-python p.tree-sitter-json ])); config = toLuaFile ./nvim-lua/plugin/treesitter.lua; } vim-nix # { # plugin = vimPlugins.own-onedark-nvim; # config = "colorscheme onedark"; # } ]; extraLuaConfig = '' ${builtins.readFile ./nvim-lua/options.lua} ''; # extraLuaConfig = '' # ${builtins.readFile ./nvim-lua/options.lua} # ${builtins.readFile ./nvim-lua/plugin/lsp.lua} # ${builtins.readFile ./nvim-lua/plugin/cmp.lua} # ${builtins.readFile ./nvim-lua/plugin/telescope.lua} # ${builtins.readFile ./nvim-lua/plugin/treesitter.lua} # ${builtins.readFile ./nvim-lua/plugin/other.lua} # ''; }; }