feat(docs): Add neovim module documentation
This commit is contained in:
parent
d47b04a887
commit
db8bae6f31
5 changed files with 132 additions and 121 deletions
192
nvim/default.nix
192
nvim/default.nix
|
@ -1,90 +1,112 @@
|
|||
{ pkgs, ... }: {
|
||||
{ pkgs, config, lib, ... }:
|
||||
let
|
||||
cfg = config.jhome.nvim;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./options.nix
|
||||
];
|
||||
|
||||
programs.nixneovim = {
|
||||
enable = true;
|
||||
package = pkgs.neovim-nightly;
|
||||
defaultEditor = true;
|
||||
colorschemes.gruvbox-nvim = {
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.nixneovim = {
|
||||
enable = true;
|
||||
bold = true;
|
||||
transparentBg = true;
|
||||
trueColor = true;
|
||||
package = pkgs.neovim-nightly;
|
||||
defaultEditor = true;
|
||||
globals.mapleader = " ";
|
||||
# Appearance
|
||||
colorschemes.gruvbox-nvim.enable = true;
|
||||
colorschemes.gruvbox-nvim.bold = true;
|
||||
colorschemes.gruvbox-nvim.transparentBg = true;
|
||||
colorschemes.gruvbox-nvim.trueColor = true;
|
||||
options.number = true;
|
||||
options.relativenumber = true;
|
||||
options.colorcolumn = "+1";
|
||||
options.cursorline = true;
|
||||
options.wrap = false;
|
||||
options.splitright = true;
|
||||
# Tabs & indentation
|
||||
options.smarttab = true;
|
||||
options.autoindent = true;
|
||||
options.smartindent = true;
|
||||
# Search path
|
||||
options.path = ".,/usr/include,**";
|
||||
options.wildmenu = true;
|
||||
options.hlsearch = true;
|
||||
options.incsearch = true;
|
||||
options.ignorecase = true; # Search ignores cases
|
||||
options.smartcase = true; # Unless it has a capital letter
|
||||
# Enable local configuration :h 'exrc'
|
||||
options.exrc = true; # safe since nvim 0.9
|
||||
plugins = import ./plugins;
|
||||
mappings = import ./mappings.nix;
|
||||
augroups = import ./augroups.nix;
|
||||
extraPlugins =
|
||||
(with pkgs.vimExtraPlugins; [ dressing-nvim rustaceanvim idris2-nvim nui-nvim nvim-lint ])
|
||||
++ (with pkgs.vimPlugins; [ lualine-lsp-progress nvim-web-devicons FTerm-nvim cmp-cmdline formatter-nvim ]);
|
||||
# Formatting
|
||||
extraPackages = with pkgs; [ stylua shfmt taplo yamlfmt nixpkgs-fmt ];
|
||||
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").nixpkgs-fmt },
|
||||
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
|
||||
'';
|
||||
};
|
||||
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
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,22 +1,3 @@
|
|||
{
|
||||
# Appearance
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
colorcolumn = "+1";
|
||||
cursorline = true;
|
||||
wrap = false;
|
||||
splitright = true;
|
||||
# Tabs & indentation
|
||||
smarttab = true;
|
||||
autoindent = true;
|
||||
smartindent = true;
|
||||
# Search path
|
||||
path = ".,/usr/include,**";
|
||||
wildmenu = true;
|
||||
hlsearch = true;
|
||||
incsearch = true;
|
||||
ignorecase = true; # Search ignores cases
|
||||
smartcase = true; # Unless it has a capital letter
|
||||
# Enable local configuration :h 'exrc'
|
||||
exrc = true; # safe since nvim 0.9
|
||||
{ lib, ... }: {
|
||||
options.jhome.nvim.enable = lib.mkEnableOption "jalil's neovim configuration" // { default = true; example = false; };
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue