Add package for nixvim configuration
This commit is contained in:
parent
65326c9f46
commit
8027f6d8fe
|
@ -338,11 +338,11 @@
|
|||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1698328085,
|
||||
"narHash": "sha256-32Vk8PCa57B4mIXdVTbDrKoHBO5FTm5ZaSwiph9PwIo=",
|
||||
"lastModified": 1698386104,
|
||||
"narHash": "sha256-/QwUn8G1ERjl82RFFTTI/2ulOTV9Mbeog97old9tZl0=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "e1138cda396c7b925989cf6158496787051cf3f7",
|
||||
"rev": "315bc508ee0bfb62b6608f8f445126158ca2cc35",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
@ -78,7 +78,11 @@
|
|||
};
|
||||
in {
|
||||
formatter = pkgs.nixfmt;
|
||||
packages = { jlink = pkgs.callPackage ./externals/packages/jlink { }; };
|
||||
packages = {
|
||||
jlink = pkgs.callPackage ./externals/packages/jlink { };
|
||||
nvim = inputs.nixvim.legacyPackages."${system}".makeNixvim
|
||||
(import ./sets/nvim.nix { inherit pkgs inputs; });
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
|
|
313
sets/nvim.nix
313
sets/nvim.nix
|
@ -1,180 +1,171 @@
|
|||
{ pkgs, inputs, ... }:
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [ inputs.nixvim.nixosModules.nixvim ];
|
||||
vimAlias = true;
|
||||
|
||||
environment.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
VISUAL = "nvim";
|
||||
};
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
vimAlias = true;
|
||||
|
||||
# Basic editing / QoL
|
||||
editorconfig.enable = true;
|
||||
colorschemes.kanagawa.enable = true;
|
||||
plugins = {
|
||||
nix.enable = true;
|
||||
fugitive.enable = true;
|
||||
gitgutter.enable = true;
|
||||
lualine.enable = true;
|
||||
typst-vim.enable = true;
|
||||
telescope = {
|
||||
enable = true;
|
||||
keymaps = {
|
||||
"<leader>tgf" = "git_files";
|
||||
"<leader>tb" = "buffers";
|
||||
"<leader>tl" = "live_grep";
|
||||
"<leader>ts" = "grep_string";
|
||||
"<leader>tf" = "find_files";
|
||||
"<leader>tt" = "builtin";
|
||||
|
||||
gd = "lsp_definitions";
|
||||
gt = "lsp_type_definitions";
|
||||
gr = "lsp_references";
|
||||
gi = "lsp_implementations";
|
||||
gcd = "diagnostics";
|
||||
gsd = "lsp_document_symbols";
|
||||
gsw = "lsp_workspace_symbols";
|
||||
gci = "lsp_incoming_calls";
|
||||
gco = "lsp_outgoing_calls";
|
||||
|
||||
"<leader>tgs" = "git_status";
|
||||
"<leader>tgb" = "git_branches";
|
||||
"<leader>tgc" = "git_commits";
|
||||
};
|
||||
};
|
||||
};
|
||||
extraPlugins = with pkgs.vimPlugins; [
|
||||
vim-fetch
|
||||
vim-fish
|
||||
vim-flatbuffers
|
||||
vim-nftables
|
||||
vim-protobuf
|
||||
vim-toml
|
||||
];
|
||||
options = {
|
||||
hidden = true;
|
||||
backup = false;
|
||||
writebackup = false;
|
||||
cmdheight = 2;
|
||||
shortmess = "filnxtToOFc";
|
||||
signcolumn = "yes";
|
||||
number = true;
|
||||
};
|
||||
|
||||
# LSP
|
||||
plugins.rust-tools = {
|
||||
# Basic editing / QoL
|
||||
editorconfig.enable = true;
|
||||
colorschemes.kanagawa.enable = true;
|
||||
plugins = {
|
||||
nix.enable = true;
|
||||
fugitive.enable = true;
|
||||
gitgutter.enable = true;
|
||||
lualine.enable = true;
|
||||
typst-vim.enable = true;
|
||||
telescope = {
|
||||
enable = true;
|
||||
server.standalone = false;
|
||||
};
|
||||
plugins.clangd-extensions.enable = true;
|
||||
plugins.lsp = {
|
||||
enable = true;
|
||||
servers = {
|
||||
clangd.enable = true;
|
||||
java-language-server.enable = true;
|
||||
jsonls.enable = true;
|
||||
nil_ls.enable = true;
|
||||
pylsp.enable = true;
|
||||
texlab.enable = true;
|
||||
tsserver.enable = true;
|
||||
typst-lsp.enable = true;
|
||||
};
|
||||
|
||||
keymaps = {
|
||||
silent = true;
|
||||
diagnostic = {
|
||||
"<leader>rk" = "goto_prev";
|
||||
"<leader>rj" = "goto_next";
|
||||
};
|
||||
lspBuf = {
|
||||
K = "hover";
|
||||
gD = "declaration";
|
||||
"<leader>tgf" = "git_files";
|
||||
"<leader>tb" = "buffers";
|
||||
"<leader>tl" = "live_grep";
|
||||
"<leader>ts" = "grep_string";
|
||||
"<leader>tf" = "find_files";
|
||||
"<leader>tt" = "builtin";
|
||||
|
||||
"<leader>ra" = "code_action";
|
||||
"<leader>rn" = "rename";
|
||||
"<leader>rs" = "signature_help";
|
||||
"<leader>f" = "format";
|
||||
};
|
||||
gd = "lsp_definitions";
|
||||
gt = "lsp_type_definitions";
|
||||
gr = "lsp_references";
|
||||
gi = "lsp_implementations";
|
||||
gcd = "diagnostics";
|
||||
gsd = "lsp_document_symbols";
|
||||
gsw = "lsp_workspace_symbols";
|
||||
gci = "lsp_incoming_calls";
|
||||
gco = "lsp_outgoing_calls";
|
||||
|
||||
"<leader>tgs" = "git_status";
|
||||
"<leader>tgb" = "git_branches";
|
||||
"<leader>tgc" = "git_commits";
|
||||
};
|
||||
};
|
||||
};
|
||||
extraPlugins = with pkgs.vimPlugins; [
|
||||
vim-fetch
|
||||
vim-fish
|
||||
vim-flatbuffers
|
||||
vim-nftables
|
||||
vim-protobuf
|
||||
vim-toml
|
||||
];
|
||||
options = {
|
||||
hidden = true;
|
||||
backup = false;
|
||||
writebackup = false;
|
||||
cmdheight = 2;
|
||||
shortmess = "filnxtToOFc";
|
||||
signcolumn = "yes";
|
||||
number = true;
|
||||
};
|
||||
|
||||
onAttach = ''
|
||||
if client.server_capabilities.documentHighlightProvider then
|
||||
vim.api.nvim_create_augroup("lsp_document_highlight", { clear = true })
|
||||
vim.api.nvim_clear_autocmds { buffer = bufnr, group = "lsp_document_highlight" }
|
||||
vim.api.nvim_create_autocmd("CursorHold", {
|
||||
callback = vim.lsp.buf.document_highlight,
|
||||
buffer = bufnr,
|
||||
group = "lsp_document_highlight",
|
||||
desc = "Document Highlight",
|
||||
})
|
||||
vim.api.nvim_create_autocmd("CursorMoved", {
|
||||
callback = vim.lsp.buf.clear_references,
|
||||
buffer = bufnr,
|
||||
group = "lsp_document_highlight",
|
||||
desc = "Clear All the References",
|
||||
})
|
||||
end
|
||||
'';
|
||||
# LSP
|
||||
plugins.rust-tools = {
|
||||
enable = true;
|
||||
server.standalone = false;
|
||||
};
|
||||
plugins.clangd-extensions.enable = true;
|
||||
plugins.lsp = {
|
||||
enable = true;
|
||||
servers = {
|
||||
clangd.enable = true;
|
||||
java-language-server.enable = true;
|
||||
jsonls.enable = true;
|
||||
nil_ls.enable = true;
|
||||
pylsp.enable = true;
|
||||
texlab.enable = true;
|
||||
tsserver.enable = true;
|
||||
typst-lsp.enable = true;
|
||||
};
|
||||
|
||||
# Autocomplete
|
||||
plugins = {
|
||||
luasnip.enable = true;
|
||||
cmp-cmdline.enable = true;
|
||||
cmp-git.enable = true;
|
||||
cmp-buffer.enable = true;
|
||||
nvim-cmp = {
|
||||
enable = true;
|
||||
snippet.expand = "luasnip";
|
||||
sources = [
|
||||
{ name = "luasnip"; }
|
||||
{ name = "nvim_lsp"; }
|
||||
{ name = "path"; }
|
||||
{ name = "calc"; }
|
||||
{ name = "emoji"; }
|
||||
];
|
||||
mappingPresets = [ "insert" "cmdline" ];
|
||||
mapping = {
|
||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
|
||||
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
||||
"<C-Space>" = "cmp.mapping.complete()";
|
||||
"<C-e>" = "cmp.mapping.abort()";
|
||||
};
|
||||
keymaps = {
|
||||
silent = true;
|
||||
diagnostic = {
|
||||
"<leader>rk" = "goto_prev";
|
||||
"<leader>rj" = "goto_next";
|
||||
};
|
||||
lspBuf = {
|
||||
K = "hover";
|
||||
gD = "declaration";
|
||||
|
||||
"<leader>ra" = "code_action";
|
||||
"<leader>rn" = "rename";
|
||||
"<leader>rs" = "signature_help";
|
||||
"<leader>f" = "format";
|
||||
};
|
||||
};
|
||||
|
||||
# For some reason you can't do this directly in nix?
|
||||
extraConfigLuaPost = ''
|
||||
do
|
||||
local cmp = require('cmp')
|
||||
cmp.setup.filetype('gitcommit', {
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'git' },
|
||||
}, {
|
||||
{ name = 'buffer' },
|
||||
onAttach = ''
|
||||
if client.server_capabilities.documentHighlightProvider then
|
||||
vim.api.nvim_create_augroup("lsp_document_highlight", { clear = true })
|
||||
vim.api.nvim_clear_autocmds { buffer = bufnr, group = "lsp_document_highlight" }
|
||||
vim.api.nvim_create_autocmd("CursorHold", {
|
||||
callback = vim.lsp.buf.document_highlight,
|
||||
buffer = bufnr,
|
||||
group = "lsp_document_highlight",
|
||||
desc = "Document Highlight",
|
||||
})
|
||||
})
|
||||
|
||||
cmp.setup.cmdline({ '/', '?' }, {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = {
|
||||
{ name = 'buffer' }
|
||||
}
|
||||
})
|
||||
|
||||
cmp.setup.cmdline(':', {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'path' }
|
||||
}, {
|
||||
{ name = 'cmdline' }
|
||||
vim.api.nvim_create_autocmd("CursorMoved", {
|
||||
callback = vim.lsp.buf.clear_references,
|
||||
buffer = bufnr,
|
||||
group = "lsp_document_highlight",
|
||||
desc = "Clear All the References",
|
||||
})
|
||||
})
|
||||
end
|
||||
'';
|
||||
};
|
||||
|
||||
# Autocomplete
|
||||
plugins = {
|
||||
luasnip.enable = true;
|
||||
cmp-cmdline.enable = true;
|
||||
cmp-git.enable = true;
|
||||
cmp-buffer.enable = true;
|
||||
nvim-cmp = {
|
||||
enable = true;
|
||||
snippet.expand = "luasnip";
|
||||
sources = [
|
||||
{ name = "luasnip"; }
|
||||
{ name = "nvim_lsp"; }
|
||||
{ name = "path"; }
|
||||
{ name = "calc"; }
|
||||
{ name = "emoji"; }
|
||||
];
|
||||
mappingPresets = [ "insert" "cmdline" ];
|
||||
mapping = {
|
||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
|
||||
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
||||
"<C-Space>" = "cmp.mapping.complete()";
|
||||
"<C-e>" = "cmp.mapping.abort()";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# For some reason you can't do this directly in nix?
|
||||
extraConfigLuaPost = ''
|
||||
do
|
||||
local cmp = require('cmp')
|
||||
cmp.setup.filetype('gitcommit', {
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'git' },
|
||||
}, {
|
||||
{ name = 'buffer' },
|
||||
})
|
||||
})
|
||||
|
||||
cmp.setup.cmdline({ '/', '?' }, {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = {
|
||||
{ name = 'buffer' }
|
||||
}
|
||||
})
|
||||
|
||||
cmp.setup.cmdline(':', {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'path' }
|
||||
}, {
|
||||
{ name = 'cmdline' }
|
||||
})
|
||||
})
|
||||
end
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ config, pkgs, ... }:
|
||||
{ pkgs, inputs, ... }@args:
|
||||
|
||||
{
|
||||
imports = [
|
||||
|
@ -6,9 +6,9 @@
|
|||
./packages.nix
|
||||
./pipewire.nix
|
||||
./base.nix
|
||||
./nvim.nix
|
||||
../home
|
||||
./nix-index.nix
|
||||
inputs.nixvim.nixosModules.nixvim
|
||||
];
|
||||
|
||||
i18n.defaultLocale = "de_DE.UTF-8";
|
||||
|
@ -16,10 +16,13 @@
|
|||
|
||||
environment = {
|
||||
variables.EDITOR = "nvim";
|
||||
variables.VISUAL = "nvim";
|
||||
variables.TERMINAL = "kitty";
|
||||
enableDebugInfo = true;
|
||||
};
|
||||
|
||||
programs.nixvim = import ./nvim.nix args // { enable = true; };
|
||||
|
||||
services = {
|
||||
avahi = {
|
||||
enable = true;
|
||||
|
|
Loading…
Reference in a new issue