configuration.nix/nvim/default.nix

91 lines
2.9 KiB
Nix
Raw Normal View History

{ pkgs, ... }: {
programs.nixneovim = {
enable = true;
package = pkgs.neovim-nightly;
defaultEditor = true;
colorschemes.gruvbox-nvim = {
enable = true;
bold = true;
transparentBg = true;
trueColor = true;
};
globals.mapleader = " ";
options = import ./options.nix;
plugins = import ./plugins;
mappings = import ./mappings.nix;
augroups = import ./augroups.nix;
extraPlugins = builtins.attrValues {
inherit (pkgs.vimExtraPlugins) dressing-nvim rustaceanvim idris2-nvim nui-nvim nvim-lint;
inherit (pkgs.vimPlugins) lualine-lsp-progress nvim-web-devicons FTerm-nvim cmp-cmdline formatter-nvim;
};
# Formatting
extraPackages = builtins.attrValues {
# Formatters
inherit (pkgs) stylua shfmt taplo yamlfmt alejandra;
};
extraLuaPreConfig = ''
-- Lua Pre Config
if vim.fn.has 'termguicolors' then
-- Enable RGB colors
vim.g.termguicolors = true
end
-- Useful function
local has_words_before = function()
-- unpack = unpack or table.unpack
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0
and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match '%s' == nil
end
-- END: Lua Pre Config
'';
extraLuaPostConfig = ''
do -- Setup cmp-cmdline
local cmp = require "cmp"
cmp.setup.cmdline("/", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources { {name = "rg" }, { name = "buffer" } },
})
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({ { name = "path" } }, { { name = "cmdline" } })
})
end
do -- Setup dressing.nvim
-- require("dressing").setup()
end
do -- Setup formatter.nvim
-- local util = require "formatter.util"
require("formatter").setup {
logging = true,
log_level = vim.log.levels.WARN,
["*"] = { require("formatter.filetypes.any").remove_trailing_whitespace },
-- Filetype Formatting
c = { require("formatter.filetypes.c").clangformat },
sh = { require("formatter.filetypes.sh").shfmt },
cpp = { require("formatter.filetypes.cpp").clangformat },
lua = { require("formatter.filetypes.lua").stylua },
nix = { require("formatter.filetypes.nix").alejandra },
zig = { require("formatter.filetypes.zig").zigfmt },
rust = { require("formatter.filetypes.rust").rustfmt },
toml = { require("formatter.filetypes.toml").taplo },
yaml = { require("formatter.filetypes.yaml").yamlfmt },
}
end
do -- Setup idris2-nvim
require("idris2").setup { }
end
do -- Setup nvim-lint
require("lint").linters_by_ft = {
latex = { "chktex", "typos" },
}
end
'';
};
}