nixos-config/users/simon/modules/neovim/default.nix

122 lines
2.8 KiB
Nix

# SPDX-FileCopyrightText: 2020-2024 Simon Bruder <simon@sbruder.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
{ config, lib, nixosConfig, pkgs, ... }:
let
rainbow_csv = pkgs.vimUtils.buildVimPlugin rec {
name = "rainbow_csv";
src = pkgs.fetchFromGitHub {
owner = "mechatroner";
repo = name;
rev = "df89266d6c03479def77793fd7a0a651986865a5";
sha256 = "0c9b1r49vw6r3yhm6g02janyxw6d9j6bkjmv8zpdav46avmk74fh";
};
meta.license = lib.licenses.mit;
};
vim-openscad = pkgs.vimUtils.buildVimPlugin rec {
name = "vim-openscad";
src = pkgs.fetchFromGitHub {
owner = "sirtaj";
repo = name;
rev = "81db508b1888fdbea994d43ccef1acd86c8af3f7";
sha256 = "1wcdfayjpb9h0lzwdi5nda4c0ch263fdr0379l9k1gf47bgq9cx2";
};
meta.license = lib.licenses.publicDomain;
};
Vim-Jinja2-Syntax = pkgs.vimUtils.buildVimPlugin rec {
name = "Vim-Jinja2-Syntax";
src = pkgs.fetchFromGitHub {
owner = "Glench";
repo = name;
rev = "5d2496eb5fd4415c7ce062ccbcd53a3f0de93aa3";
sha256 = "1ss065b2psalli46bs3v13fhaplqydh13bg3jg3zr98wbdn70cws";
};
meta.license = lib.licenses.bsd3;
};
in
{
programs.neovim = {
enable = true;
package = pkgs.neovim-unwrapped;
vimAlias = true;
extraConfig = ''
lua require('init')
'';
extraPackages = with pkgs; [
unzip # zip.vim
] ++ (lib.optionals nixosConfig.sbruder.full [
ccls
gopls
haskell-language-server
jdt-language-server
unstable.ltex-ls
nixd
rust-analyzer
(python3.withPackages (ps: with ps; [
pyls-isort
pylsp-mypy
python-lsp-black
python-lsp-server
# pylsp optional dependencies
flake8
mccabe
pycodestyle
pydocstyle
pyflakes
pylint
]))
universal-ctags
]);
plugins = with pkgs.vimPlugins; [
Vim-Jinja2-Syntax
cmp-buffer
cmp-nvim-lsp
cmp-path
cmp_luasnip
diffview-nvim
editorconfig-nvim
friendly-snippets
gitsigns-nvim
lspkind-nvim
lualine-lsp-progress
lualine-nvim
luasnip
neogit
nvim-cmp
nvim-jdtls
nvim-lspconfig
nvim-solarized-lua
nvim-treesitter.withAllGrammars
nvim-web-devicons
plantuml-syntax
plenary-nvim
rainbow_csv
rust-vim
tagbar
telescope-nvim
telescope-ui-select-nvim
trouble-nvim
vim-fugitive
vim-illuminate
vim-markdown
vim-nftables
vim-openscad
vim-snippets
vimtex
which-key-nvim
];
};
xdg.configFile = {
"nvim/lua/init.lua".source = ./init.lua;
"nvim/lua/snippets.lua".source = pkgs.callPackage ./snippets.nix { };
};
home.sessionVariables.EDITOR = "nvim";
}