514 lines
16 KiB
Nix
514 lines
16 KiB
Nix
{
|
|
den,
|
|
modules,
|
|
lib,
|
|
inputs,
|
|
...
|
|
}:
|
|
{
|
|
# Its in its own folder for future modulizaion efforts
|
|
flake-file.inputs = {
|
|
nixvim = {
|
|
url = "github:nix-community/nixvim";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
modules = {
|
|
nixvim = {
|
|
nixos =
|
|
{ home-manager, ... }:
|
|
{
|
|
};
|
|
homeManager =
|
|
{ pkgs, ... }:
|
|
let
|
|
tiny-code-action = pkgs.vimUtils.buildVimPlugin {
|
|
name = "tiny-code-action.nvim";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "rachartier";
|
|
repo = "tiny-code-action.nvim";
|
|
rev = "main";
|
|
hash = "sha256-UF9zeO5Uujdt2MEwy2d2Lhk6JRnEN4vrEvYslv0/zaA";
|
|
};
|
|
nvimSkipModules = [ "tiny-code-action.previewers.snacks" ];
|
|
};
|
|
in
|
|
{
|
|
imports = [
|
|
inputs.nixvim.homeModules.nixvim
|
|
];
|
|
programs.nixvim = {
|
|
enable = true;
|
|
defaultEditor = true;
|
|
nixpkgs = {
|
|
config = {
|
|
allowUnfree = true;
|
|
};
|
|
};
|
|
colorschemes.gruvbox-material.enable = true;
|
|
# colorschemes.melange = {
|
|
# enable = true;
|
|
# autoLoad = false;
|
|
# };
|
|
extraPackages = with pkgs; [
|
|
# formatters
|
|
nixfmt-rs
|
|
rustfmt
|
|
# misc
|
|
ripgrep
|
|
nixd
|
|
tree-sitter
|
|
rust-analyzer
|
|
rustc
|
|
cargo
|
|
];
|
|
performance.byteCompileLua = {
|
|
enable = true;
|
|
plugins = true;
|
|
nvimRuntime = true;
|
|
luaLib = true;
|
|
configs = true;
|
|
};
|
|
plugins = {
|
|
luasnip.enable = true;
|
|
cmp_luasnip.enable = true;
|
|
fidget.enable = true;
|
|
mini-comment.enable = true;
|
|
# cord.enable = true;
|
|
todo-comments.enable = true;
|
|
transparent.enable = true;
|
|
which-key.enable = true;
|
|
snacks.enable = true;
|
|
conform-nvim = {
|
|
enable = true;
|
|
settings = {
|
|
formatters_by_ft = {
|
|
nix = [ "nixfmt" ];
|
|
rust = [ "rustfmt" ];
|
|
"_" = [
|
|
"squeeze_blanks"
|
|
"trim_whitespace"
|
|
"trim_newlines"
|
|
];
|
|
};
|
|
format_on_save = {
|
|
timeout_ms = 500;
|
|
lsp_format = "fallback";
|
|
};
|
|
};
|
|
};
|
|
# efmls-configs = {
|
|
# enable = true;
|
|
# languages = {
|
|
# scss = {
|
|
# formatter = "prettier";
|
|
# linter = "stylelint";
|
|
# };
|
|
# };
|
|
# };
|
|
lsp = {
|
|
enable = true;
|
|
servers = {
|
|
# qmlls = {
|
|
# enable = true;
|
|
# config = {
|
|
# cmd = "-E";
|
|
# };
|
|
# };
|
|
rust_analyzer = {
|
|
enable = true;
|
|
installCargo = false;
|
|
installRustc = false;
|
|
};
|
|
nixd = {
|
|
enable = true;
|
|
settings = {
|
|
nixd = {
|
|
nixpkgs.expr = "import (builtins.getFlake \"${toString /home/doloro/dotfiles}\").inputs.nixpkgs { }";
|
|
options = {
|
|
nixos.expr = "(builtins.getFlake \"${toString /home/doloro/dotfiles}\").nixosConfigurations.desktop.options";
|
|
home_manager.expr = "(builtins.getFlake \"${toString /home/doloro/dotfiles}\").homeConfigurations.doloro-desktop.options";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
astro = {
|
|
enable = true;
|
|
};
|
|
ts_ls = {
|
|
enable = true;
|
|
};
|
|
cssls.enable = true;
|
|
svelte.enable = true;
|
|
};
|
|
};
|
|
lsp-format = {
|
|
enable = true;
|
|
# lspServersToEnable = [ "qmlls" ];
|
|
};
|
|
notify = {
|
|
enable = true;
|
|
settings = {
|
|
background_color = "#00000000";
|
|
};
|
|
};
|
|
mini-cursorword.enable = true;
|
|
# mini-statusline.enable = true;
|
|
lualine = {
|
|
enable = true;
|
|
settings = {
|
|
sections = {
|
|
lualine_a = [ "mode" ];
|
|
lualine_b = [
|
|
"branch"
|
|
"diff"
|
|
"diagnostics"
|
|
];
|
|
lualine_c = [ "filename" ];
|
|
lualine_x = [
|
|
"encoding"
|
|
"fileformat"
|
|
"filetype"
|
|
];
|
|
lualine_y = [ "progress" ];
|
|
lualine_z = [ "location" ];
|
|
};
|
|
inactive_sections = {
|
|
lualine_a = [ ];
|
|
lualine_b = [ ];
|
|
lualine_c = [ "filename" ];
|
|
lualine_x = [ "location" ];
|
|
lualine_y = [ ];
|
|
lualine_z = [ ];
|
|
};
|
|
};
|
|
};
|
|
web-devicons.enable = true;
|
|
vim-dadbod-completion.enable = true;
|
|
telescope = {
|
|
enable = true;
|
|
extensions.file-browser.enable = true;
|
|
};
|
|
lazygit.enable = true;
|
|
mini-indentscope = {
|
|
enable = true;
|
|
settings = {
|
|
draw = {
|
|
delay = 10;
|
|
};
|
|
};
|
|
};
|
|
mini-files = {
|
|
enable = true;
|
|
settings = {
|
|
windows = {
|
|
preview = true;
|
|
};
|
|
};
|
|
};
|
|
lsp-lines.enable = true;
|
|
trouble = {
|
|
enable = true;
|
|
settings = {
|
|
auto_close = true;
|
|
use_diagnostic_signs = true;
|
|
};
|
|
};
|
|
cmp = {
|
|
enable = true;
|
|
autoEnableSources = true;
|
|
cmdline = {
|
|
":" = {
|
|
mapping.__raw = "cmp.mapping.preset.cmdline()";
|
|
sources = [
|
|
{ name = "path"; }
|
|
{ name = "cmdline"; }
|
|
];
|
|
};
|
|
"/" = {
|
|
mapping.__raw = "cmp.mapping.preset.cmdline()";
|
|
sources = [
|
|
{ name = "buffer"; }
|
|
];
|
|
};
|
|
};
|
|
settings = {
|
|
snippet.expand.__raw = "function(args) require('luasnip').lsp_expand(args.body) end";
|
|
sources = [
|
|
{
|
|
name = "nvim_lsp";
|
|
priority = 100;
|
|
}
|
|
{
|
|
name = "nvim_lsp_signature_help";
|
|
priority = 90;
|
|
}
|
|
{
|
|
name = "luasnip";
|
|
priority = 75;
|
|
}
|
|
{
|
|
name = "buffer";
|
|
priority = 50;
|
|
}
|
|
{
|
|
name = "path";
|
|
priority = 40;
|
|
}
|
|
];
|
|
mapping = {
|
|
"<C-Space>" = "cmp.mapping.complete()";
|
|
"<C-d>" = "cmp.mapping.scroll_docs(-4)";
|
|
"<C-e>" = "cmp.mapping.close()";
|
|
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
|
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
|
"<S-Tab>" =
|
|
"cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() elseif require('luasnip').jumpable(-1) then require('luasnip').jump(-1) else fallback() end end, {'i', 's'})";
|
|
"<Tab>" =
|
|
"cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() elseif require('luasnip').expand_or_jumpable() then require('luasnip').expand_or_jump() else fallback() end end, {'i', 's'})";
|
|
};
|
|
window = {
|
|
completion = {
|
|
border = "rounded";
|
|
winhighlight = "Normal:Pmenu,FloatBorder:Pmenu,CursorLine:PmenuSel,Search:None";
|
|
};
|
|
documentation = {
|
|
border = "rounded";
|
|
winhighlight = "Normal:Pmenu,FloatBorder:Pmenu";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
lspkind.enable = true;
|
|
tiny-inline-diagnostic.enable = true;
|
|
# tiny-code-action.enable = true;
|
|
# persisted.enable = true;
|
|
auto-session = {
|
|
enable = false;
|
|
settings = {
|
|
enabled = true;
|
|
auto_save = true;
|
|
auto_restore = true;
|
|
};
|
|
};
|
|
wakatime.enable = true;
|
|
treesitter = {
|
|
enable = true;
|
|
grammarPackages = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
|
|
bash
|
|
css
|
|
html
|
|
javascript
|
|
json
|
|
lua
|
|
make
|
|
markdown
|
|
rust
|
|
nix
|
|
regex
|
|
toml
|
|
tsx
|
|
typescript
|
|
vim
|
|
vimdoc
|
|
xml
|
|
yaml
|
|
svelte
|
|
];
|
|
settings = {
|
|
highlight.enable = true;
|
|
indent.enable = false;
|
|
};
|
|
};
|
|
};
|
|
extraPlugins = with pkgs; [
|
|
vimPlugins.cmp-nvim-lsp-signature-help
|
|
tiny-code-action
|
|
];
|
|
opts = {
|
|
number = true;
|
|
bg = "dark";
|
|
tabstop = 2;
|
|
shiftwidth = 2;
|
|
termguicolors = true;
|
|
completeopt = "menu,menuone,noselect";
|
|
};
|
|
globals = {
|
|
mapleader = " ";
|
|
};
|
|
extraConfigLua = ''
|
|
-- tree-sitter-nix uses (#is-not? local) which the new nvim-treesitter main branch no longer registers
|
|
vim.treesitter.query.add_predicate("is-not?", function() return true end, { force = true })
|
|
|
|
require('tiny-code-action').setup({
|
|
backend = 'vim',
|
|
picker = 'snacks',
|
|
resolve_timeout = 100,
|
|
notify = {
|
|
enabled = true,
|
|
on_empty = true,
|
|
},
|
|
})
|
|
'';
|
|
keymaps = [
|
|
{
|
|
action = "<cmd>Telescope persisted<cr>";
|
|
key = "<leader>fs";
|
|
options = {
|
|
silent = true;
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>Telescope find_files<cr>";
|
|
key = "<leader>ff";
|
|
options = {
|
|
silent = true;
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>:lua MiniFiles.open()<cr>";
|
|
key = "<leader>fv";
|
|
options = {
|
|
silent = true;
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>LazyGit<cr>";
|
|
key = "<leader>lg";
|
|
options = {
|
|
silent = true;
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>Telescope buffers<cr>";
|
|
key = "<leader>fb";
|
|
options = {
|
|
silent = true;
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>Telescope live_grep<cr>";
|
|
key = "<leader>fg";
|
|
options = {
|
|
silent = true;
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>Trouble diagnostics toggle<cr>";
|
|
key = "<leader>fd";
|
|
options = {
|
|
silent = true;
|
|
desc = "Toggle diagnostics (Trouble)";
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>lua require('tiny-code-action').code_action()<cr>";
|
|
key = "<leader>ca";
|
|
mode = [
|
|
"n"
|
|
"x"
|
|
];
|
|
options = {
|
|
silent = true;
|
|
};
|
|
}
|
|
# LSP
|
|
{
|
|
action = "<cmd>lua vim.lsp.buf.definition()<cr>";
|
|
key = "gd";
|
|
options = {
|
|
silent = true;
|
|
desc = "Go to definition";
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>lua vim.lsp.buf.declaration()<cr>";
|
|
key = "gD";
|
|
options = {
|
|
silent = true;
|
|
desc = "Go to declaration";
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>lua vim.lsp.buf.implementation()<cr>";
|
|
key = "gi";
|
|
options = {
|
|
silent = true;
|
|
desc = "Go to implementation";
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>lua vim.lsp.buf.type_definition()<cr>";
|
|
key = "<leader>D";
|
|
options = {
|
|
silent = true;
|
|
desc = "Go to type definition";
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>Telescope lsp_references<cr>";
|
|
key = "gr";
|
|
options = {
|
|
silent = true;
|
|
desc = "LSP references";
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>lua vim.lsp.buf.hover()<cr>";
|
|
key = "K";
|
|
options = {
|
|
silent = true;
|
|
desc = "Hover docs";
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>lua vim.lsp.buf.signature_help()<cr>";
|
|
key = "<C-k>";
|
|
mode = [
|
|
"n"
|
|
"i"
|
|
];
|
|
options = {
|
|
silent = true;
|
|
desc = "Signature help";
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>lua vim.lsp.buf.rename()<cr>";
|
|
key = "<leader>rn";
|
|
options = {
|
|
silent = true;
|
|
desc = "Rename symbol";
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>lua vim.diagnostic.goto_prev()<cr>";
|
|
key = "[d";
|
|
options = {
|
|
silent = true;
|
|
desc = "Previous diagnostic";
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>lua vim.diagnostic.goto_next()<cr>";
|
|
key = "]d";
|
|
options = {
|
|
silent = true;
|
|
desc = "Next diagnostic";
|
|
};
|
|
}
|
|
{
|
|
action = "<cmd>lua vim.diagnostic.open_float()<cr>";
|
|
key = "<leader>e";
|
|
options = {
|
|
silent = true;
|
|
desc = "Show diagnostic float";
|
|
};
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|