nix-configs/hm-imports/nvim/default.nix
Philipp Hochkamp da23e52670 test
2023-04-30 23:11:54 +02:00

124 lines
3.5 KiB
Nix

{ pkgs, config, lib, inputs, ... }:
let
cfg = config.ragon.nvim;
in
{
options.ragon.nvim.enable = lib.mkOption { default = true; };
options.ragon.nvim.maximal = lib.mkOption { default = false; };
config = lib.mkIf cfg.enable {
home.packages =
(with pkgs;[
# telescope
ripgrep
# embedded terminal
lazygit
glab
gh
# other stuff
neovim-remote
]) ++
lib.optionals cfg.maximal (with pkgs;[
# language servers
nil # nix
#inputs.rnix-lsp.packages."${pkgs.system}".rnix-lsp
gopls # go
pyright # python3
terraform-ls
terraform
nodePackages.typescript
nodePackages.typescript-language-server
haskell-language-server
sumneko-lua-language-server
ltex-ls # languageTool
nodePackages.vscode-langservers-extracted # eslint, ...
texlab # latex
tectonic
kotlin
kotlin-language-server
ktlint
# rust completion
cargo
rustc
rustfmt
unstable.rust-analyzer
# c# debugging
(pkgs.writeShellScriptBin "netcoredbg" ''exec ${pkgs.unstable.netcoredbg}/bin/netcoredbg "$@"'') # don't fill $path with dlls
]);
home.file.".config/nvim".source = ./config;
home.file.".config/nvim".recursive = true;
programs.neovim =
{
enable = true;
package = pkgs.neovim-nightly;
extraConfig = ''
set runtimepath^=~/.config/nvim
lua dofile('${./config/nvim.lua}')
'';
vimAlias = true;
viAlias = true;
plugins =
let
nnn-nvim = pkgs.vimUtils.buildVimPlugin {
pname = "nnn-nvim";
version = "1.0.0";
src = inputs.nnn-nvim;
};
notify-nvim = pkgs.vimUtils.buildVimPlugin {
pname = "notify-nvim";
version = "1.0.0";
src = inputs.notify-nvim;
};
noice-nvim = pkgs.vimUtils.buildVimPlugin {
pname = "noice-nvim";
version = "1.0.0";
src = inputs.noice-nvim;
};
in
map (x: { plugin = x; }) (with pkgs.vimPlugins; [
vim-tmux-navigator # tmux
nnn-nvim # nnn as filebrowser
gruvbox-nvim # theme
# complete ui overhaul
notify-nvim
nui-nvim
noice-nvim
telescope-nvim
telescope-ui-select-nvim
# line
lualine-nvim
# vcs integration
gitsigns-nvim
# completion
nvim-lspconfig # lsp
nvim-dap # dap
nvim-dap-ui # dap stuffzies
nvim-dap-go
pkgs.unstable.vimPlugins.rust-tools-nvim # rust special sauce
pkgs.unstable.vimPlugins.flutter-tools-nvim
# completion - nvim-cmp
cmp-nvim-lsp
cmp-buffer
cmp-path
cmp-cmdline
nvim-cmp # completion ui
lspkind-nvim # icons for completion
# completion-snippets
luasnip
cmp_luasnip
friendly-snippets # some premade snippets
toggleterm-nvim # embed terminals (for lazygit,...)
# treesitter
(pkgs.unstable.vimPlugins.nvim-treesitter.withPlugins (
plugins: pkgs.tree-sitter.allGrammars
))
]);
};
};
}