{ config, lib, pkgs, ... }: with lib; with lib.my; let cfg = config.modules.editors.neovim; in { options.modules.editors.neovim = { enable = mkBoolOpt false; }; config = mkIf cfg.enable { user.packages = with pkgs; [ (neovim.override { configure = { packages.myPlugins = with pkgs.vimPlugins; { start = [ (nvim-treesitter.withPlugins ( plugins: with plugins; [ bash c cmake cpp css dockerfile elm glsl graphql haskell http html java javascript jsdoc json json5 latex lua markdown ninja nix org perl php pug python regex rst ruby rust scala scss toml tsx typescript vim yaml zig ] )) ]; }; }; }) ]; home.configFile = { "nvim/init.lua" = { source = ./init.lua; }; "nvim/lua" = { source = ./lua; recursive = true; }; }; env.EDITOR = "nvim"; environment.shellAliases = { vim = "nvim"; v = "nvim"; }; }; }