{ pkgs, lib, config, ... }: let cfg = config.snowhawk.neovim; in { options.snowhawk.neovim = { enable = lib.mkEnableOption "neovim"; package = lib.mkPackageOption pkgs "neovim" { default = [ "neovim-unwrapped" ]; }; # This should be close to identical to above # # package = lib.mkOption { # type = lib.types.package; # default = pkgs.neovim-unwrapped; # defaultText = lib.literalExpression "pkgs.neovim-unwrapped"; # description = "The package to use for the neovim binary."; # }; }; config = lib.mkIf cfg.enable { programs.neovim = let nvim-treesitter = pkgs.vimPlugins.nvim-treesitter; treesitterWithGrammars = nvim-treesitter.withPlugins (_: nvim-treesitter.allGrammars); treesitter-parsers = pkgs.symlinkJoin { name = "treesitter-parsers"; paths = treesitterWithGrammars.dependencies; }; in { enable = true; coc.enable = false; package = cfg.package; withNodeJs = true; withPython3 = true; withRuby = true; # TODO: nvim config nix import extraLuaConfig = '' -- bootstrap lazy.nvim, LazyVim and your plugins require("config.lazy") vim.g.editorconfig = true vim.opt.runtimepath:append ("${treesitter-parsers}") ''; plugins = [ treesitterWithGrammars ]; extraPackages = with pkgs; [ nil nixpkgs-fmt rustup lua-language-server ]; }; }; }