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

110 lines
2.7 KiB
Nix

{ config, lib, nixosConfig, pkgs, ... }:
let
rainbow_csv = pkgs.unstable.vimUtils.buildVimPluginFrom2Nix rec {
name = "rainbow_csv";
src = pkgs.fetchFromGitHub {
owner = "mechatroner";
repo = name;
rev = "df89266d6c03479def77793fd7a0a651986865a5";
sha256 = "0c9b1r49vw6r3yhm6g02janyxw6d9j6bkjmv8zpdav46avmk74fh";
};
meta.license = lib.licenses.mit;
};
vim-openscad = pkgs.unstable.vimUtils.buildVimPluginFrom2Nix rec {
name = "vim-openscad";
src = pkgs.fetchFromGitHub {
owner = "sirtaj";
repo = name;
rev = "81db508b1888fdbea994d43ccef1acd86c8af3f7";
sha256 = "1wcdfayjpb9h0lzwdi5nda4c0ch263fdr0379l9k1gf47bgq9cx2";
};
meta.license = lib.licenses.publicDomain;
};
Vim-Jinja2-Syntax = pkgs.unstable.vimUtils.buildVimPluginFrom2Nix 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.unstable.neovim-unwrapped;
vimAlias = true;
extraConfig = ''
lua require('init')
'';
extraPackages = with pkgs; [
unzip # zip.vim
] ++ (lib.optionals nixosConfig.sbruder.full [
gopls
haskell-language-server
rnix-lsp
rust-analyzer
# very ugly, but required to make non-yapf/autopep8 formatters work
((unstable.python3.override {
packageOverrides = _: prev: {
python-lsp-server = prev.python-lsp-server.override {
withAutopep8 = false;
withYapf = false;
};
};
}).withPackages (ps: with ps; [
pyls-isort
pylsp-mypy
python-lsp-black
python-lsp-server
]))
]);
plugins = with pkgs.unstable.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-lspconfig
nvim-solarized-lua
nvim-web-devicons
plenary-nvim
rainbow_csv
rust-vim
tagbar
telescope-nvim
trouble-nvim
vim-fugitive
vim-markdown
vim-nix
vim-openscad
vim-snippets
vim-toml
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";
}