62 lines
1.3 KiB
Nix
62 lines
1.3 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let cfg = config.modules.neovim;
|
|
in {
|
|
options.modules.neovim = { enable = mkOption { default = false; }; };
|
|
|
|
config = mkIf cfg.enable {
|
|
programs = {
|
|
neovim = let
|
|
toLua = str: ''
|
|
lua << EOF
|
|
${str}
|
|
EOF
|
|
'';
|
|
in {
|
|
# https://www.youtube.com/watch?v=YZAnJ0rwREA
|
|
enable = true;
|
|
viAlias = true;
|
|
vimAlias = true;
|
|
# vimdiffAlias = true;
|
|
|
|
plugins = with pkgs.vimPlugins; [
|
|
{
|
|
plugin = dracula-nvim;
|
|
config = "colorscheme dracula";
|
|
}
|
|
{
|
|
plugin = comment-nvim;
|
|
config = toLua ''require("Comment").setup()'';
|
|
}
|
|
|
|
# nix file support
|
|
vim-nix
|
|
|
|
# Syntax highlighting
|
|
(nvim-treesitter.withPlugins (p: [
|
|
p.tree-sitter-nix
|
|
p.tree-sitter-vim
|
|
p.tree-sitter-bash
|
|
p.tree-sitter-lua
|
|
p.tree-sitter-python
|
|
p.tree-sitter-json
|
|
p.tree-sitter-cpp
|
|
p.tree-sitter-rust
|
|
]))
|
|
];
|
|
|
|
extraConfig = ''
|
|
set clipboard=unnamedplus
|
|
'';
|
|
|
|
extraLuaConfig = ''
|
|
vim.o.termguicolors = true
|
|
'';
|
|
|
|
};
|
|
};
|
|
};
|
|
}
|