{ config, lib, pkgs, user, theme, ... }: let cmp-nvim-lsp-signature-help = pkgs.vimUtils.buildVimPlugin { name = "cmp-nvim-lsp-signature-help"; version = "2023-02-27"; src = pkgs.fetchFromGitHub { owner = "hrsh7th"; repo = "cmp-nvim-lsp-signature-help"; rev = "3d8912ebeb56e5ae08ef0906e3a54de1c66b92f1"; sha256 = "sha256-yDxYvjTIeXIKYR3tg+bf+okXKr5JYc/I9obP+6uKey4="; }; meta.homepage = "https://github.com/hrsh7th/cmp-nvim-lsp-signature-help"; }; lsp_lines-nvim = pkgs.vimUtils.buildVimPlugin { name = "lsp_lines.nvim"; version = "2023-02-27"; src = pkgs.fetchgit { url = "https://git.sr.ht/~whynothugo/lsp_lines.nvim"; rev = "ec98b45c8280e5ef8c84028d4f38aa447276c002"; sha256 = "sha256-HjLCfuvZZ7vTJT0Te5VBRLNWvWIBFBou1Mvoxe2Hi3c="; }; meta.homepage = "https://git.sr.ht/~whynothugo/lsp_lines.nvim"; }; pre-commit-nvim = pkgs.vimUtils.buildVimPlugin { name = "pre-commit.nvim"; version = "2022-08-05"; src = pkgs.fetchgit { url = "https://github.com/Ttibsi/pre-commit.nvim"; rev = "4a608cef0f0a196fa39cdc60579eb9cf601d21c4"; sha256 = "Y0biF/yrOX1YYztj8/u0n8zPN4YLGLSQL3vb9I3+3dE="; }; meta.homepage = "https://github.com/Ttibsi/pre-commit.nvim"; }; vim-flog = pkgs.vimUtils.buildVimPlugin { name = "vim-flog"; version = "2023-01-24"; src = pkgs.fetchgit { url = "https://github.com/rbong/vim-flog"; rev = "2ba8af2c9682e3560db5b813d10acf3ba3415bc1"; sha256 = "sha256-xnzHAc30DD9W9/5s8PvpuBaEUJbB4BJ7WqbNb/CY3mY="; }; meta.homepage = "https://github.com/rbong/vim-flog/"; }; in { home.packages = with pkgs.unstable; [ xclip # language servers lua-language-server rnix-lsp terraform-ls tflint rust-analyzer nodejs nodePackages.bash-language-server nodePackages.yaml-language-server nodePackages.prettier nodePackages.eslint_d nodePackages.typescript-language-server nodePackages.typescript nodePackages.dockerfile-language-server-nodejs nodePackages.vscode-html-languageserver-bin lldb vscode-extensions.vadimcn.vscode-lldb ]; # symlink for a stable path home.file.".vscode-extensions/vscode-lldb".source = pkgs.unstable.vscode-extensions.vadimcn.vscode-lldb; home.sessionVariables = { EDITOR = "nvim"; }; programs = { neovim = { enable = true; # package = pkgs.unstable.neovim; plugins = with pkgs.unstable.vimPlugins; [ # theme nvim-solarized-lua delimitMate vim-bbye ansible-vim # ui dressing-nvim # session handling project-nvim auto-session nvim-treesitter.withAllGrammars markdown-preview-nvim # use({ "iamcco/markdown-preview.nvim", run = ":call mkdp#util#install()" }) toggleterm-nvim nvim-notify comment-nvim lualine-nvim tabline-nvim indent-blankline-nvim plenary-nvim vim-illuminate registers-nvim pre-commit-nvim # git gitsigns-nvim vim-fugitive vim-flog git-blame-nvim nvim-web-devicons # used by diffview-nvim # snippets friendly-snippets luasnip # auto-completion nvim-cmp cmp-nvim-lsp cmp-buffer cmp-path cmp-cmdline cmp-nvim-lua cmp_luasnip cmp-calc cmp-nvim-lsp-signature-help # telescope telescope-nvim telescope-fzf-native-nvim telescope-ui-select-nvim telescope-file-browser-nvim # LSP nvim-lspconfig lsp-status-nvim rust-tools-nvim neodev-nvim null-ls-nvim lsp_lines-nvim # debugging nvim-dap nvim-dap-ui ]; extraConfig = '' lua << EOF vim.o.guifont = "DejaVu Sans Mono:h10" if vim.g.neovide then vim.g.neovide_fullscreen = true vim.g.neovide_cursor_animation_length = 0.01 vim.g.neovide_cursor_trail_length = 0.01 end ${builtins.readFile ./keymaps.lua } ${builtins.readFile ./options.lua } ${builtins.readFile ./treesitter.lua } ${builtins.readFile ./lspconfig.lua } ${builtins.readFile ./toggleterm.lua } ${builtins.readFile ./notify.lua } ${builtins.readFile ./comment.lua } ${builtins.readFile ./lualine.lua } ${builtins.readFile ./tabline.lua } ${builtins.readFile ./indent-blankline.lua } ${builtins.readFile ./gitsigns.lua } ${builtins.readFile ./luasnip.lua } ${builtins.readFile ./nvim-cmp.lua } ${builtins.readFile ./telescope.lua } ${builtins.readFile ./themes.lua } vim.opt.background = '${theme}' ${builtins.readFile ./project-nvim.lua } ${builtins.readFile ./dap.lua } vim.g.gitblame_date_format = "%r" EOF ''; }; }; }