{ config, lib, pkgs, ...}: let cfg = config.modules.neovim; scheme = config.modules.scheme; in { options.modules.neovim = { enable = lib.mkEnableOption "neovim"; }; config = lib.mkIf cfg.enable { xdg.configFile."nvim/lua" = { source = ./nvim/lua; recursive = true; }; xdg.configFile."nvim/after" = { source = ./nvim/after; recursive = true; }; programs.neovim = { enable = true; defaultEditor = true; viAlias = true; vimAlias = true; vimdiffAlias = true; plugins = with pkgs.vimPlugins; [ (nvim-treesitter.withPlugins (p: with p; [ tree-sitter-nix tree-sitter-c tree-sitter-cpp tree-sitter-lua tree-sitter-zig tree-sitter-rust tree-sitter-toml tree-sitter-markdown tree-sitter-markdown-inline ])) { plugin = lean-nvim; config = '' require('lean').setup{ mappings = true } ''; type = "lua"; } plenary-nvim nvim-lspconfig base16-nvim telescope-nvim telescope-fzf-native-nvim vim-obsession ]; # extraLuaPackages = ps: with ps; [ # ]; extraLuaConfig = '' vim.cmd[[colorscheme ${scheme.name}]] ${builtins.readFile ./nvim/init.lua} vim.cmd[[${scheme.extraVimConfig}]] vim.cmd[[ hi StatusLineNC guibg=none guifg=#4c4c4c hi StatusLine guibg=none guifg=#8f8aac ]] ''; }; }; }