jj, fish, better kanata, etc
This commit is contained in:
parent
52b1728e2e
commit
d030ebe744
17 changed files with 1642 additions and 938 deletions
|
|
@ -1,28 +1,17 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
render-markdown = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "render-markdown";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "MeanderingProgrammer";
|
||||
repo = "markdown.nvim";
|
||||
rev = "78ef39530266b3a0736c48b46c3f5d1ab022c7db";
|
||||
hash = "sha256-mddnBvIrekHh60Ix6qIYAnv10Mu40LamGI47EXk9wSo=";
|
||||
};
|
||||
};
|
||||
# for lsp/cmp inside markdown code blocks
|
||||
otter = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "otter";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "jmbuhr";
|
||||
repo = "otter.nvim";
|
||||
rev = "cbb1be0586eae18cbea38ada46af428d2bebf81a";
|
||||
hash = "sha256-eya/8rG3O8UFeeBRDa5U8v3qay+q3iFwPnYtdX7ptCA=";
|
||||
};
|
||||
map = mode: key: action: {
|
||||
inherit mode key action;
|
||||
};
|
||||
in
|
||||
{
|
||||
home = { sessionVariables = { EDITOR = "nvim"; }; };
|
||||
|
||||
imports = [
|
||||
./options.nix
|
||||
./plugins.nix
|
||||
];
|
||||
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
globals.mapleader = " ";
|
||||
|
|
@ -32,13 +21,50 @@ in
|
|||
vimAlias = true;
|
||||
|
||||
# Highlight and remove extra white spaces
|
||||
highlight.ExtraWhitespace.bg = "red";
|
||||
# same color as cursorline as per
|
||||
# https://github.com/joshdick/onedark.vim/blob/390b893d361c356ac1b00778d849815f2aa44ae4/autoload/onedark.vim
|
||||
highlight.ExtraWhitespace.bg = "#2C323C";
|
||||
match.ExtraWhitespace = "\\s\\+$";
|
||||
|
||||
package = pkgs.neovim-unwrapped;
|
||||
|
||||
clipboard.providers.wl-copy.enable = true;
|
||||
|
||||
performance = {
|
||||
byteCompileLua.enable = true;
|
||||
combinePlugins = {
|
||||
enable = true;
|
||||
|
||||
standalonePlugins = [
|
||||
# clashes with lualine
|
||||
"onedark.nvim"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# package = pkgs.neovim-unwrapped;
|
||||
package = (pkgs.neovim-unwrapped.override { lua = pkgs.luajit; }).overrideAttrs (_: {
|
||||
version = "git";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "neovim";
|
||||
repo = "neovim";
|
||||
rev = "76dcc7029b200e1d85024d7ba4a34c602e730dbe";
|
||||
hash = "sha256-y3LmGebXuQhLz9w1IzkDU8b464WvMvPCbIImpVvxmcI=";
|
||||
};
|
||||
buildInputs = [
|
||||
(pkgs.utf8proc.overrideAttrs (_: {
|
||||
version = "git";
|
||||
|
||||
src = pkgs.fetchFromGitHub
|
||||
{
|
||||
owner = "JuliaStrings";
|
||||
repo = "utf8proc";
|
||||
rev = "3de4596fbe28956855df2ecb3c11c0bbc3535838";
|
||||
hash = "sha256-DNnrKLwks3hP83K56Yjh9P3cVbivzssblKIx4M/RKqw=";
|
||||
};
|
||||
|
||||
}))
|
||||
] ++ pkgs.neovim-unwrapped.buildInputs ++ pkgs.neovim-unwrapped.nativeBuildInputs;
|
||||
});
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
key = "<f2>";
|
||||
|
|
@ -53,339 +79,36 @@ in
|
|||
action = "<cmd>Lspsaga code_action<cr>";
|
||||
}
|
||||
|
||||
# {
|
||||
# key = "/";
|
||||
# action = "<cmd>lua require('spectre').open_file_search({select_word=true})<CR>";
|
||||
# }
|
||||
|
||||
(map "n" "t" "<cmd>Neotree toggle<cr>")
|
||||
|
||||
# tab for indent/dedent
|
||||
(map "n" "<tab>" ">>_")
|
||||
(map "n" "<S-tab>" "<<_")
|
||||
(map "i" "<S-tab>" "<c-d>")
|
||||
(map "v" "<tab>" ">gv")
|
||||
(map "v" "<S-tab>" "<gv")
|
||||
];
|
||||
|
||||
plugins = {
|
||||
treesitter = {
|
||||
enable = true;
|
||||
colorschemes.onedark = {
|
||||
enable = true;
|
||||
settings = {
|
||||
style = "deep";
|
||||
|
||||
nixGrammars = true;
|
||||
nixvimInjections = true;
|
||||
|
||||
settings = {
|
||||
indent.enable = true;
|
||||
ensure_installed = "all";
|
||||
ignore_install = [
|
||||
"wing"
|
||||
];
|
||||
|
||||
highlight.enable = true;
|
||||
};
|
||||
};
|
||||
rainbow-delimiters.enable = true;
|
||||
vim-surround.enable = true;
|
||||
cmp-nvim-lsp.enable = true;
|
||||
lsp-format.enable = true;
|
||||
fugitive.enable = true;
|
||||
lspkind.enable = true;
|
||||
crates-nvim.enable = true;
|
||||
fidget.enable = true;
|
||||
cmp.enable = true;
|
||||
nvim-autopairs.enable = true;
|
||||
|
||||
auto-session = {
|
||||
enable = true;
|
||||
settings = {
|
||||
auto_save_enabled = true;
|
||||
auto_restore_enabled = true;
|
||||
pre_save_cmds = [ "Neotree close" ];
|
||||
post_restore_cmds = [ "Neotree filesystem show" ];
|
||||
};
|
||||
};
|
||||
|
||||
comment = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
sticky = true;
|
||||
};
|
||||
};
|
||||
|
||||
neo-tree = {
|
||||
enable = true;
|
||||
closeIfLastWindow = true;
|
||||
window = {
|
||||
position = "right";
|
||||
width = 30;
|
||||
mappings = {
|
||||
"<bs>" = "navigate_up";
|
||||
"." = "set_root";
|
||||
"/" = "fuzzy_finder";
|
||||
"f" = "filter_on_submit";
|
||||
"h" = "show_help";
|
||||
};
|
||||
};
|
||||
filesystem = {
|
||||
followCurrentFile.enabled = true;
|
||||
filteredItems = {
|
||||
hideHidden = false;
|
||||
hideDotfiles = false;
|
||||
forceVisibleInEmptyFolder = true;
|
||||
hideGitignored = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
nvim-lightbulb = {
|
||||
enable = true;
|
||||
settings = {
|
||||
autocmd = {
|
||||
enabled = true;
|
||||
updatetime = 200;
|
||||
};
|
||||
line = {
|
||||
enabled = true;
|
||||
};
|
||||
number = {
|
||||
enabled = true;
|
||||
hl = "LightBulbNumber";
|
||||
};
|
||||
float = {
|
||||
enabled = false;
|
||||
text = "💡";
|
||||
};
|
||||
sign = {
|
||||
enabled = true;
|
||||
text = "💡";
|
||||
};
|
||||
status_text = {
|
||||
enabled = false;
|
||||
text = "💡";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
gitsigns = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
current_line_blame = true;
|
||||
current_line_blame_opts = {
|
||||
virt_text = true;
|
||||
virt_text_pos = "eol";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
lspsaga = {
|
||||
enable = true;
|
||||
lightbulb.enable = false;
|
||||
codeAction.keys = {
|
||||
quit = "<Esc>";
|
||||
};
|
||||
};
|
||||
|
||||
typst-vim = {
|
||||
enable = true;
|
||||
settings = {
|
||||
cmd = "${pkgs.typst}/bin/typst";
|
||||
conceal_math = 1;
|
||||
auto_close_toc = 1;
|
||||
};
|
||||
};
|
||||
|
||||
lualine = {
|
||||
enable = true;
|
||||
settings.options.theme = "onedark";
|
||||
};
|
||||
|
||||
rustaceanvim = {
|
||||
enable = true;
|
||||
rustAnalyzerPackage = pkgs.rust-analyzer;
|
||||
|
||||
settings = {
|
||||
auto_attach = true;
|
||||
server = {
|
||||
standalone = false;
|
||||
default_settings = {
|
||||
rust-analyzer = {
|
||||
inlayHints = { lifetimeElisionHints = { enable = "always"; }; };
|
||||
check = { command = "clippy"; };
|
||||
cachePriming.enable = false;
|
||||
};
|
||||
# cargo = {
|
||||
# buildScripts.enable = true;
|
||||
# features = "all";
|
||||
# runBuildScripts = true;
|
||||
# loadOutDirsFromCheck = true;
|
||||
# };
|
||||
# checkOnSave = true;
|
||||
# check = {
|
||||
# allFeatures = true;
|
||||
# command = "clippy";
|
||||
# extraArgs = [ "--no-deps" ];
|
||||
# };
|
||||
# procMacro = { enable = true; };
|
||||
# imports = {
|
||||
# granularity = { group = "module"; };
|
||||
# prefix = "self";
|
||||
# };
|
||||
# files = {
|
||||
# excludeDirs =
|
||||
# [ ".cargo" ".direnv" ".git" "node_modules" "target" ];
|
||||
# };
|
||||
#
|
||||
# inlayHints = {
|
||||
# bindingModeHints.enable = true;
|
||||
# closureStyle = "rust_analyzer";
|
||||
# closureReturnTypeHints.enable = "always";
|
||||
# discriminantHints.enable = "always";
|
||||
# expressionAdjustmentHints.enable = "always";
|
||||
# implicitDrops.enable = true;
|
||||
# lifetimeElisionHints.enable = "always";
|
||||
# rangeExclusiveHints.enable = true;
|
||||
# reborrowHints.enable = "mutable";
|
||||
# };
|
||||
#
|
||||
# rustc.source = "discover";
|
||||
#
|
||||
# options.diagnostics = {
|
||||
# enable = true;
|
||||
# styleLints.enable = true;
|
||||
# };
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
lsp = {
|
||||
enable = true;
|
||||
|
||||
servers = {
|
||||
astro.enable = true;
|
||||
cssls.enable = true;
|
||||
nil_ls = {
|
||||
enable = true;
|
||||
extraOptions = {
|
||||
nix = {
|
||||
maxMemoryMB = 0;
|
||||
flake = {
|
||||
autoArchive = true;
|
||||
autoEvalInputs = true;
|
||||
nixpkgsInputName = "nixpkgs";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
clangd = {
|
||||
enable = true;
|
||||
filetypes = [ "c" "cpp" "objc" "objcpp" ];
|
||||
};
|
||||
eslint = {
|
||||
enable = true;
|
||||
filetypes =
|
||||
[ "javascript" "javascriptreact" "typescript" "typescriptreact" ];
|
||||
};
|
||||
html = {
|
||||
enable = true;
|
||||
filetypes = [ "html" ];
|
||||
};
|
||||
jsonls = {
|
||||
enable = true;
|
||||
filetypes = [ "json" "jsonc" ];
|
||||
};
|
||||
pyright = {
|
||||
enable = true;
|
||||
filetypes = [ "python" ];
|
||||
};
|
||||
bashls = {
|
||||
enable = true;
|
||||
|
||||
filetypes = [ "sh" "bash" ];
|
||||
};
|
||||
# ts_ls = {
|
||||
# enable = true;
|
||||
# filetypes =
|
||||
# [ "javascript" "javascriptreact" "typescript" "typescriptreact" ];
|
||||
# };
|
||||
marksman.enable = true;
|
||||
yamlls = {
|
||||
enable = true;
|
||||
filetypes = [ "yaml" ];
|
||||
};
|
||||
highlights = {
|
||||
# bright green doccomments
|
||||
"@lsp.type.comment".fg = "#77B767";
|
||||
"@comment.documentation.rust".fg = "#77B767";
|
||||
"@comment.documentation".fg = "#77B767";
|
||||
"@comment".fg = "#426639";
|
||||
};
|
||||
|
||||
inlayHints = true;
|
||||
|
||||
keymaps = {
|
||||
lspBuf = {
|
||||
"<leader>;" = "format";
|
||||
"gh" = "hover";
|
||||
};
|
||||
};
|
||||
};
|
||||
floaterm = {
|
||||
enable = true;
|
||||
opener = "edit";
|
||||
width = 0.8;
|
||||
height = 0.8;
|
||||
};
|
||||
telescope = {
|
||||
enable = true;
|
||||
|
||||
extensions.ui-select.enable = true;
|
||||
extensions.fzf-native.enable = true;
|
||||
|
||||
settings = {
|
||||
defaults = {
|
||||
path_display = [ "smart" ];
|
||||
layout_strategy = "horizontal";
|
||||
layout_config = {
|
||||
width = 0.99;
|
||||
height = 0.99;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# tabs
|
||||
barbar = {
|
||||
enable = true;
|
||||
settings = {
|
||||
options.diagnostics = "nvim_lsp";
|
||||
focus_on_close = "previous";
|
||||
};
|
||||
};
|
||||
|
||||
none-ls = {
|
||||
enable = true;
|
||||
sources = {
|
||||
formatting.nixpkgs_fmt.enable = true;
|
||||
code_actions.statix.enable = true;
|
||||
diagnostics = {
|
||||
statix.enable = true;
|
||||
deadnix.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
nix.enable = true;
|
||||
|
||||
web-devicons.enable = true;
|
||||
};
|
||||
extraPlugins = with pkgs.vimPlugins; [
|
||||
onedark-nvim
|
||||
vim-vsnip
|
||||
cmp-vsnip
|
||||
cmp-path
|
||||
cmp-spell
|
||||
nvim-web-devicons
|
||||
telescope-ui-select-nvim
|
||||
telescope-fzf-native-nvim
|
||||
vim-suda
|
||||
render-markdown
|
||||
otter
|
||||
vim-astro
|
||||
nvim-web-devicons
|
||||
vim-visual-multi
|
||||
vim-gh-line
|
||||
# vim-bufkill
|
||||
BufOnly-vim
|
||||
neoconf-nvim
|
||||
vim-autoswap
|
||||
targets-vim
|
||||
];
|
||||
|
||||
extraConfigLuaPre = ''
|
||||
require("neoconf").setup({})
|
||||
|
|
@ -396,10 +119,5 @@ in
|
|||
}
|
||||
'' + (builtins.readFile ./config.lua);
|
||||
|
||||
opts = {
|
||||
lazyredraw = false;
|
||||
startofline = true;
|
||||
showmatch = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue