nix-config/modules/nvim/default.nix
Jet Pham f4f9a00296 uh
2024-07-04 05:19:21 +00:00

97 lines
2.9 KiB
Nix

{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.nvim;
# Source my theme
jabuti-nvim = pkgs.vimUtils.buildVimPlugin {
name = "jabuti-nvim";
src = pkgs.fetchFromGitHub {
owner = "jabuti-theme";
repo = "jabuti-nvim";
rev = "17f1b94cbf1871a89cdc264e4a8a2b3b4f7c76d2";
sha256 = "sha256-iPjwx/rTd98LUPK1MUfqKXZhQ5NmKx/rN8RX1PIuDFA=";
};
};
in {
options.modules.nvim = { enable = mkEnableOption "nvim"; };
config = mkIf cfg.enable {
home.file.".config/nvim/settings.lua".source = ./init.lua;
home.packages = with pkgs; [
nixfmt # Nix
sumneko-lua-language-server stylua # Lua
];
programs.nushell = {
initExtra = ''
export EDITOR="nvim"
'';
shellAliases = {
v = "nvim -i NONE";
nvim = "nvim -i NONE";
};
};
programs.neovim = {
enable = true;
plugins = with pkgs.vimPlugins; [
vim-nix
plenary-nvim
{
plugin = zk-nvim;
config = "require('zk').setup()";
}
{
plugin = jabuti-nvim;
config = "colorscheme jabuti";
}
{
plugin = impatient-nvim;
config = "lua require('impatient')";
}
{
plugin = lualine-nvim;
config = "lua require('lualine').setup()";
}
{
plugin = telescope-nvim;
config = "lua require('telescope').setup()";
}
{
plugin = indent-blankline-nvim;
config = "lua require('indent_blankline').setup()";
}
{
plugin = nvim-lspconfig;
config = ''
lua << EOF
require('lspconfig').rust_analyzer.setup{}
require('lspconfig').sumneko_lua.setup{}
require('lspconfig').rnix.setup{}
require('lspconfig').zk.setup{}
EOF
'';
}
{
plugin = nvim-treesitter;
config = ''
lua << EOF
require('nvim-treesitter.configs').setup {
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
}
EOF
'';
}
];
extraConfig = ''
luafile ~/.config/nvim/settings.lua
'';
};
};
}