88 lines
2.6 KiB
Nix

{ pkgs, ... }:
{
# Trailing spaces in status line
imports = [
./telescope.nix
];
programs.nixvim = {
colorscheme = "sonokai";
enable = true;
extraPlugins = [
pkgs.vimPlugins.indentLine
pkgs.vimPlugins.nvim-lspconfig
pkgs.vimPlugins.polyglot
pkgs.vimPlugins.sonokai
];
globals = {
mapleader = ",";
sonokai_style = "atlantis";
sonokai_disable_italic_comment = 1;
};
keymaps = [
{
key = "<leader>rm";
action = "<cmd>RenderMarkdown toggle<CR>";
}
];
opts = {
colorcolumn = "88";
cursorline = true;
number = true;
spell = true;
termguicolors = true;
textwidth = 80;
};
plugins = {
cmp = {
enable = true; # Completion
autoEnableSources = true;
settings.sources = [
{ name = "nvim_lsp"; }
{ name = "path"; }
{ name = "buffer"; }
];
settings.mapping = {
"<C-d>" = "cmp.mapping.scroll_docs(-2)";
"<C-f>" = "cmp.mapping.scroll_docs(2)";
"<C-Space>" = "cmp.mapping.complete()";
"<C-e>" = "cmp.mapping.close()";
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item({behavior = cmp.SelectBehavior.Select}), {'i', 's'})";
"<S-Tab>" = "cmp.mapping(cmp.mapping.select_prev_item({behavior = cmp.SelectBehavior.Select}), {'i', 's'})";
"<CR>" = "cmp.mapping.confirm({ select = false, behavior = cmp.ConfirmBehavior.Replace })";
};
};
committia.enable = true; # Enhanced git commits
gitgutter.enable = true; # Show git change in first line
guess-indent.enable = true; # Guess indent of the file
lsp.enable = true;
lsp.servers.pylsp = {
enable = true;
settings.plugins = {
black.enabled = true;
isort.enabled = true;
ruff.enabled = true;
ruff.formatEnabled = false;
};
};
lsp.servers.bashls.enable = true;
lsp.servers.gopls.enable = true;
lsp.servers.nixd.enable = true;
lsp.servers.terraformls = {
enable = true;
rootDir = "require('lspconfig.util').root_pattern('.git', '.terraform')";
};
lsp.servers.tflint.enable = true;
lsp.servers.yamlls.enable = true;
lsp-format.enable = true; # Automatically format on save
lsp-lines.enable = true; # Display LSP hints in lines
lsp-signature.enable = true; # Show function signature when typing
lualine.enable = true; # Status line
render-markdown.enable = true;
treesitter.enable = true;
web-devicons.enable = true;
};
};
}