{ config, pkgs, lib, nvim-theme-src, ... }: let inherit (config.vars) neovimIde; inherit (lib) fileContents optionals; inherit (pkgs) vimPlugins; in { programs = { neovim = { extraPackages = with pkgs; [ bat ]; plugins = [ { plugin = vimPlugins.dracula-nvim.overrideAttrs { src = nvim-theme-src; }; type = "lua"; config = /* lua */ '' -- set dot icon in place of trailing whitespaces vim.cmd[[set list listchars=tab:\ \ ,nbsp:␣,trail:•,extends:⟩,precedes:⟨]] -- Add visual indicator for trailing whitespaces vim.opt.fillchars = {eob = " "} vim.cmd[[colorscheme dracula]] ''; } { plugin = vimPlugins.indent-blankline-nvim; type = "lua"; config = fileContents ./plugins/indent.lua; } ] ++ optionals neovimIde [ { plugin = vimPlugins.lualine-nvim; type = "lua"; config = /* lua */ '' require('lualine').setup({ options = { theme = 'dracula', globalstatus = true, }, sections = { lualine_x = { 'g:coc_status', 'bo:filetype' }, }, }); ''; } { plugin = vimPlugins.neo-tree-nvim; type = "viml"; config = '' ${fileContents ./plugins/neotree.vim} lua << EOF ${fileContents ./plugins/neotree.lua} EOF ''; } ]; }; }; }