Update nixvim to lazy.nvim migration
This commit is contained in:
@ -468,12 +468,8 @@ rec {
|
||||
# p.matplotlib
|
||||
# p.pillow # for ranger
|
||||
# p.pygments # for emacs
|
||||
|
||||
# For nvim CHADtree
|
||||
pyyaml
|
||||
std2
|
||||
pynvim
|
||||
pynvim-pp
|
||||
# flake8 # Linter
|
||||
# black
|
||||
]))
|
||||
jetbrains.clion
|
||||
jetbrains.rust-rover
|
||||
|
@ -25,51 +25,74 @@ in {
|
||||
[
|
||||
(pkgs.ripgrep.override {withPCRE2 = true;})
|
||||
|
||||
# Dependencies
|
||||
lua51Packages.lua-curl # For rest
|
||||
lua51Packages.xml2lua # For rest
|
||||
lua51Packages.mimetypes # For rest
|
||||
lua51Packages.jsregexp # For tree-sitter
|
||||
|
||||
# Language servers
|
||||
clang-tools_18
|
||||
clojure-lsp
|
||||
cmake-language-server
|
||||
haskell-language-server
|
||||
lua-language-server
|
||||
nil
|
||||
pyright
|
||||
rust-analyzer
|
||||
texlab
|
||||
|
||||
# Linters
|
||||
clippy # rust
|
||||
checkstyle # java
|
||||
clippy # rust
|
||||
clj-kondo # clojure
|
||||
eslint_d # javascript
|
||||
python312Packages.flake8
|
||||
python311Packages.flake8
|
||||
lua51Packages.luacheck
|
||||
vale # text
|
||||
statix # nix
|
||||
|
||||
# Formatters
|
||||
alejandra # nix
|
||||
python311Packages.black
|
||||
google-java-format
|
||||
html-tidy
|
||||
jq # json
|
||||
prettierd # html/css/js
|
||||
# rustfmt
|
||||
# clang-tools
|
||||
rustfmt
|
||||
stylua
|
||||
]
|
||||
];
|
||||
|
||||
# NOTE: Use nixvim.extraConfigLua configuration
|
||||
# home.file.".config/neovide/config.toml".text = ''
|
||||
# [font]
|
||||
# normal = ["JetBrainsMono Nerd Font Mono"] # Will use the bundled Fira Code Nerd Font by default
|
||||
# size = 13.0
|
||||
#
|
||||
# fork = true
|
||||
# frame = "full" # full, buttonless, none
|
||||
# idle = true
|
||||
# maximized = false
|
||||
# # neovim-bin = "/usr/bin/nvim" # in reality found dynamically on $PATH if unset
|
||||
# no-multigrid = false
|
||||
# srgb = false
|
||||
# tabs = true
|
||||
# theme = "light"
|
||||
# title-hidden = true
|
||||
home.file.".config/neovide/config.toml".text = ''
|
||||
fork = true # Start neovide detached
|
||||
frame = "none" # full, buttonless, none
|
||||
idle = true # Don't render frames without changes
|
||||
# maximized = true
|
||||
title-hidden = true
|
||||
# vsync = true
|
||||
# wsl = false
|
||||
# '';
|
||||
'';
|
||||
|
||||
home.file.".config/vale/.vale.ini".text = ''
|
||||
# Core settings appear at the top
|
||||
# (the "global" section).
|
||||
|
||||
[formats]
|
||||
# Format associations appear under
|
||||
# the optional "formats" section.
|
||||
|
||||
[*]
|
||||
# Format-specific settings appear
|
||||
# under a user-provided "glob"
|
||||
# pattern.
|
||||
'';
|
||||
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
enableMan = true;
|
||||
# colorschemes.catppuccin.enable = true; # NOTE: Managed using Lazy
|
||||
luaLoader.enable = true; # NOTE: Experimental
|
||||
# colorschemes.catppuccin.enable = true; # Managed using Lazy
|
||||
viAlias = cfg.alias;
|
||||
vimAlias = cfg.alias;
|
||||
|
||||
@ -139,58 +162,11 @@ in {
|
||||
splitright = true;
|
||||
};
|
||||
|
||||
extraConfigLuaPost = ''
|
||||
local opt = vim.opt
|
||||
local g = vim.g
|
||||
local o = vim.o
|
||||
extraConfigLuaPost = builtins.readFile ./extraConfigLuaPost.lua;
|
||||
|
||||
-- Neovide
|
||||
if g.neovide then
|
||||
-- require("notify").notify("Running in NeoVide")
|
||||
extraConfigLua = builtins.readFile ./extraConfigLua.lua;
|
||||
|
||||
g.neovide_cursor_animate_command_line = true
|
||||
g.neovide_cursor_animate_in_insert_mode = true
|
||||
g.neovide_fullscreen = false
|
||||
g.neovide_hide_mouse_when_typing = false
|
||||
g.neovide_padding_top = 0
|
||||
g.neovide_padding_bottom = 0
|
||||
g.neovide_padding_right = 0
|
||||
g.neovide_padding_left = 0
|
||||
g.neovide_refresh_rate = 144
|
||||
g.neovide_theme = 'light'
|
||||
|
||||
-- Neovide Fonts
|
||||
o.guifont = "JetBrainsMono Nerd Font:h13:Medium"
|
||||
else
|
||||
-- require("notify").notify("Not running in NeoVide")
|
||||
end
|
||||
'';
|
||||
|
||||
extraConfigLua = ''
|
||||
-- Hide inline diagnostics and show border
|
||||
vim.diagnostic.config({
|
||||
virtual_text = false,
|
||||
float = { border = "rounded" }
|
||||
})
|
||||
|
||||
-- Allow navigating popupmenu completion with Up/Down
|
||||
vim.api.nvim_set_keymap('c', '<Down>', 'v:lua.get_wildmenu_key("<right>", "<down>")', { expr = true })
|
||||
vim.api.nvim_set_keymap('c', '<Up>', 'v:lua.get_wildmenu_key("<left>", "<up>")', { expr = true })
|
||||
|
||||
function _G.get_wildmenu_key(key_wildmenu, key_regular)
|
||||
return vim.fn.wildmenumode() ~= 0 and key_wildmenu or key_regular
|
||||
end
|
||||
'';
|
||||
|
||||
extraLuaPackages = with pkgs.lua51Packages; [
|
||||
# TODO: Doesn't work
|
||||
# For rest
|
||||
# lua-curl
|
||||
# xml2lua
|
||||
# mimetypes
|
||||
|
||||
jsregexp # For tree-sitter
|
||||
];
|
||||
extraLuaPackages = with pkgs.lua51Packages; [];
|
||||
|
||||
extraPython3Packages = p: [
|
||||
# For CHADtree
|
||||
@ -205,6 +181,10 @@ in {
|
||||
# pattern = "*";
|
||||
callback = {__raw = "function() require('lint').try_lint() end";};
|
||||
}
|
||||
{
|
||||
event = ["BufWritePre"];
|
||||
callback = {__raw = "function() require('conform').format() end";};
|
||||
}
|
||||
];
|
||||
|
||||
# TODO: Toggle wrapping
|
||||
@ -212,16 +192,15 @@ in {
|
||||
# TODO: Toggle format on paste
|
||||
keymaps = import ./keybinds.nix {inherit lib mylib;};
|
||||
|
||||
##################################################################################################################################
|
||||
# Lazy Plugins #
|
||||
##################################################################################################################################
|
||||
plugins.lazy = {
|
||||
enable = true;
|
||||
|
||||
# TODO: Would be nicer if large dependencies could be referenced by name
|
||||
plugins = [
|
||||
plugins = builtins.concatLists [
|
||||
(import ./interface.nix {inherit lib mylib pkgs;})
|
||||
(import ./languages.nix {inherit lib mylib pkgs;})
|
||||
[
|
||||
#
|
||||
# Not available in NixVim
|
||||
# Theme
|
||||
#
|
||||
|
||||
{
|
||||
@ -249,9 +228,49 @@ in {
|
||||
}
|
||||
|
||||
{
|
||||
name = "lspconfig";
|
||||
pkg = pkgs.vimPlugins.nvim-lspconfig;
|
||||
dependencies = [
|
||||
name = "web-devicons";
|
||||
pkg = pkgs.vimPlugins.nvim-web-devicons;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("nvim-web-devicons").setup(opts)
|
||||
end
|
||||
'';
|
||||
}
|
||||
|
||||
#
|
||||
# Plugins
|
||||
#
|
||||
|
||||
{
|
||||
name = "better-escape";
|
||||
pkg = pkgs.vimPlugins.better-escape-nvim;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("better_escape").setup(opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
mapping = ["jk"];
|
||||
timeout = 200; # In ms
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "chadtree";
|
||||
pkg = pkgs.vimPlugins.chadtree;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
vim.api.nvim_set_var("chadtree_settings", opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
theme.text_colour_set = "nerdtree_syntax_dark";
|
||||
xdg = true;
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "cmp";
|
||||
pkg = pkgs.vimPlugins.nvim-cmp;
|
||||
@ -369,135 +388,6 @@ in {
|
||||
'';
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "illuminate";
|
||||
pkg = pkgs.vimPlugins.vim-illuminate;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("illuminate").configure(opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
filetypesDenylist = [
|
||||
"DressingSelect"
|
||||
"Outline"
|
||||
"TelescopePrompt"
|
||||
"alpha"
|
||||
"harpoon"
|
||||
"toggleterm"
|
||||
"neo-tree"
|
||||
"Spectre"
|
||||
"reason"
|
||||
];
|
||||
};
|
||||
}
|
||||
# {
|
||||
# name = "inc-rename";
|
||||
# pkg = pkgs.vimPlugins.inc-rename-nvim;
|
||||
# config = ''
|
||||
# function(_, opts)
|
||||
# require("inc_rename").setup(opts)
|
||||
# end
|
||||
# '';
|
||||
# }
|
||||
];
|
||||
lazy = false;
|
||||
config = let
|
||||
servers = mylib.generators.toLuaObject [
|
||||
{name = "cmake";}
|
||||
{name = "clojure_lsp";}
|
||||
{name = "clangd";}
|
||||
{name = "texlab";}
|
||||
{name = "rust_analyzer";}
|
||||
{name = "pyright";}
|
||||
{name = "nil_ls";}
|
||||
|
||||
{
|
||||
name = "hls";
|
||||
cmd = [
|
||||
"haskell-language-server-wrapper"
|
||||
"--lsp"
|
||||
];
|
||||
}
|
||||
];
|
||||
in ''
|
||||
function(_, opts)
|
||||
local __lspOnAttach = function(client, bufnr) end
|
||||
|
||||
local __lspCapabilities = function()
|
||||
capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities())
|
||||
return capabilities
|
||||
end
|
||||
|
||||
local __setup = {
|
||||
on_attach = __lspOnAttach,
|
||||
capabilities = __lspCapabilities(),
|
||||
}
|
||||
|
||||
for i, server in ipairs(${servers}) do
|
||||
if type(server) == "string" then
|
||||
require("lspconfig")[server].setup(__setup)
|
||||
else
|
||||
local options = server.extraOptions
|
||||
|
||||
if options == nil then
|
||||
options = __setup
|
||||
else
|
||||
options = vim.tbl_extend("keep", options, __setup)
|
||||
end
|
||||
|
||||
require("lspconfig")[server.name].setup(options)
|
||||
end
|
||||
end
|
||||
end
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
name = "web-devicons";
|
||||
pkg = pkgs.vimPlugins.nvim-web-devicons;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("nvim-web-devicons").setup(opts)
|
||||
end
|
||||
'';
|
||||
}
|
||||
|
||||
#
|
||||
# Also available in NixVim
|
||||
#
|
||||
|
||||
{
|
||||
name = "better-escape";
|
||||
pkg = pkgs.vimPlugins.better-escape-nvim;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("better_escape").setup(opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
mapping = ["jk"];
|
||||
timeout = 200; # In ms
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "chadtree";
|
||||
pkg = pkgs.vimPlugins.chadtree;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
vim.api.nvim_set_var("chadtree_settings", opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
theme.text_colour_set = "nerdtree_syntax_dark";
|
||||
xdg = true;
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "comment";
|
||||
@ -533,32 +423,6 @@ in {
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "conform";
|
||||
pkg = pkgs.vimPlugins.conform-nvim;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("conform").setup(opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
formatters_by_ft = {
|
||||
c = ["clang-format"];
|
||||
h = ["clang-format"];
|
||||
cpp = ["clang-format"];
|
||||
hpp = ["clang-format"];
|
||||
css = [["prettierd" "prettier"]];
|
||||
html = [["prettierd" "prettier"]];
|
||||
java = ["google-java-format"];
|
||||
javascript = [["prettierd" "prettier"]];
|
||||
markdown = [["prettierd" "prettier"]];
|
||||
nix = ["alejandra"];
|
||||
python = ["black"];
|
||||
rust = ["rustfmt"];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
# TODO: Config
|
||||
{
|
||||
name = "flash";
|
||||
@ -603,13 +467,27 @@ in {
|
||||
}
|
||||
|
||||
{
|
||||
name = "headlines";
|
||||
pkg = pkgs.vimPlugins.headlines-nvim;
|
||||
name = "illuminate";
|
||||
pkg = pkgs.vimPlugins.vim-illuminate;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("headlines").setup(opts)
|
||||
require("illuminate").configure(opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
filetypesDenylist = [
|
||||
"DressingSelect"
|
||||
"Outline"
|
||||
"TelescopePrompt"
|
||||
"alpha"
|
||||
"harpoon"
|
||||
"toggleterm"
|
||||
"neo-tree"
|
||||
"Spectre"
|
||||
"reason"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
@ -634,112 +512,6 @@ in {
|
||||
pkg = pkgs.vimPlugins.lazygit-nvim;
|
||||
}
|
||||
|
||||
{
|
||||
name = "lint";
|
||||
pkg = pkgs.vimPlugins.nvim-lint;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
local lint = require("lint")
|
||||
|
||||
for k, v in pairs(opts) do
|
||||
lint[k] = v
|
||||
end
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
linters_by_ft = {
|
||||
c = ["clang-tidy"];
|
||||
h = ["clang-tidy"];
|
||||
cpp = ["clang-tidy"];
|
||||
hpp = ["clang-tidy"];
|
||||
clojure = ["clj-kondo"];
|
||||
java = ["checkstyle"];
|
||||
javascript = ["eslint_d"];
|
||||
markdown = ["vale"];
|
||||
nix = ["statix"];
|
||||
python = ["flake8"];
|
||||
rust = ["clippy"];
|
||||
text = ["vale"];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "lualine";
|
||||
pkg = pkgs.vimPlugins.lualine-nvim;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("lualine").setup(opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
extensions = ["fzf" "chadtree" "neo-tree" "toggleterm" "trouble"];
|
||||
|
||||
options = {
|
||||
always_divide_middle = true;
|
||||
globalstatus = true;
|
||||
ignore_focus = ["neo-tree" "chadtree"];
|
||||
section_separators = {
|
||||
left = "";
|
||||
right = "";
|
||||
# left = "";
|
||||
# right = "";
|
||||
};
|
||||
|
||||
component_separators = {
|
||||
left = "";
|
||||
right = "";
|
||||
# left = "";
|
||||
# right = "";
|
||||
};
|
||||
};
|
||||
|
||||
sections = {
|
||||
lualine_a = [
|
||||
{
|
||||
name = "mode";
|
||||
# extraConfig = {
|
||||
# separator = {
|
||||
# left = "";
|
||||
# };
|
||||
# right_padding = "2";
|
||||
# };
|
||||
}
|
||||
];
|
||||
lualine_b = ["branch" "diff" "diagnostics"];
|
||||
lualine_c = [
|
||||
{
|
||||
name = "filename";
|
||||
extraConfig = {
|
||||
path = 1;
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
lualine_x = ["filetype" "encoding" "fileformat"];
|
||||
lualine_y = ["progress" "searchcount" "selectioncount"];
|
||||
lualine_z = [
|
||||
{
|
||||
name = "location";
|
||||
# extraConfig = {
|
||||
# separator = {
|
||||
# right = "";
|
||||
# };
|
||||
# left_padding = "2";
|
||||
# };
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
tabline = {
|
||||
lualine_a = ["buffers"];
|
||||
lualine_z = ["tabs"];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
# TODO: Snippet configs
|
||||
{
|
||||
name = "luasnip";
|
||||
@ -782,91 +554,6 @@ in {
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "noice";
|
||||
pkg = pkgs.vimPlugins.noice-nvim;
|
||||
dependencies = [
|
||||
{
|
||||
name = "nui"; # For noice
|
||||
pkg = pkgs.vimPlugins.nui-nvim;
|
||||
lazy = false;
|
||||
}
|
||||
];
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("noice").setup(opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
presets = {
|
||||
bottom_search = false;
|
||||
command_palette = true;
|
||||
long_message_to_split = true;
|
||||
inc_rename = true;
|
||||
lsp_doc_border = true;
|
||||
};
|
||||
|
||||
lsp = {
|
||||
documentation = {
|
||||
opts = {
|
||||
lang = "markdown";
|
||||
replace = true;
|
||||
render = "plain";
|
||||
border = "rounded"; # single or rounded
|
||||
format = ["{message}"];
|
||||
win_options = {
|
||||
concealcursor = "n";
|
||||
conceallevel = 3;
|
||||
};
|
||||
};
|
||||
view = "hover";
|
||||
};
|
||||
|
||||
override = {
|
||||
"vim.lsp.util.convert_input_to_markdown_lines" = true;
|
||||
"vim.lsp.util.stylize_markdown" = true;
|
||||
"cmp.entry.get_documentation" = true;
|
||||
};
|
||||
};
|
||||
|
||||
notify = {
|
||||
enabled = true;
|
||||
};
|
||||
|
||||
popupmenu = {
|
||||
enabled = true;
|
||||
backend = "nui"; # cmp completion is broken
|
||||
};
|
||||
|
||||
# cmdline.enabled = false;
|
||||
# messages.enabled = false;
|
||||
|
||||
routes = [
|
||||
# Hide inline search count info
|
||||
{
|
||||
filter = {
|
||||
event = "msg_show";
|
||||
kind = "search_count";
|
||||
};
|
||||
opts = {skip = true;};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "notify";
|
||||
pkg = pkgs.vimPlugins.nvim-notify;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
vim.notify = require("notify")
|
||||
require("notify").setup(opts)
|
||||
end
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
name = "autopairs";
|
||||
pkg = pkgs.vimPlugins.nvim-autopairs;
|
||||
@ -928,55 +615,6 @@ in {
|
||||
lazy = false;
|
||||
}
|
||||
|
||||
{
|
||||
name = "telescope";
|
||||
pkg = pkgs.vimPlugins.telescope-nvim;
|
||||
dependencies = [
|
||||
{
|
||||
name = "plenary"; # For telescope
|
||||
pkg = pkgs.vimPlugins.plenary-nvim;
|
||||
}
|
||||
{
|
||||
name = "telescope-undo";
|
||||
pkg = pkgs.vimPlugins.telescope-undo-nvim;
|
||||
}
|
||||
{
|
||||
name = "telescope-ui-select";
|
||||
pkg = pkgs.vimPlugins.telescope-ui-select-nvim;
|
||||
}
|
||||
{
|
||||
name = "telescope-fzf-native";
|
||||
pkg = pkgs.vimPlugins.telescope-fzf-native-nvim;
|
||||
}
|
||||
];
|
||||
lazy = false;
|
||||
config = let
|
||||
extensions = mylib.generators.toLuaObject [
|
||||
"undo"
|
||||
"ui-select"
|
||||
"fzf"
|
||||
];
|
||||
in ''
|
||||
function(_, opts)
|
||||
local telescope = require("telescope")
|
||||
telescope.setup(opts)
|
||||
|
||||
for i, extension in ipairs(${extensions}) do
|
||||
telescope.load_extension(extension)
|
||||
end
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
defaults = {
|
||||
mappings = {
|
||||
i = {
|
||||
"<Esc>" = {__raw = ''function(...) return require("telescope.actions").close(...) end'';};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "toggleterm";
|
||||
pkg = pkgs.vimPlugins.toggleterm-nvim;
|
||||
@ -1007,32 +645,6 @@ in {
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "treesitter";
|
||||
pkg = pkgs.vimPlugins.nvim-treesitter.withAllGrammars;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("nvim-treesitter.configs").setup(opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
highlight.enable = true;
|
||||
indent.enable = true;
|
||||
|
||||
# TODO: Doesn't work
|
||||
incremental_selection = {
|
||||
enable = true;
|
||||
keymaps = {
|
||||
"init_selection" = "gnn";
|
||||
"node_decremental" = "grm";
|
||||
"node_incremental" = "grn";
|
||||
"scope_incremental" = "grc";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "trim";
|
||||
pkg = pkgs.vimPlugins.trim-nvim;
|
||||
@ -1059,18 +671,6 @@ in {
|
||||
pkg = pkgs.vimPlugins.vim-bbye;
|
||||
}
|
||||
|
||||
{
|
||||
name = "which-key";
|
||||
pkg = pkgs.vimPlugins.which-key-nvim;
|
||||
lazy = false;
|
||||
priority = 100;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("which-key").setup(opts)
|
||||
end
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
name = "yanky"; # TODO: Bindings
|
||||
pkg = pkgs.vimPlugins.yanky-nvim;
|
||||
@ -1081,17 +681,11 @@ in {
|
||||
end
|
||||
'';
|
||||
}
|
||||
]
|
||||
];
|
||||
};
|
||||
|
||||
##################################################################################################################################
|
||||
# NixVim Plugins #
|
||||
##################################################################################################################################
|
||||
|
||||
# TODO
|
||||
# clangd-extensions = {
|
||||
# enable = true;
|
||||
# };
|
||||
# NixVim plugins
|
||||
|
||||
# TODO: Figure out how debugging from nvim works...
|
||||
# Debug-Adapter-Protocol
|
||||
|
@ -1,12 +1,12 @@
|
||||
-- Hide inline diagnostics and show border
|
||||
vim.diagnostic.config({
|
||||
virtual_text = false,
|
||||
float = { border = "rounded" }
|
||||
float = { border = "rounded" },
|
||||
})
|
||||
|
||||
-- Allow navigating popupmenu completion with Up/Down
|
||||
vim.api.nvim_set_keymap('c', '<Down>', 'v:lua.get_wildmenu_key("<right>", "<down>")', { expr = true })
|
||||
vim.api.nvim_set_keymap('c', '<Up>', 'v:lua.get_wildmenu_key("<left>", "<up>")', { expr = true })
|
||||
vim.api.nvim_set_keymap("c", "<Down>", 'v:lua.get_wildmenu_key("<right>", "<down>")', { expr = true })
|
||||
vim.api.nvim_set_keymap("c", "<Up>", 'v:lua.get_wildmenu_key("<left>", "<up>")', { expr = true })
|
||||
|
||||
function _G.get_wildmenu_key(key_wildmenu, key_regular)
|
||||
return vim.fn.wildmenumode() ~= 0 and key_wildmenu or key_regular
|
||||
|
@ -8,14 +8,14 @@ if g.neovide then
|
||||
|
||||
g.neovide_cursor_animate_command_line = true
|
||||
g.neovide_cursor_animate_in_insert_mode = true
|
||||
g.neovide_fullscreen = false
|
||||
g.neovide_hide_mouse_when_typing = false
|
||||
-- g.neovide_fullscreen = false
|
||||
g.neovide_hide_mouse_when_typing = true
|
||||
g.neovide_padding_top = 0
|
||||
g.neovide_padding_bottom = 0
|
||||
g.neovide_padding_right = 0
|
||||
g.neovide_padding_left = 0
|
||||
g.neovide_refresh_rate = 144
|
||||
g.neovide_theme = 'light'
|
||||
-- g.neovide_theme = "light"
|
||||
|
||||
-- Neovide Fonts
|
||||
o.guifont = "JetBrainsMono Nerd Font:h13:Medium"
|
||||
|
@ -3,7 +3,6 @@
|
||||
mylib,
|
||||
...
|
||||
}: [
|
||||
[
|
||||
# No Leader
|
||||
{
|
||||
mode = "n";
|
||||
@ -224,6 +223,13 @@
|
||||
options.desc = "Show help tags";
|
||||
}
|
||||
|
||||
# Quit <leader>q
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>q";
|
||||
action = "+quit";
|
||||
}
|
||||
|
||||
# Buffers <leader>b
|
||||
{
|
||||
mode = "n";
|
||||
@ -485,4 +491,3 @@
|
||||
options.desc = "Show LSP line diagnostics";
|
||||
}
|
||||
]
|
||||
]
|
||||
|
@ -4,6 +4,16 @@
|
||||
pkgs,
|
||||
...
|
||||
}: [
|
||||
{
|
||||
name = "clangd-extensions";
|
||||
pkg = pkgs.vimPlugins.clangd_extensions-nvim;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("clangd_extensions").setup(opts)
|
||||
end
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
name = "conform";
|
||||
pkg = pkgs.vimPlugins.conform-nvim;
|
||||
@ -31,6 +41,12 @@
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "haskell-tools";
|
||||
pkg = pkgs.vimPlugins.haskell-tools-nvim;
|
||||
# Don't call setup!
|
||||
}
|
||||
|
||||
{
|
||||
name = "lint";
|
||||
pkg = pkgs.vimPlugins.nvim-lint;
|
||||
@ -66,25 +82,29 @@
|
||||
{
|
||||
name = "lspconfig";
|
||||
pkg = pkgs.vimPlugins.nvim-lspconfig;
|
||||
dependencies = [
|
||||
{
|
||||
name = "neodev";
|
||||
pkg = pkgs.vimPlugins.neodev-nvim;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("neodev").setup(opts)
|
||||
end
|
||||
'';
|
||||
}
|
||||
];
|
||||
lazy = false;
|
||||
config = let
|
||||
servers = mylib.generators.toLuaObject [
|
||||
{name = "clangd";}
|
||||
{name = "clojure_lsp";}
|
||||
{name = "cmake";}
|
||||
{name = "lua-ls";}
|
||||
{name = "lua_ls";}
|
||||
{name = "nil_ls";}
|
||||
{name = "pyright";}
|
||||
{name = "rust_analyzer";}
|
||||
# {name = "rust_analyzer";} # Don't set up when using rustaceanvim
|
||||
{name = "texlab";}
|
||||
|
||||
{
|
||||
name = "hls";
|
||||
cmd = [
|
||||
"haskell-language-server-wrapper"
|
||||
"--lsp"
|
||||
];
|
||||
}
|
||||
# {name = "hls";} # Don't set up when using haskell-tools
|
||||
];
|
||||
in ''
|
||||
function(_, opts)
|
||||
@ -121,17 +141,94 @@
|
||||
}
|
||||
|
||||
{
|
||||
name = "rustaceanvim";
|
||||
pkg = pkgs.vimPlugins.rustaceanvim;
|
||||
# Don't call setup!
|
||||
}
|
||||
|
||||
(let
|
||||
nvim-plugintree = pkgs.vimPlugins.nvim-treesitter.withPlugins (
|
||||
p:
|
||||
with p; [
|
||||
bash
|
||||
bibtex
|
||||
c
|
||||
clojure
|
||||
cmake
|
||||
cpp
|
||||
csv
|
||||
disassembly
|
||||
dockerfile
|
||||
dot
|
||||
doxygen
|
||||
fish
|
||||
gitignore
|
||||
haskell
|
||||
haskell_persistent
|
||||
html
|
||||
ini
|
||||
java
|
||||
javascript
|
||||
json
|
||||
julia
|
||||
kotlin
|
||||
lua
|
||||
make
|
||||
markdown
|
||||
markdown_inline
|
||||
nasm
|
||||
nix
|
||||
objdump
|
||||
org
|
||||
passwd
|
||||
perl
|
||||
printf
|
||||
python
|
||||
r
|
||||
regex
|
||||
requirements
|
||||
ruby
|
||||
rust
|
||||
scala
|
||||
scss
|
||||
sql
|
||||
toml
|
||||
typescript
|
||||
verilog
|
||||
xml
|
||||
yaml
|
||||
]
|
||||
);
|
||||
treesitter-parsers = pkgs.symlinkJoin {
|
||||
name = "treesitter-parsers";
|
||||
paths = nvim-plugintree.dependencies;
|
||||
};
|
||||
in {
|
||||
name = "treesitter";
|
||||
pkg = pkgs.vimPlugins.nvim-treesitter.withAllGrammars;
|
||||
pkg = pkgs.vimPlugins.nvim-treesitter;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
vim.opt.runtimepath:append("${nvim-plugintree}")
|
||||
vim.opt.runtimepath:append("${treesitter-parsers}")
|
||||
|
||||
require("nvim-treesitter.configs").setup(opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
highlight.enable = true;
|
||||
indent.enable = true;
|
||||
auto_install = false;
|
||||
ensure_installed = [];
|
||||
parser_install_dir = "${treesitter-parsers}";
|
||||
|
||||
indent = {
|
||||
enable = true;
|
||||
# disable = ["python" "yaml"];
|
||||
};
|
||||
highlight = {
|
||||
enable = true;
|
||||
# disable = ["yaml"];
|
||||
additional_vim_regex_highlighting = false;
|
||||
};
|
||||
|
||||
# TODO: Doesn't work
|
||||
incremental_selection = {
|
||||
@ -144,5 +241,5 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
})
|
||||
]
|
||||
|
Reference in New Issue
Block a user