aboutsummaryrefslogtreecommitdiffstats
path: root/modules/programs/nixvim/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/programs/nixvim/default.nix')
-rw-r--r--modules/programs/nixvim/default.nix83
1 files changed, 83 insertions, 0 deletions
diff --git a/modules/programs/nixvim/default.nix b/modules/programs/nixvim/default.nix
new file mode 100644
index 0000000..1a66b47
--- /dev/null
+++ b/modules/programs/nixvim/default.nix
@@ -0,0 +1,83 @@
+{ config, lib, ... }:
+
+# Nixvim - Neovim configured through Nix (home-manager integration)
+{
+ imports = [
+ ./colorscheme.nix
+ ./keymaps.nix
+ ./plugins
+ ];
+
+ options.programs.nixvim = {
+ enable = lib.mkEnableOption "Enables nixvim.";
+ };
+
+ config = lib.mkIf config.programs.nixvim.enable {
+ programs.nixvim = {
+ defaultEditor = true;
+ opts = {
+ number = true;
+ relativenumber = true;
+ shiftwidth = 2;
+ tabstop = 2;
+ softtabstop = 2;
+ expandtab = true;
+ list = true;
+ laststatus = 3;
+ foldlevel = 99;
+ clipboard = "unnamedplus";
+ };
+ clipboard.providers.xclip.enable = true;
+ extraConfigLuaPre = with config.scheme.withHashtag; ''
+ vim.opt.fillchars:append({ eob = " " })
+ vim.opt.listchars = { tab = " ", trail = "_", lead = " " }
+ vim.api.nvim_set_hl(0, "WinSeparator", {
+ fg = "${base01}",
+ bg = "${base00}",
+ })
+ vim.api.nvim_set_hl(0, 'NotifyERRORBorder', { fg = '${base08}' })
+ vim.api.nvim_set_hl(0, 'NotifyWARNBorder', { fg = '${base09}' })
+ vim.api.nvim_set_hl(0, 'NotifyINFOBorder', { fg = '${base0B}' })
+ vim.api.nvim_set_hl(0, 'NotifyDEBUGBorder', { fg = '${base03}' })
+ vim.api.nvim_set_hl(0, 'NotifyTRACEBorder', { fg = '${base0E}' })
+
+ vim.api.nvim_set_hl(0, 'NotifyERRORIcon', { fg = '${base08}' })
+ vim.api.nvim_set_hl(0, 'NotifyWARNIcon', { fg = '${base09}' })
+ vim.api.nvim_set_hl(0, 'NotifyINFOIcon', { fg = '${base0B}' })
+ vim.api.nvim_set_hl(0, 'NotifyDEBUGIcon', { fg = '${base03}' })
+ vim.api.nvim_set_hl(0, 'NotifyTRACEIcon', { fg = '${base0E}' })
+
+ vim.api.nvim_set_hl(0, 'NotifyERRORTitle', { fg = '${base08}' })
+ vim.api.nvim_set_hl(0, 'NotifyWARNTitle', { fg = '${base09}' })
+ vim.api.nvim_set_hl(0, 'NotifyINFOTitle', { fg = '${base0B}' })
+ vim.api.nvim_set_hl(0, 'NotifyDEBUGTitle', { fg = '${base03}' })
+ vim.api.nvim_set_hl(0, 'NotifyTRACETitle', { fg = '${base0E}' })
+
+ vim.api.nvim_set_hl(0, 'NotifyERRORBody', { link = 'Normal' })
+ vim.api.nvim_set_hl(0, 'NotifyWARNBody', { link = 'Normal' })
+ vim.api.nvim_set_hl(0, 'NotifyINFOBody', { link = 'Normal' })
+ vim.api.nvim_set_hl(0, 'NotifyDEBUGBody', { link = 'Normal' })
+ vim.api.nvim_set_hl(0, 'NotifyTRACEBody', { link = 'Normal' })
+
+ vim.api.nvim_create_autocmd({ "FileType" }, {
+ pattern = { "yaml", "yml" },
+ callback = function()
+ vim.opt_local.expandtab = true
+ vim.opt_local.shiftwidth = 2
+ vim.opt_local.softtabstop = 2
+ vim.opt_local.tabstop = 2
+ end,
+ })
+ '';
+ performance = {
+ byteCompileLua.enable = true;
+ combinePlugins.enable = true;
+ };
+ };
+
+ home.sessionVariables = {
+ EDITOR = lib.mkForce (lib.getExe config.programs.nixvim.package);
+ MANPAGER = "${lib.getExe config.programs.nixvim.package} +Man!";
+ };
+ };
+}