mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2026-02-01 22:32:42 +00:00
refactor: restructure
This commit is contained in:
@@ -14,8 +14,6 @@
|
||||
pinentry = pkgs.pinentry-gnome3;
|
||||
};
|
||||
};
|
||||
git = import ./git.nix;
|
||||
nixvim = import ./nixvim { inherit pkgs; };
|
||||
gpg.enable = true;
|
||||
btop = {
|
||||
enable = true;
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
{ ... }:
|
||||
{
|
||||
enable = true;
|
||||
userName = "Thea Schöbl";
|
||||
userEmail = "dev@theaninova.de";
|
||||
signing = {
|
||||
key = "6C9E EFC5 1AE0 0131 78DE B9C8 68FF FB1E C187 88CA";
|
||||
signByDefault = true;
|
||||
};
|
||||
extraConfig = {
|
||||
pull.rebase = true;
|
||||
init.defaultBranch = "main";
|
||||
merge = {
|
||||
tool = "nvim-mergetool";
|
||||
conflictstyle = "diff3";
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "Thea Schöbl";
|
||||
userEmail = "dev@theaninova.de";
|
||||
signing = {
|
||||
key = "6C9E EFC5 1AE0 0131 78DE B9C8 68FF FB1E C187 88CA";
|
||||
signByDefault = true;
|
||||
};
|
||||
mergetool.nvim-mergetool = {
|
||||
cmd = # sh
|
||||
''nvim -f -c "MergetoolStart" "$MERGED" "$BASE" "$LOCAL" "$REMOTE"'';
|
||||
trustExitCode = true;
|
||||
extraConfig = {
|
||||
pull.rebase = true;
|
||||
init.defaultBranch = "main";
|
||||
merge = {
|
||||
tool = "nvim-mergetool";
|
||||
conflictstyle = "diff3";
|
||||
};
|
||||
mergetool.nvim-mergetool = {
|
||||
cmd = # sh
|
||||
''nvim -f -c "MergetoolStart" "$MERGED" "$BASE" "$LOCAL" "$REMOTE"'';
|
||||
trustExitCode = true;
|
||||
};
|
||||
mergetool.prompt = false;
|
||||
};
|
||||
mergetool.prompt = false;
|
||||
};
|
||||
}
|
||||
|
||||
116
modules/home-manager/programs/nixvim.nix
Normal file
116
modules/home-manager/programs/nixvim.nix
Normal file
@@ -0,0 +1,116 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
vimAlias = true;
|
||||
|
||||
opts = {
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
|
||||
tabstop = 2;
|
||||
softtabstop = 2;
|
||||
shiftwidth = 2;
|
||||
expandtab = true;
|
||||
smartindent = true;
|
||||
signcolumn = "yes";
|
||||
|
||||
scrolloff = 12;
|
||||
|
||||
hlsearch = false;
|
||||
incsearch = true;
|
||||
|
||||
updatetime = 50;
|
||||
|
||||
fillchars.eob = " ";
|
||||
};
|
||||
clipboard = {
|
||||
register = "unnamedplus";
|
||||
providers.wl-copy.enable = true;
|
||||
};
|
||||
globals.mapleader = ";";
|
||||
|
||||
presets = {
|
||||
auto-save.enable = true;
|
||||
auto-format.enable = true;
|
||||
harpoon.enable = false;
|
||||
lazygit.enable = true;
|
||||
mergetool.enable = true;
|
||||
trouble.enable = false;
|
||||
undotree.enable = true;
|
||||
aerial.enable = true;
|
||||
base = {
|
||||
completion = {
|
||||
enable = true;
|
||||
copilot = true;
|
||||
};
|
||||
diagnostics.enable = true;
|
||||
coverage.enable = true;
|
||||
find.enable = true;
|
||||
formatting = {
|
||||
enable = true;
|
||||
prettier = true;
|
||||
};
|
||||
spellcheck.enable = true;
|
||||
status-line.enable = true;
|
||||
syntax.enable = true;
|
||||
tree.enable = true;
|
||||
};
|
||||
languages = {
|
||||
angular.enable = true;
|
||||
c = {
|
||||
enable = true;
|
||||
};
|
||||
css = {
|
||||
enable = true;
|
||||
stylelint = true;
|
||||
};
|
||||
dart.enable = true;
|
||||
js = {
|
||||
enable = true;
|
||||
eslint = true;
|
||||
npm = true;
|
||||
};
|
||||
lua.enable = true;
|
||||
nix.enable = true;
|
||||
python.enable = true;
|
||||
rust.enable = true;
|
||||
shell.enable = true;
|
||||
svelte.enable = true;
|
||||
};
|
||||
remaps = {
|
||||
half-page-scroll.enable = true;
|
||||
no-accidental-macro.enable = true;
|
||||
paste-keep-buffer.enable = true;
|
||||
wrapped-line-nav.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
plugins = {
|
||||
vim-surround.enable = true;
|
||||
which-key.enable = true;
|
||||
schemastore.enable = true;
|
||||
comment.enable = true;
|
||||
debugprint.enable = true;
|
||||
todo-comments.enable = true;
|
||||
treesitter-context = {
|
||||
enable = false; # TODO: looks weird with Neovide
|
||||
settings = {
|
||||
line_numbers = false;
|
||||
};
|
||||
};
|
||||
|
||||
lsp.servers = {
|
||||
html.enable = true;
|
||||
svelte.enable = true;
|
||||
|
||||
dockerls.enable = true;
|
||||
|
||||
yamlls.enable = true;
|
||||
jsonls.enable = true;
|
||||
taplo.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
{ pkgs }:
|
||||
{
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
vimAlias = true;
|
||||
|
||||
opts = {
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
|
||||
tabstop = 2;
|
||||
softtabstop = 2;
|
||||
shiftwidth = 2;
|
||||
expandtab = true;
|
||||
smartindent = true;
|
||||
signcolumn = "yes";
|
||||
|
||||
scrolloff = 12;
|
||||
|
||||
hlsearch = false;
|
||||
incsearch = true;
|
||||
|
||||
updatetime = 50;
|
||||
|
||||
fillchars.eob = " ";
|
||||
};
|
||||
clipboard = {
|
||||
register = "unnamedplus";
|
||||
providers.wl-copy.enable = true;
|
||||
};
|
||||
globals.mapleader = ";";
|
||||
|
||||
presets = {
|
||||
auto-save.enable = true;
|
||||
auto-format.enable = true;
|
||||
# harpoon.enable = true;
|
||||
lazygit.enable = true;
|
||||
mergetool.enable = true;
|
||||
trouble.enable = true;
|
||||
undotree.enable = true;
|
||||
aerial.enable = true;
|
||||
base = {
|
||||
completion = {
|
||||
enable = true;
|
||||
copilot = true;
|
||||
};
|
||||
diagnostics.enable = true;
|
||||
coverage.enable = true;
|
||||
find.enable = true;
|
||||
formatting = {
|
||||
enable = true;
|
||||
prettier = true;
|
||||
};
|
||||
spellcheck.enable = false;
|
||||
status-line.enable = true;
|
||||
syntax.enable = true;
|
||||
tree.enable = true;
|
||||
};
|
||||
languages = {
|
||||
angular.enable = true;
|
||||
c = {
|
||||
enable = true;
|
||||
# cppcheck = true;
|
||||
};
|
||||
css = {
|
||||
enable = true;
|
||||
stylelint = true;
|
||||
};
|
||||
dart.enable = true;
|
||||
js = {
|
||||
enable = true;
|
||||
eslint = true;
|
||||
npm = true;
|
||||
};
|
||||
lua.enable = true;
|
||||
nix.enable = true;
|
||||
python.enable = true;
|
||||
rust.enable = true;
|
||||
shell.enable = true;
|
||||
svelte.enable = true;
|
||||
};
|
||||
remaps = {
|
||||
half-page-scroll.enable = true;
|
||||
no-accidental-macro.enable = true;
|
||||
paste-keep-buffer.enable = true;
|
||||
wrapped-line-nav.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
plugins = {
|
||||
vim-surround.enable = true;
|
||||
which-key.enable = true;
|
||||
schemastore.enable = true;
|
||||
comment.enable = true;
|
||||
debugprint.enable = true;
|
||||
todo-comments.enable = true;
|
||||
treesitter-context = {
|
||||
enable = false; # TODO: looks weird with Neovide
|
||||
settings = {
|
||||
line_numbers = false;
|
||||
};
|
||||
};
|
||||
|
||||
lsp.servers = {
|
||||
html.enable = true;
|
||||
svelte.enable = true;
|
||||
|
||||
dockerls.enable = true;
|
||||
|
||||
yamlls.enable = true;
|
||||
jsonls.enable = true;
|
||||
taplo.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.aerial;
|
||||
in
|
||||
{
|
||||
options.presets.aerial = {
|
||||
enable = lib.mkEnableOption "aerial";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
keymaps = [
|
||||
{
|
||||
key = "<C-Up>";
|
||||
action = # vim
|
||||
":AerialPrev<CR>";
|
||||
}
|
||||
{
|
||||
key = "<C-Down>";
|
||||
action = # vim
|
||||
":AerialNext<CR>";
|
||||
}
|
||||
{
|
||||
key = "fs";
|
||||
mode = "n";
|
||||
action = # vim
|
||||
":Telescope aerial<CR>";
|
||||
}
|
||||
];
|
||||
plugins = {
|
||||
aerial = {
|
||||
enable = true;
|
||||
settings = {
|
||||
autojump = true;
|
||||
highlight_on_jump = false;
|
||||
filter_kind = false;
|
||||
open_automatic = false;
|
||||
show_guides = true;
|
||||
backends = [
|
||||
"lsp"
|
||||
"treesitter"
|
||||
"markdown"
|
||||
"asciidoc"
|
||||
"man"
|
||||
];
|
||||
layout = {
|
||||
placement = "edge";
|
||||
direction = "right";
|
||||
};
|
||||
};
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "fs";
|
||||
group = "Symbols";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.auto-format;
|
||||
in
|
||||
{
|
||||
options.presets.auto-format = {
|
||||
enable = lib.mkEnableOption "auto-format";
|
||||
varName = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "disable_autoformat";
|
||||
};
|
||||
commandName = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "AutoFormatToggle";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
userCommands.${cfg.commandName}.command.__raw = # lua
|
||||
''
|
||||
function(args)
|
||||
if args.bang then
|
||||
vim.b.${cfg.varName} = not vim.b.${cfg.varName}
|
||||
else
|
||||
vim.g.${cfg.varName} = not vim.g.${cfg.varName}
|
||||
end
|
||||
local lualine, lib = pcall(require, 'lualine')
|
||||
if lualine then
|
||||
lib.refresh()
|
||||
end
|
||||
end
|
||||
'';
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>af";
|
||||
mode = "n";
|
||||
options.silent = true;
|
||||
action = "<cmd>:${cfg.commandName}<CR>";
|
||||
}
|
||||
{
|
||||
key = "<leader>aF";
|
||||
mode = "n";
|
||||
options.silent = true;
|
||||
action = "<cmd>:${cfg.commandName}!<CR>";
|
||||
}
|
||||
];
|
||||
|
||||
plugins = {
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>a";
|
||||
group = "Auto Actions";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>af";
|
||||
desc = "Tggle auto-format";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>aF";
|
||||
desc = "Tggle auto-format (buffer)";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
|
||||
conform-nvim.settings.format_after_save = # lua
|
||||
''
|
||||
function(bufnr)
|
||||
if vim.g.${cfg.varName} or vim.b[bufnr].${cfg.varName} then
|
||||
return
|
||||
end
|
||||
return { timeout_ms = 500, lsp_fallback = true };
|
||||
end
|
||||
'';
|
||||
|
||||
lualine.settings.sections.lualine_x = lib.mkOrder 600 [
|
||||
"(vim.g.${cfg.varName} or vim.b.${cfg.varName}) and '' or nil"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,110 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.auto-save;
|
||||
in
|
||||
{
|
||||
options.presets.auto-save = {
|
||||
enable = lib.mkEnableOption "auto save";
|
||||
disableOnStart = lib.mkEnableOption "disable auto save on start";
|
||||
event = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [
|
||||
"BufHidden"
|
||||
"FocusLost"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
extraConfigLua = # lua
|
||||
''
|
||||
function PerformAutoSave(buf)
|
||||
buf = buf or vim.api.nvim_get_current_buf()
|
||||
|
||||
if vim.b.disable_autosave or vim.g.disable_autosave then return end
|
||||
if vim.fn.getbufvar(buf, "&modifiable") ~= 1 then return end
|
||||
if not vim.api.nvim_buf_get_option(buf, 'modified') then return end
|
||||
if vim.api.nvim_buf_get_option(buf, 'buftype') ~= "" then return end
|
||||
|
||||
vim.api.nvim_buf_call(buf, function()
|
||||
vim.cmd('silent! w')
|
||||
print("Auto save at " .. os.date("%H:%M:%S"))
|
||||
end)
|
||||
end
|
||||
'';
|
||||
|
||||
autoCmd = [
|
||||
{
|
||||
event = cfg.event;
|
||||
pattern = [ "*" ];
|
||||
callback.__raw = # lua
|
||||
"function(args) PerformAutoSave(args.buf) end";
|
||||
}
|
||||
];
|
||||
|
||||
globals.disable_autosave = cfg.disableOnStart;
|
||||
|
||||
userCommands.ToggleAutoSave = {
|
||||
bang = true;
|
||||
command.__raw = # lua
|
||||
''
|
||||
function(args)
|
||||
if args.bang then
|
||||
vim.b.disable_autosave = not vim.b.disable_autosave
|
||||
else
|
||||
vim.g.disable_autosave = not vim.g.disable_autosave
|
||||
end
|
||||
local lualine, lib = pcall(require, 'lualine')
|
||||
if lualine then
|
||||
lib.refresh()
|
||||
end
|
||||
end
|
||||
'';
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>as";
|
||||
mode = "n";
|
||||
options.silent = true;
|
||||
action = "<cmd>:ToggleAutoSave<CR>";
|
||||
}
|
||||
{
|
||||
key = "<leader>aS";
|
||||
mode = "n";
|
||||
options.silent = true;
|
||||
action = "<cmd>:ToggleAutoSave!<CR>";
|
||||
}
|
||||
];
|
||||
|
||||
plugins = {
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>a";
|
||||
group = "Auto Actions";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>as";
|
||||
desc = "Tggle auto-save";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>aS";
|
||||
desc = "Tggle auto-save (buffer)";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
|
||||
/*
|
||||
neo-tree.eventHandlers.window_before_open = # lua
|
||||
"function() PerformAutoSave() end";
|
||||
*/
|
||||
|
||||
lualine.settings.sections.lualine_x = lib.mkOrder 700 [
|
||||
# lua
|
||||
"(vim.g.disable_autosave or vim.b.disable_autosave) and '' or nil"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,106 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.base.completion;
|
||||
in
|
||||
{
|
||||
options.presets.base.completion = {
|
||||
enable = lib.mkEnableOption "completion";
|
||||
copilot = lib.mkEnableOption "Copilot";
|
||||
ollama = lib.mkEnableOption "Ollama";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
extraConfigLua =
|
||||
lib.mkIf cfg.ollama
|
||||
#lua
|
||||
''
|
||||
require('minuet').setup({
|
||||
provider = 'openai_fim_compatible',
|
||||
n_completions = 1,
|
||||
context_window = 1024,
|
||||
provider_options = {
|
||||
openai_fim_compatible = {
|
||||
api_key = 'TERM',
|
||||
name = 'Ollama',
|
||||
end_point = 'http://localhost:11434/v1/completions',
|
||||
model = 'deepseek-coder-v2:16b',
|
||||
optional = {
|
||||
max_tokens = 56,
|
||||
stop = { '\n' },
|
||||
top_p = 0.9,
|
||||
},
|
||||
},
|
||||
},
|
||||
virtualtext = {
|
||||
show_on_completion_menu = true,
|
||||
auto_trigger_ft = { "*" },
|
||||
keymap = {
|
||||
accept = '<A-l>',
|
||||
},
|
||||
},
|
||||
throttle = 0,
|
||||
debounce = 0,
|
||||
})
|
||||
'';
|
||||
plugins = {
|
||||
luasnip.enable = true;
|
||||
lspkind = {
|
||||
enable = true;
|
||||
mode = "symbol_text";
|
||||
};
|
||||
lualine.settings.sections.lualine_x = lib.mkIf cfg.ollama (
|
||||
lib.mkBefore [
|
||||
{ __unkeyed-1.__raw = "require('minuet.lualine')"; }
|
||||
]
|
||||
);
|
||||
copilot-lua = lib.mkIf cfg.copilot {
|
||||
enable = true;
|
||||
settings.suggestion.auto_trigger = true;
|
||||
};
|
||||
cmp = {
|
||||
enable = true;
|
||||
settings = {
|
||||
mapping = {
|
||||
"<C-n>" = # lua
|
||||
"cmp.mapping.select_next_item({behavior = cmp.SelectBehavior.Select})";
|
||||
"<C-p>" = # lua
|
||||
"cmp.mapping.select_prev_item({behavior = cmp.SelectBehavior.Select})";
|
||||
"<C-y>" = # lua
|
||||
"cmp.mapping.confirm({select = true})";
|
||||
"<C-Enter>" = # lua
|
||||
"cmp.mapping.complete()";
|
||||
};
|
||||
sources = [
|
||||
{ name = "path"; }
|
||||
{ name = "luasnip"; }
|
||||
{ name = "nvim_lsp"; }
|
||||
{ name = "nvim_lsp_signature_help"; }
|
||||
{ name = "nvim_lsp_document_symbol"; }
|
||||
];
|
||||
formatting.fields = [
|
||||
"abbr"
|
||||
"kind"
|
||||
];
|
||||
snippet.expand = # lua
|
||||
"function(args) require('luasnip').lsp_expand(args.body) end";
|
||||
window = {
|
||||
completion = {
|
||||
border = "solid";
|
||||
zindex = 10;
|
||||
};
|
||||
documentation = {
|
||||
border = "solid";
|
||||
zindex = 10;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
extraPlugins = lib.mkIf cfg.ollama [ pkgs.vimPlugins.minuet-ai-nvim ];
|
||||
};
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.base.coverage;
|
||||
in
|
||||
{
|
||||
options.presets.base.coverage = {
|
||||
enable = lib.mkEnableOption "coverage";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>cs";
|
||||
action = # vim
|
||||
":CoverageSummary<CR>";
|
||||
}
|
||||
{
|
||||
key = "<leader>cr";
|
||||
action = # vim
|
||||
":CoverageClear<CR>:CoverageLoad<CR>:CoverageShow<CR>";
|
||||
}
|
||||
{
|
||||
key = "<leader>ch";
|
||||
action = # vim
|
||||
":CoverageHide<CR>";
|
||||
}
|
||||
{
|
||||
key = "<leader>cc";
|
||||
action = # vim
|
||||
":CoverageShow<CR>";
|
||||
}
|
||||
];
|
||||
autoCmd = [
|
||||
{
|
||||
event = [ "BufEnter" ];
|
||||
callback.__raw = # lua
|
||||
''
|
||||
function()
|
||||
local ftype = vim.bo.filetype
|
||||
local ok, lang = pcall(require, "coverage.languages." .. ftype)
|
||||
if not ok then
|
||||
return
|
||||
end
|
||||
local config = require("coverage.config")
|
||||
local util = require("coverage.util")
|
||||
local Path = require("plenary.path")
|
||||
local ft_config = config.opts.lang[ftype]
|
||||
if ft_config == nil then
|
||||
return
|
||||
end
|
||||
local p = Path:new(util.get_coverage_file(ft_config.coverage_file))
|
||||
if not p:exists() then
|
||||
return
|
||||
end
|
||||
|
||||
require("coverage").load(true)
|
||||
end
|
||||
'';
|
||||
}
|
||||
];
|
||||
plugins = {
|
||||
coverage = {
|
||||
enable = true;
|
||||
autoReload = true;
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>c";
|
||||
desc = "Coverage";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>cs";
|
||||
desc = "Summary";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>cr";
|
||||
desc = "Reload";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>ch";
|
||||
desc = "Hide";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>cc";
|
||||
desc = "Show";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,150 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.base.diagnostics;
|
||||
in
|
||||
{
|
||||
options.presets.base.diagnostics = {
|
||||
enable = lib.mkEnableOption "diagnostics";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
extraConfigLuaPre = # lua
|
||||
''
|
||||
vim.lsp.set_log_level("off")
|
||||
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "solid" })
|
||||
'';
|
||||
diagnostic.settings = {
|
||||
virtual_text.prefix = "●";
|
||||
signs = false;
|
||||
float = {
|
||||
focusable = false;
|
||||
header = "";
|
||||
border = "solid";
|
||||
scope = "cursor";
|
||||
prefix = "";
|
||||
};
|
||||
underline = true;
|
||||
update_in_insert = true;
|
||||
severity_sort = true;
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>sn";
|
||||
mode = "n";
|
||||
options.silent = true;
|
||||
action.__raw = # lua
|
||||
"function() vim.diagnostic.open_float(nil) end";
|
||||
}
|
||||
{
|
||||
key = "<leader>sx";
|
||||
mode = "n";
|
||||
options.silent = true;
|
||||
action.__raw = # lua
|
||||
"vim.lsp.buf.format";
|
||||
}
|
||||
{
|
||||
key = "<leader>sR";
|
||||
mode = "n";
|
||||
options.silent = true;
|
||||
action = "<cmd>:LspRestart<CR>";
|
||||
}
|
||||
{
|
||||
key = "<leader>sc";
|
||||
mode = "n";
|
||||
action = ":IncRename ";
|
||||
}
|
||||
{
|
||||
key = "<leader>sh";
|
||||
mode = "n";
|
||||
options.silent = true;
|
||||
action.__raw = # lua
|
||||
"function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({0}), {0}) end";
|
||||
}
|
||||
];
|
||||
plugins = {
|
||||
lsp = {
|
||||
enable = true;
|
||||
inlayHints = false;
|
||||
};
|
||||
telescope = {
|
||||
enable = true;
|
||||
keymaps = {
|
||||
"<leader>sr" = "lsp_references";
|
||||
"<leader>sd" = "lsp_definitions";
|
||||
"<leader>si" = "lsp_implementations";
|
||||
"<leader>sw" = "lsp_workspace_symbols";
|
||||
"<leader>st" = "lsp_type_definitions";
|
||||
"<leader>sa" = "quickfix";
|
||||
};
|
||||
};
|
||||
inc-rename.enable = true;
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>s";
|
||||
group = "LSP";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>sr";
|
||||
desc = "References";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>sc";
|
||||
desc = "Incremental Rename";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>sR";
|
||||
desc = "Restart LSP";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>sd";
|
||||
desc = "Definitions";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>si";
|
||||
desc = "Implementations";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>sw";
|
||||
desc = "Workspace Symbols";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>st";
|
||||
desc = "Type Definitions";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>sh";
|
||||
icon = "";
|
||||
desc = "Inlay Hints";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>sa";
|
||||
desc = "Code Actions";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>sn";
|
||||
desc = "Diagnostics";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>sx";
|
||||
desc = "LSP Format";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.base.find;
|
||||
in
|
||||
{
|
||||
options.presets.base.find = {
|
||||
enable = lib.mkEnableOption "file finding";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins = {
|
||||
web-devicons.enable = true;
|
||||
telescope = {
|
||||
enable = true;
|
||||
keymaps = {
|
||||
"ff" = {
|
||||
action = "git_files";
|
||||
mode = "n";
|
||||
};
|
||||
"fa" = {
|
||||
action = "find_files";
|
||||
mode = "n";
|
||||
};
|
||||
"fg" = {
|
||||
action = "live_grep";
|
||||
mode = "n";
|
||||
};
|
||||
"fc" = {
|
||||
action = "buffers";
|
||||
mode = "n";
|
||||
};
|
||||
};
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "f";
|
||||
group = "Find";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "ff";
|
||||
desc = "File";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "fa";
|
||||
desc = "All Files";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "fg";
|
||||
desc = "Grep";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "fc";
|
||||
desc = "Current";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.base.formatting;
|
||||
in
|
||||
{
|
||||
options.presets.base.formatting = {
|
||||
enable = lib.mkEnableOption "formatting";
|
||||
prettier = lib.mkEnableOption "prettier formatter";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins.conform-nvim = {
|
||||
enable = true;
|
||||
settings.formatters_by_ft = lib.mkIf cfg.prettier {
|
||||
javascript = [ "prettierd" ];
|
||||
markdown = [ "prettierd" ];
|
||||
typescript = [ "prettierd" ];
|
||||
json = [ "prettierd" ];
|
||||
yaml = [ "prettierd" ];
|
||||
html = [ "prettierd" ];
|
||||
angular = [ "prettierd" ];
|
||||
css = [ "prettierd" ];
|
||||
scss = [ "prettierd" ];
|
||||
less = [ "prettierd" ];
|
||||
svelte = [ "prettierd" ];
|
||||
};
|
||||
};
|
||||
extraPackages = lib.mkIf cfg.prettier [ pkgs.prettierd ];
|
||||
};
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.base.minimap;
|
||||
in
|
||||
{
|
||||
options.presets.base.minimap = {
|
||||
enable = lib.mkEnableOption "minimap";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
globals = {
|
||||
minimap_width = 10;
|
||||
minimap_auto_start = 1;
|
||||
minimap_auto_start_win_enter = 1;
|
||||
minimap_close_buftypes = [ "nofile" ];
|
||||
minimap_block_filetypes = [ "NvimTree" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
hmConfig,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.base.spellcheck;
|
||||
in
|
||||
{
|
||||
options.presets.base.spellcheck = {
|
||||
enable = lib.mkEnableOption "Spellcheck";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins.lsp.servers.harper_ls = {
|
||||
enable = true;
|
||||
settings = {
|
||||
userDictPath = "${hmConfig.xdg.configHome}/harper-user-dictionary.txt";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.base.status-line;
|
||||
in
|
||||
{
|
||||
options.presets.base.status-line = {
|
||||
enable = lib.mkEnableOption "status line";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
opts.showmode = false;
|
||||
plugins = {
|
||||
notify = {
|
||||
enable = true;
|
||||
settings.stages = "static";
|
||||
};
|
||||
telescope = {
|
||||
enable = true;
|
||||
keymaps."<leader>n" = # vim
|
||||
"notify";
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>n";
|
||||
desc = "Notifications";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
lualine = {
|
||||
enable = true;
|
||||
settings = {
|
||||
options = {
|
||||
globalstatus = true;
|
||||
/*
|
||||
section_separators = {
|
||||
left = "";
|
||||
right = "";
|
||||
};
|
||||
*/
|
||||
component_separators = {
|
||||
left = "┊";
|
||||
right = "┊";
|
||||
};
|
||||
};
|
||||
sections = {
|
||||
lualine_a = [
|
||||
{
|
||||
__unkeyed-1 = "mode";
|
||||
/*
|
||||
separator = {
|
||||
right = "";
|
||||
left = "";
|
||||
};
|
||||
*/
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
lualine_x = lib.mkAfter [ { __unkeyed-1 = "filetype"; } ];
|
||||
lualine_z = [
|
||||
{
|
||||
__unkeyed-1 = "location";
|
||||
/*
|
||||
separator = {
|
||||
right = "";
|
||||
left = "";
|
||||
};
|
||||
*/
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.base.syntax;
|
||||
in
|
||||
{
|
||||
options.presets.base.syntax = {
|
||||
enable = lib.mkEnableOption "syntax highlighting";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins = {
|
||||
treesitter = {
|
||||
enable = true;
|
||||
settings = {
|
||||
highlight = {
|
||||
additional_vim_regex_highlighting = true;
|
||||
enable = true;
|
||||
};
|
||||
indent.enable = true;
|
||||
};
|
||||
grammarPackages = pkgs.vimPlugins.nvim-treesitter.allGrammars;
|
||||
nixvimInjections = true;
|
||||
};
|
||||
indent-blankline = {
|
||||
enable = lib.mkDefault true;
|
||||
settings = {
|
||||
indent.char = "▏";
|
||||
scope.show_start = false;
|
||||
};
|
||||
};
|
||||
illuminate.enable = lib.mkDefault true;
|
||||
nvim-autopairs.enable = lib.mkDefault true;
|
||||
colorizer.enable = lib.mkDefault true;
|
||||
ts-autotag = {
|
||||
enable = lib.mkDefault true;
|
||||
settings.opts.enable_close_on_slash = lib.mkDefault true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.base.tree;
|
||||
in
|
||||
{
|
||||
options.presets.base.tree = {
|
||||
enable = lib.mkEnableOption "file tree";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
keymaps = [
|
||||
{
|
||||
key = "ft";
|
||||
mode = "n";
|
||||
action = # vim
|
||||
"<cmd>:Neotree toggle<CR>";
|
||||
}
|
||||
];
|
||||
plugins = {
|
||||
web-devicons.enable = true;
|
||||
neo-tree = {
|
||||
enable = true;
|
||||
filesystem = {
|
||||
useLibuvFileWatcher = true;
|
||||
followCurrentFile.enabled = true;
|
||||
filteredItems.visible = true;
|
||||
};
|
||||
popupBorderStyle = "rounded";
|
||||
filesystem.window.mappings.f = "noop";
|
||||
window.mappings.f = "noop";
|
||||
eventHandlers.neo_tree_buffer_leave = # lua
|
||||
''
|
||||
function()
|
||||
require('neo-tree').close_all()
|
||||
end
|
||||
'';
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "ft";
|
||||
desc = "Tree";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
{ lib, pkgs, ... }:
|
||||
{
|
||||
options.programs.nixvim = lib.mkOption {
|
||||
type = pkgs.lib.types.submoduleWith {
|
||||
specialArgs = {
|
||||
inherit pkgs;
|
||||
};
|
||||
modules = [
|
||||
./aerial.nix
|
||||
./auto-save.nix
|
||||
./auto-format.nix
|
||||
./harpoon.nix
|
||||
./mergetool.nix
|
||||
./lazygit.nix
|
||||
./trouble.nix
|
||||
./undotree.nix
|
||||
|
||||
./base/completion.nix
|
||||
./base/coverage.nix
|
||||
./base/diagnostics.nix
|
||||
./base/find.nix
|
||||
./base/formatting.nix
|
||||
./base/spellcheck.nix
|
||||
./base/status-line.nix
|
||||
./base/syntax.nix
|
||||
./base/tree.nix
|
||||
|
||||
./languages/angular.nix
|
||||
./languages/c.nix
|
||||
./languages/css.nix
|
||||
./languages/dart.nix
|
||||
./languages/js.nix
|
||||
./languages/lua.nix
|
||||
./languages/nix.nix
|
||||
./languages/python.nix
|
||||
./languages/rust.nix
|
||||
./languages/shell.nix
|
||||
./languages/svelte.nix
|
||||
|
||||
./remaps/half-page-scroll.nix
|
||||
./remaps/no-accidental-macro.nix
|
||||
./remaps/paste-keep-buffer.nix
|
||||
./remaps/wrapped-line-nav.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.harpoon;
|
||||
in
|
||||
{
|
||||
options.presets.harpoon = {
|
||||
enable = lib.mkEnableOption "Harpoon";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
keymaps = [
|
||||
{
|
||||
key = "hh";
|
||||
mode = "n";
|
||||
action = ":Telescope harpoon marks<CR>";
|
||||
}
|
||||
];
|
||||
plugins = {
|
||||
telescope.enable = true;
|
||||
harpoon = {
|
||||
enable = true;
|
||||
enableTelescope = true;
|
||||
keymaps = {
|
||||
addFile = "hm";
|
||||
navNext = "hn";
|
||||
navPrev = "hp";
|
||||
};
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "h";
|
||||
group = "Harpoon";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "hh";
|
||||
desc = "Marks";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "hm";
|
||||
desc = "Add File";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "hn";
|
||||
desc = "Next";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "hp";
|
||||
desc = "Prev";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.languages.angular;
|
||||
in
|
||||
{
|
||||
options.presets.languages.angular = {
|
||||
enable = lib.mkEnableOption "Angular";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins = {
|
||||
lsp.enabledServers = [
|
||||
{
|
||||
name = "angularls";
|
||||
extraOptions = {
|
||||
cmd = [
|
||||
"ngserver"
|
||||
"--stdio"
|
||||
"--tsProbeLocations"
|
||||
""
|
||||
"--ngProbeLocations"
|
||||
""
|
||||
];
|
||||
on_new_config.__raw = # lua
|
||||
''
|
||||
function(new_config, new_root_dir)
|
||||
new_config.cmd = {
|
||||
new_root_dir .. "/node_modules/@angular/language-server/bin/ngserver",
|
||||
"--stdio",
|
||||
"--tsProbeLocations",
|
||||
new_root_dir .. "/node_modules",
|
||||
"--ngProbeLocations",
|
||||
new_root_dir .. "/node_modules",
|
||||
}
|
||||
end
|
||||
'';
|
||||
filetypes = [
|
||||
"typescript"
|
||||
"html"
|
||||
"typescriptreact"
|
||||
"typescript.tsx"
|
||||
"angular"
|
||||
"html.angular"
|
||||
];
|
||||
on_attach.__raw = # lua
|
||||
''
|
||||
function(client, bufnr)
|
||||
if vim.bo[bufnr].filetype == "html" then
|
||||
vim.bo[bufnr].filetype = "angular"
|
||||
end
|
||||
end
|
||||
'';
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.languages.c;
|
||||
in
|
||||
{
|
||||
options.presets.languages.c = {
|
||||
enable = lib.mkEnableOption "C/C++";
|
||||
cppcheck = lib.mkEnableOption "cppcheck";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins = {
|
||||
conform-nvim.settings.formatters_by_ft = {
|
||||
c = [ "clang-format" ];
|
||||
cpp = [ "clang-format" ];
|
||||
};
|
||||
none-ls = {
|
||||
enable = true;
|
||||
sources.diagnostics = {
|
||||
cppcheck = lib.mkIf cfg.cppcheck {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
lsp.servers = {
|
||||
clangd = {
|
||||
enable = true;
|
||||
cmd = [
|
||||
"clangd"
|
||||
"--offset-encoding=utf-16"
|
||||
"--clang-tidy"
|
||||
];
|
||||
settings.InlayHints = {
|
||||
Designators = true;
|
||||
Enabled = true;
|
||||
ParameterNames = true;
|
||||
DeducedTypes = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.languages.css;
|
||||
in
|
||||
{
|
||||
options.presets.languages.css = {
|
||||
enable = lib.mkEnableOption "CSS";
|
||||
stylelint = lib.mkEnableOption "stylelint";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins = {
|
||||
none-ls = lib.mkIf cfg.stylelint {
|
||||
enable = true;
|
||||
sources = {
|
||||
diagnostics.stylelint.enable = true;
|
||||
formatting.stylelint.enable = true;
|
||||
};
|
||||
};
|
||||
lsp.servers.cssls.enable = true;
|
||||
};
|
||||
extraPackages = lib.mkIf cfg.stylelint [ pkgs.nodePackages.stylelint ];
|
||||
};
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.languages.dart;
|
||||
in
|
||||
{
|
||||
options.presets.languages.dart = {
|
||||
enable = lib.mkEnableOption "Dart";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins = {
|
||||
conform-nvim.settings.formatters_by_ft.dart = [ "dart_format" ];
|
||||
lsp.servers.dartls.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.languages.js;
|
||||
in
|
||||
{
|
||||
options.presets.languages.js = {
|
||||
enable = lib.mkEnableOption "JS";
|
||||
eslint = lib.mkEnableOption "ESLint";
|
||||
npm = lib.mkEnableOption "NPM package completion";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
extraConfigLua =
|
||||
lib.mkIf cfg.npm # lua
|
||||
''
|
||||
require("cmp-npm").setup({})
|
||||
'';
|
||||
plugins = {
|
||||
lspkind = lib.mkIf cfg.npm {
|
||||
cmp.after = # lua
|
||||
''
|
||||
function(entry, vim_item, kind)
|
||||
if entry.source.name == "npm" then
|
||||
kind.kind = ""
|
||||
kind.kind_hl_group = "CmpItemKindNpm"
|
||||
end
|
||||
kind.kind = kind.kind .. " "
|
||||
return kind
|
||||
end
|
||||
'';
|
||||
};
|
||||
cmp.settings.sources = lib.mkIf cfg.npm [
|
||||
{
|
||||
name = "npm";
|
||||
keywordLength = 4;
|
||||
priority = 10;
|
||||
}
|
||||
];
|
||||
lsp.servers = {
|
||||
ts_ls = {
|
||||
enable = true;
|
||||
settings = {
|
||||
typescript.inlayHints = {
|
||||
includeInlayParameterNameHints = "all";
|
||||
includeInlayParameterNameHintsWhenArgumentMatchesName = true;
|
||||
includeInlayFunctionParameterTypeHints = true;
|
||||
includeInlayVariableTypeHints = true;
|
||||
includeInlayVariableTypeHintsWhenTypeMatchesName = true;
|
||||
includeInlayPropertyDeclarationTypeHints = true;
|
||||
includeInlayFunctionLikeReturnTypeHints = true;
|
||||
includeInlayEnumMemberValueHints = true;
|
||||
};
|
||||
javascript.inlayHints = {
|
||||
includeInlayParameterNameHints = "all";
|
||||
includeInlayParameterNameHintsWhenArgumentMatchesName = true;
|
||||
includeInlayFunctionParameterTypeHints = true;
|
||||
includeInlayVariableTypeHints = true;
|
||||
includeInlayVariableTypeHintsWhenTypeMatchesName = true;
|
||||
includeInlayPropertyDeclarationTypeHints = true;
|
||||
includeInlayFunctionLikeReturnTypeHints = true;
|
||||
includeInlayEnumMemberValueHints = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
eslint.enable = lib.mkIf cfg.eslint true;
|
||||
};
|
||||
};
|
||||
extraPackages = [ pkgs.nodePackages.typescript-language-server ];
|
||||
};
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.languages.lua;
|
||||
in
|
||||
{
|
||||
options.presets.languages.lua = {
|
||||
enable = lib.mkEnableOption "Lua";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins = {
|
||||
conform-nvim.settings.formatters_by_ft.lua = [ "stylua" ];
|
||||
lsp.servers.lua_ls.enable = true;
|
||||
};
|
||||
extraPackages = [ pkgs.stylua ];
|
||||
};
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.languages.nix;
|
||||
in
|
||||
{
|
||||
options.presets.languages.nix = {
|
||||
enable = lib.mkEnableOption "Nix";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins = {
|
||||
conform-nvim.settings.formatters_by_ft.nix = [ "nixfmt" ];
|
||||
none-ls = {
|
||||
enable = true;
|
||||
sources.diagnostics.statix.enable = true;
|
||||
};
|
||||
lsp.servers.nil_ls.enable = true;
|
||||
nix.enable = true;
|
||||
};
|
||||
extraPackages = [ pkgs.nixfmt-rfc-style ];
|
||||
};
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.languages.python;
|
||||
in
|
||||
{
|
||||
options.presets.languages.python = {
|
||||
enable = lib.mkEnableOption "Python";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins = {
|
||||
conform-nvim.settings.formatters_by_ft.python = [ "black" ];
|
||||
lsp.servers.pyright.enable = true;
|
||||
};
|
||||
extraPackages = [ pkgs.black ];
|
||||
};
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.languages.rust;
|
||||
in
|
||||
{
|
||||
options.presets.languages.rust = {
|
||||
enable = lib.mkEnableOption "Rust";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins = {
|
||||
conform-nvim.settings.formattters_by_ft.rust = [ "rustfmt" ];
|
||||
lsp.servers.rust_analyzer = {
|
||||
enable = true;
|
||||
installCargo = false;
|
||||
installRustc = false;
|
||||
settings.inlayHints = {
|
||||
bindingModeHints.enable = false;
|
||||
chainingHints.enable = true;
|
||||
closingBraceHints = {
|
||||
enable = true;
|
||||
minLines = 25;
|
||||
};
|
||||
closureReturnTypeHints.enable = "never";
|
||||
lifetimeElisionHints = {
|
||||
enable = "never";
|
||||
useParameterNames = false;
|
||||
};
|
||||
maxLength = 25;
|
||||
parameterHints.enable = true;
|
||||
reborrowHints.enable = "never";
|
||||
renderColons = true;
|
||||
typeHints = {
|
||||
enable = true;
|
||||
hideClosureInitialization = false;
|
||||
hideNamedConstructor = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.languages.shell;
|
||||
in
|
||||
{
|
||||
options.presets.languages.shell = {
|
||||
enable = lib.mkEnableOption "Shell/Bash";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins = {
|
||||
conform-nvim.settings.formatters_by_ft.sh = [ "shfmt" ];
|
||||
lsp.servers.bashls.enable = true;
|
||||
};
|
||||
extraPackages = [ pkgs.shfmt ];
|
||||
};
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.languages.svelte;
|
||||
in
|
||||
{
|
||||
options.presets.languages.svelte = {
|
||||
enable = lib.mkEnableOption "Svelte";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins.lsp.servers.svelte = {
|
||||
enable = true;
|
||||
settings.typescript.inlayHints = {
|
||||
parameterNames.enabled = "all";
|
||||
parameterTypes.enabled = true;
|
||||
variableTypes.enabled = true;
|
||||
propertyDeclarationTypes.enabled = true;
|
||||
functionLikeReturnTypes.enabled = true;
|
||||
enumMemberValues.enabled = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,79 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.lazygit;
|
||||
in
|
||||
{
|
||||
options.presets.lazygit = {
|
||||
enable = lib.mkEnableOption "LazyGit";
|
||||
toggleBind = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "<leader>g";
|
||||
};
|
||||
commandName = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "ToggleLazyGit";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
extraConfigLua = # lua
|
||||
''
|
||||
LazygitTerminal = require("toggleterm.terminal").Terminal:new({
|
||||
cmd = "${lib.getExe pkgs.lazygit}",
|
||||
dir = "git_dir",
|
||||
direction = "float",
|
||||
|
||||
on_open = function(term)
|
||||
vim.cmd("startinsert!")
|
||||
vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", "<cmd>close<CR>", { noremap = true, silent = true })
|
||||
end,
|
||||
on_close = function(_)
|
||||
vim.cmd("startinsert!")
|
||||
end,
|
||||
})
|
||||
|
||||
function LazygitToggle()
|
||||
lazygit:toggle()
|
||||
end
|
||||
'';
|
||||
|
||||
userCommands.${cfg.commandName}.command.__raw = # lua
|
||||
''
|
||||
function()
|
||||
LazygitTerminal:toggle()
|
||||
end
|
||||
'';
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
key = cfg.toggleBind;
|
||||
mode = "n";
|
||||
options.silent = true;
|
||||
action = "<cmd>:${cfg.commandName}<CR>";
|
||||
}
|
||||
];
|
||||
|
||||
plugins = {
|
||||
toggleterm = {
|
||||
enable = true;
|
||||
settings = {
|
||||
direction = lib.mkDefault "vertical";
|
||||
size = lib.mkDefault 60;
|
||||
};
|
||||
};
|
||||
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = cfg.toggleBind;
|
||||
desc = "Git";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.mergetool;
|
||||
in
|
||||
{
|
||||
options.presets.mergetool = {
|
||||
enable = lib.mkEnableOption "Mergetool";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
globals = {
|
||||
mergetool_layout = "mr";
|
||||
mergetool_prefer_revision = "local";
|
||||
};
|
||||
extraPlugins = [ pkgs.vimPlugins.vim-mergetool ];
|
||||
};
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.remaps.half-page-scroll;
|
||||
in
|
||||
{
|
||||
options.presets.remaps.half-page-scroll = {
|
||||
enable = lib.mkEnableOption "half page scroll";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
keymaps = [
|
||||
{
|
||||
key = "<C-d>";
|
||||
action = "<C-d>zz";
|
||||
}
|
||||
{
|
||||
key = "<C-u>";
|
||||
action = "<C-u>zz";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.remaps.no-accidental-macro;
|
||||
in
|
||||
{
|
||||
options.presets.remaps.no-accidental-macro = {
|
||||
enable = lib.mkEnableOption "no accidental macro";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
keymaps = [
|
||||
{
|
||||
key = "Q";
|
||||
mode = "n";
|
||||
action = "<nop>";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.remaps.paste-keep-buffer;
|
||||
in
|
||||
{
|
||||
options.presets.remaps.paste-keep-buffer = {
|
||||
enable = lib.mkEnableOption "paste in visual keeps the buffer";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
keymaps = [
|
||||
{
|
||||
key = "p";
|
||||
mode = "v";
|
||||
action = ''"_dP'';
|
||||
}
|
||||
{
|
||||
key = "<leader>p";
|
||||
action = ''"_dP'';
|
||||
}
|
||||
];
|
||||
plugins.which-key = {
|
||||
enable = true;
|
||||
settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>p";
|
||||
desc = "Paste Keep Buffer";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.remaps.wrapped-line-nav;
|
||||
in
|
||||
{
|
||||
options.presets.remaps.wrapped-line-nav = {
|
||||
enable = lib.mkEnableOption "Navigate wrapped lines up and down";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
keymaps = [
|
||||
{
|
||||
key = "<up>";
|
||||
action = "g<up>";
|
||||
}
|
||||
{
|
||||
key = "<down>";
|
||||
action = "g<down>";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.trouble;
|
||||
in
|
||||
{
|
||||
options.presets.trouble = {
|
||||
enable = lib.mkEnableOption "trouble";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>xx";
|
||||
mode = "n";
|
||||
action.__raw = # lua
|
||||
"function() require('trouble').toggle('diagnostics') end";
|
||||
}
|
||||
{
|
||||
key = "<leader>xw";
|
||||
mode = "n";
|
||||
action.__raw = # lua
|
||||
"function() require('trouble').toggle('workspace_diagnostics') end";
|
||||
}
|
||||
{
|
||||
key = "<leader>xd";
|
||||
mode = "n";
|
||||
action.__raw = # lua
|
||||
"function() require('trouble').toggle('document_diagnostics') end";
|
||||
}
|
||||
{
|
||||
key = "<leader>xq";
|
||||
mode = "n";
|
||||
action.__raw = # lua
|
||||
"function() require('trouble').toggle('quickfix') end";
|
||||
}
|
||||
{
|
||||
key = "<leader>xl";
|
||||
mode = "n";
|
||||
action.__raw = # lua
|
||||
"function() require('trouble').toggle('loclist') end";
|
||||
}
|
||||
];
|
||||
plugins = {
|
||||
web-devicons.enable = true;
|
||||
trouble.enable = true;
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>x";
|
||||
group = "Trouble";
|
||||
icon = {
|
||||
icon = "";
|
||||
color = "red";
|
||||
};
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>xx";
|
||||
desc = "Toggle";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>xw";
|
||||
desc = "Workspace Diagnostics";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>xd";
|
||||
desc = "Document Diagnostics";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>xq";
|
||||
desc = "Quickfix";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>xl";
|
||||
desc = "Loclist";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.undotree;
|
||||
in
|
||||
{
|
||||
options.presets.undotree = {
|
||||
enable = lib.mkEnableOption "Undotree";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
opts = {
|
||||
undodir.__raw = # lua
|
||||
"os.getenv('HOME') .. '/.config/nvim/undodir'";
|
||||
undofile = true;
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>u";
|
||||
mode = "n";
|
||||
action = "<cmd>:UndotreeToggle<CR>";
|
||||
}
|
||||
];
|
||||
plugins = {
|
||||
undotree.enable = true;
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>u";
|
||||
desc = "Undotree";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user