mirror of
https://github.com/moons-14/dotfiles.git
synced 2026-10-06 05:18:12 +09:00
neovim
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.autoCmd = [
|
||||||
|
{
|
||||||
|
event = "TextYankPost";
|
||||||
|
callback.__raw = "function() vim.highlight.on_yank() end";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.colorschemes.catppuccin = {
|
||||||
|
enable = true;
|
||||||
|
settings.transparent_background = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,426 +1,49 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, lib, ... }@args:
|
||||||
let
|
lib.mkMerge [
|
||||||
keymaps = import ./keymaps.nix { };
|
(import ./autocmds.nix args)
|
||||||
in
|
(import ./colorscheme.nix args)
|
||||||
{
|
(import ./keymaps.nix args)
|
||||||
home.sessionVariables = {
|
(import ./language.nix args)
|
||||||
EDITOR = "nvim";
|
(import ./lsp.nix args)
|
||||||
VISUAL = "nvim";
|
(import ./options.nix args)
|
||||||
};
|
(import ./plugins args)
|
||||||
|
{
|
||||||
programs.nixvim = {
|
home.sessionVariables = {
|
||||||
enable = true;
|
EDITOR = "nvim";
|
||||||
vimAlias = true;
|
VISUAL = "nvim";
|
||||||
viAlias = true;
|
|
||||||
withNodeJs = true;
|
|
||||||
|
|
||||||
nixpkgs = {
|
|
||||||
source = pkgs.path;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extraPackages = with pkgs; [
|
programs.nixvim = {
|
||||||
git
|
|
||||||
ripgrep
|
|
||||||
fd
|
|
||||||
nodejs
|
|
||||||
zellij
|
|
||||||
vtsls
|
|
||||||
vscode-langservers-extracted
|
|
||||||
tailwindcss-language-server
|
|
||||||
prettierd
|
|
||||||
prettier
|
|
||||||
biome
|
|
||||||
stylua
|
|
||||||
shfmt
|
|
||||||
alejandra
|
|
||||||
nixfmt
|
|
||||||
lua-language-server
|
|
||||||
nixd
|
|
||||||
lazygit
|
|
||||||
];
|
|
||||||
|
|
||||||
opts = {
|
|
||||||
number = true;
|
|
||||||
relativenumber = true;
|
|
||||||
signcolumn = "yes";
|
|
||||||
termguicolors = true;
|
|
||||||
mouse = "a";
|
|
||||||
clipboard = "unnamedplus";
|
|
||||||
updatetime = 200;
|
|
||||||
timeoutlen = 300;
|
|
||||||
undofile = true;
|
|
||||||
wrap = false;
|
|
||||||
scrolloff = 8;
|
|
||||||
ignorecase = true;
|
|
||||||
smartcase = true;
|
|
||||||
splitright = true;
|
|
||||||
splitbelow = true;
|
|
||||||
tabstop = 2;
|
|
||||||
shiftwidth = 2;
|
|
||||||
expandtab = true;
|
|
||||||
encoding = "utf-8";
|
|
||||||
fileencoding = "utf-8";
|
|
||||||
fileencodings = "utf-8,sjis,euc-jp,iso-2022-jp";
|
|
||||||
list = true;
|
|
||||||
listchars = "tab:»-,trail:-,extends:»,precedes:«,nbsp:%";
|
|
||||||
jumpoptions = "stack";
|
|
||||||
switchbuf = "useopen,uselast";
|
|
||||||
foldcolumn = "1";
|
|
||||||
foldlevel = 99;
|
|
||||||
foldlevelstart = 99;
|
|
||||||
foldenable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
globals = {
|
|
||||||
mapleader = " ";
|
|
||||||
maplocalleader = " ";
|
|
||||||
clipboard = "osc52";
|
|
||||||
};
|
|
||||||
|
|
||||||
env = {
|
|
||||||
LANG = "ja_JP.UTF-8";
|
|
||||||
LC_MESSAGES = "ja_JP.UTF-8";
|
|
||||||
};
|
|
||||||
|
|
||||||
autoCmd = [
|
|
||||||
{
|
|
||||||
event = "TextYankPost";
|
|
||||||
callback.__raw = "function() vim.highlight.on_yank() end";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
colorschemes.catppuccin = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
settings.transparent_background = true;
|
vimAlias = true;
|
||||||
|
viAlias = true;
|
||||||
|
withNodeJs = true;
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
source = pkgs.path;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
git
|
||||||
|
ripgrep
|
||||||
|
fd
|
||||||
|
nodejs
|
||||||
|
zellij
|
||||||
|
vtsls
|
||||||
|
vscode-langservers-extracted
|
||||||
|
tailwindcss-language-server
|
||||||
|
prettierd
|
||||||
|
prettier
|
||||||
|
biome
|
||||||
|
stylua
|
||||||
|
shfmt
|
||||||
|
alejandra
|
||||||
|
nixfmt
|
||||||
|
lua-language-server
|
||||||
|
nixd
|
||||||
|
lazygit
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
}
|
||||||
diagnostic.settings = {
|
]
|
||||||
virtual_text = true;
|
|
||||||
float = {
|
|
||||||
border = "rounded";
|
|
||||||
source = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
plugins = {
|
|
||||||
lsp = {
|
|
||||||
enable = true;
|
|
||||||
servers = {
|
|
||||||
vtsls = {
|
|
||||||
enable = true;
|
|
||||||
packageFallback = true;
|
|
||||||
rootMarkers = [
|
|
||||||
"pnpm-workspace.yaml"
|
|
||||||
"package.json"
|
|
||||||
"tsconfig.json"
|
|
||||||
"jsconfig.json"
|
|
||||||
".git"
|
|
||||||
];
|
|
||||||
extraOptions.settings.typescript.locale = "ja";
|
|
||||||
};
|
|
||||||
biome = {
|
|
||||||
enable = true;
|
|
||||||
packageFallback = true;
|
|
||||||
rootMarkers = [
|
|
||||||
"biome.json"
|
|
||||||
"biome.jsonc"
|
|
||||||
"package.json"
|
|
||||||
"pnpm-workspace.yaml"
|
|
||||||
".git"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
tailwindcss.enable = true;
|
|
||||||
cssls.enable = true;
|
|
||||||
jsonls.enable = true;
|
|
||||||
yamlls.enable = true;
|
|
||||||
lua_ls.enable = true;
|
|
||||||
nixd.enable = true;
|
|
||||||
rust_analyzer = {
|
|
||||||
enable = true;
|
|
||||||
installCargo = true;
|
|
||||||
installRustc = true;
|
|
||||||
};
|
|
||||||
svelte.enable = true;
|
|
||||||
ty.enable = true;
|
|
||||||
ruff.enable = true;
|
|
||||||
astro.enable = true;
|
|
||||||
gopls.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
blink-cmp = {
|
|
||||||
enable = true;
|
|
||||||
setupLspCapabilities = true;
|
|
||||||
settings = {
|
|
||||||
keymap = {
|
|
||||||
preset = "enter";
|
|
||||||
"<C-Space>" = [ "show" ];
|
|
||||||
"<C-d>" = [ "scroll_documentation_up" ];
|
|
||||||
"<C-e>" = [ "hide" ];
|
|
||||||
"<C-f>" = [ "scroll_documentation_down" ];
|
|
||||||
"<Tab>" = [
|
|
||||||
"accept"
|
|
||||||
{
|
|
||||||
__raw = ''
|
|
||||||
function()
|
|
||||||
local ok, copilot = pcall(require, "copilot.suggestion")
|
|
||||||
if ok and copilot.is_visible() then
|
|
||||||
copilot.accept()
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
"fallback"
|
|
||||||
];
|
|
||||||
"<S-Tab>" = [
|
|
||||||
"select_prev"
|
|
||||||
"fallback"
|
|
||||||
];
|
|
||||||
"<C-n>" = [
|
|
||||||
"select_next"
|
|
||||||
"fallback"
|
|
||||||
];
|
|
||||||
"<C-p>" = [
|
|
||||||
"select_prev"
|
|
||||||
"fallback"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
completion.list.selection = {
|
|
||||||
preselect = true;
|
|
||||||
auto_insert = false;
|
|
||||||
};
|
|
||||||
sources.default = [
|
|
||||||
"lsp"
|
|
||||||
"path"
|
|
||||||
"buffer"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nvim-autopairs.enable = true;
|
|
||||||
comment.enable = true;
|
|
||||||
"conform-nvim" = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
formatters_by_ft = {
|
|
||||||
javascript.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
|
||||||
javascriptreact.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
|
||||||
typescript.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
|
||||||
typescriptreact.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
|
||||||
json.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
|
||||||
yaml.__raw = ''{ "prettierd", "prettier", stop_after_first = true }'';
|
|
||||||
markdown.__raw = ''{ "prettierd", "prettier", stop_after_first = true }'';
|
|
||||||
lua = [ "stylua" ];
|
|
||||||
nix.__raw = ''{ "nix_fmt", "alejandra", stop_after_first = true }'';
|
|
||||||
sh = [ "shfmt" ];
|
|
||||||
};
|
|
||||||
formatters.nix_fmt.command = "nixfmt";
|
|
||||||
format_on_save.__raw = ''
|
|
||||||
function(_)
|
|
||||||
return { timeout_ms = 1000, lsp_format = "fallback" }
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
copilot-lua = {
|
|
||||||
enable = true;
|
|
||||||
settings.suggestion = {
|
|
||||||
auto_trigger = true;
|
|
||||||
keymap.enabled = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
lazygit.enable = true;
|
|
||||||
diffview.enable = true;
|
|
||||||
gitsigns = {
|
|
||||||
enable = true;
|
|
||||||
settings.signs = {
|
|
||||||
add.text = "+";
|
|
||||||
change.text = "~";
|
|
||||||
delete.text = "_";
|
|
||||||
topdelete.text = "‾";
|
|
||||||
changedelete.text = "~";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
lsp-signature = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
hint_enable = true;
|
|
||||||
hint_prefix = " ";
|
|
||||||
floating_window = true;
|
|
||||||
bind = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
nvim-surround.enable = true;
|
|
||||||
treesitter = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
highlight.enable = true;
|
|
||||||
indent.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
trouble.enable = true;
|
|
||||||
barbar = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
animation = false;
|
|
||||||
auto_hide = 1;
|
|
||||||
tabpages = true;
|
|
||||||
clickable = true;
|
|
||||||
focus_on_close = "left";
|
|
||||||
icons = {
|
|
||||||
button = "";
|
|
||||||
separator = {
|
|
||||||
left = "▎";
|
|
||||||
right = "";
|
|
||||||
};
|
|
||||||
separator_at_end = false;
|
|
||||||
filetype.enabled = true;
|
|
||||||
};
|
|
||||||
sidebar_filetypes.neo-tree = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
indent-blankline = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
scope = {
|
|
||||||
enabled = true;
|
|
||||||
show_start = true;
|
|
||||||
show_end = true;
|
|
||||||
};
|
|
||||||
exclude.filetypes = [
|
|
||||||
"help"
|
|
||||||
"neo-tree"
|
|
||||||
"toggleterm"
|
|
||||||
"lazy"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
colorizer = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
filetypes = [
|
|
||||||
"*"
|
|
||||||
"!markdown"
|
|
||||||
];
|
|
||||||
user_commands = true;
|
|
||||||
options = {
|
|
||||||
parsers = {
|
|
||||||
css = true;
|
|
||||||
tailwind = {
|
|
||||||
enable = true;
|
|
||||||
lsp = true;
|
|
||||||
update_names = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
display.mode = "background";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
dropbar.enable = true;
|
|
||||||
nvim-lightbulb = {
|
|
||||||
enable = true;
|
|
||||||
settings.autocmd.enabled = true;
|
|
||||||
};
|
|
||||||
lualine = {
|
|
||||||
enable = true;
|
|
||||||
settings.sections.lualine_x = [
|
|
||||||
{
|
|
||||||
__raw = ''
|
|
||||||
function()
|
|
||||||
local ok, conform = pcall(require, "conform")
|
|
||||||
if not ok then return "" end
|
|
||||||
for _, formatter in ipairs(conform.list_formatters(0)) do
|
|
||||||
if formatter.available then return " " .. formatter.name end
|
|
||||||
end
|
|
||||||
return ""
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
"encoding"
|
|
||||||
"fileformat"
|
|
||||||
"filetype"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
neo-tree = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
close_if_last_window = true;
|
|
||||||
filesystem = {
|
|
||||||
follow_current_file = {
|
|
||||||
enabled = true;
|
|
||||||
leave_dirs_open = true;
|
|
||||||
};
|
|
||||||
filtered_items = {
|
|
||||||
visible = true;
|
|
||||||
hide_dotfiles = false;
|
|
||||||
hide_gitignored = true;
|
|
||||||
hide_ignored = false;
|
|
||||||
hide_hidden = false;
|
|
||||||
never_show = [
|
|
||||||
".DS_Store"
|
|
||||||
"thumbs.db"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
toggleterm.enable = true;
|
|
||||||
"treesitter-context".enable = true;
|
|
||||||
web-devicons.enable = true;
|
|
||||||
which-key.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
extraPlugins = with pkgs.vimPlugins; [
|
|
||||||
flash-nvim
|
|
||||||
git-conflict-nvim
|
|
||||||
glance-nvim
|
|
||||||
snacks-nvim
|
|
||||||
nvim-spectre
|
|
||||||
todo-comments-nvim
|
|
||||||
nvim-ts-autotag
|
|
||||||
vim-wakatime
|
|
||||||
markview-nvim
|
|
||||||
nvim-scrollbar
|
|
||||||
nvim-ufo
|
|
||||||
promise-async
|
|
||||||
zen-mode-nvim
|
|
||||||
];
|
|
||||||
|
|
||||||
extraConfigLua = ''
|
|
||||||
vim.cmd.language("ja_JP.utf8")
|
|
||||||
vim.opt.helplang = { "ja", "en" }
|
|
||||||
|
|
||||||
require("flash").setup()
|
|
||||||
require("git-conflict").setup()
|
|
||||||
require("glance").setup()
|
|
||||||
require("spectre").setup()
|
|
||||||
require("todo-comments").setup()
|
|
||||||
require("nvim-ts-autotag").setup()
|
|
||||||
require("markview").setup({ initial_state = false })
|
|
||||||
require("scrollbar").setup()
|
|
||||||
require("zen-mode").setup()
|
|
||||||
require("ufo").setup({
|
|
||||||
provider_selector = function()
|
|
||||||
return { "treesitter", "indent" }
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
require("snacks").setup({
|
|
||||||
picker = {
|
|
||||||
enabled = true,
|
|
||||||
actions = require("trouble.sources.snacks").actions,
|
|
||||||
win = { input = { keys = {
|
|
||||||
["<C-t>"] = { "trouble_open", mode = { "n", "i" } },
|
|
||||||
} } },
|
|
||||||
},
|
|
||||||
notifier = { enabled = true },
|
|
||||||
words = { enabled = true },
|
|
||||||
scroll = { enabled = true },
|
|
||||||
dim = { enabled = true },
|
|
||||||
})
|
|
||||||
'';
|
|
||||||
|
|
||||||
inherit keymaps;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -53,138 +53,147 @@ let
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
[
|
{
|
||||||
# Search
|
programs.nixvim = {
|
||||||
(mk "<Esc>" "<cmd>nohlsearch<CR>" "検索ハイライトを解除")
|
opts = {
|
||||||
|
jumpoptions = "stack";
|
||||||
|
switchbuf = "useopen,uselast";
|
||||||
|
};
|
||||||
|
|
||||||
# Screen line movement
|
keymaps = [
|
||||||
(mkExpr "j" "function() return vim.v.count == 0 and 'gj' or 'j' end" "下へ移動(画面行優先)")
|
# Search
|
||||||
(mkExpr "k" "function() return vim.v.count == 0 and 'gk' or 'k' end" "上へ移動(画面行優先)")
|
(mk "<Esc>" "<cmd>nohlsearch<CR>" "検索ハイライトを解除")
|
||||||
|
|
||||||
# LSP: hover / direct jump
|
# Screen line movement
|
||||||
(mkRaw "K" "vim.lsp.buf.hover" "シンボル情報を表示")
|
(mkExpr "j" "function() return vim.v.count == 0 and 'gj' or 'j' end" "下へ移動(画面行優先)")
|
||||||
(mkRaw "gd" "vim.lsp.buf.definition" "定義へジャンプ")
|
(mkExpr "k" "function() return vim.v.count == 0 and 'gk' or 'k' end" "上へ移動(画面行優先)")
|
||||||
(mkRaw "grr" "vim.lsp.buf.references" "参照一覧を開く")
|
|
||||||
(mkRaw "gri" "vim.lsp.buf.implementation" "実装一覧を開く")
|
|
||||||
(mkRaw "grt" "vim.lsp.buf.type_definition" "型定義一覧を開く")
|
|
||||||
(mkRaw "grn" "vim.lsp.buf.rename" "シンボル名を一括変換")
|
|
||||||
(mkRaw "gra" "vim.lsp.buf.code_action" "コードアクション")
|
|
||||||
(mkRaw "gO" "vim.lsp.buf.document_symbol" "現在ファイルのシンボル一覧")
|
|
||||||
|
|
||||||
# Glance: preview / peek
|
# LSP: hover / direct jump
|
||||||
(mk "gD" "<cmd>Glance definitions<CR>" "定義をプレビュー")
|
(mkRaw "K" "vim.lsp.buf.hover" "シンボル情報を表示")
|
||||||
(mk "gR" "<cmd>Glance references<CR>" "参照をプレビュー")
|
(mkRaw "gd" "vim.lsp.buf.definition" "定義へジャンプ")
|
||||||
(mk "gM" "<cmd>Glance implementations<CR>" "実装をプレビュー")
|
(mkRaw "grr" "vim.lsp.buf.references" "参照一覧を開く")
|
||||||
(mk "gY" "<cmd>Glance type_definitions<CR>" "型定義をプレビュー")
|
(mkRaw "gri" "vim.lsp.buf.implementation" "実装一覧を開く")
|
||||||
(mk "g." "<cmd>Glance resume<CR>" "直前のGlanceを再開")
|
(mkRaw "grt" "vim.lsp.buf.type_definition" "型定義一覧を開く")
|
||||||
|
(mkRaw "grn" "vim.lsp.buf.rename" "シンボル名を一括変換")
|
||||||
|
(mkRaw "gra" "vim.lsp.buf.code_action" "コードアクション")
|
||||||
|
(mkRaw "gO" "vim.lsp.buf.document_symbol" "現在ファイルのシンボル一覧")
|
||||||
|
|
||||||
# Convenience aliases
|
# Glance: preview / peek
|
||||||
(mkRaw "<leader>rn" "vim.lsp.buf.rename" "シンボル名を一括変換")
|
(mk "gD" "<cmd>Glance definitions<CR>" "定義をプレビュー")
|
||||||
(mkRaw "<leader>cf"
|
(mk "gR" "<cmd>Glance references<CR>" "参照をプレビュー")
|
||||||
"function() require('conform').format({ timeout_ms = 1000, lsp_format = 'fallback' }) end"
|
(mk "gM" "<cmd>Glance implementations<CR>" "実装をプレビュー")
|
||||||
"コードをフォーマット"
|
(mk "gY" "<cmd>Glance type_definitions<CR>" "型定義をプレビュー")
|
||||||
)
|
(mk "g." "<cmd>Glance resume<CR>" "直前のGlanceを再開")
|
||||||
(mkRaw "<leader>ca" "vim.lsp.buf.code_action" "コードアクション")
|
|
||||||
|
|
||||||
# Diagnostics
|
# Convenience aliases
|
||||||
(mkRaw "]d" "vim.diagnostic.goto_next" "次の診断へ移動")
|
(mkRaw "<leader>rn" "vim.lsp.buf.rename" "シンボル名を一括変換")
|
||||||
(mkRaw "[d" "vim.diagnostic.goto_prev" "前の診断へ移動")
|
(mkRaw "<leader>cf"
|
||||||
(mkRaw "<leader>dl" "vim.diagnostic.open_float" "診断の詳細を表示")
|
"function() require('conform').format({ timeout_ms = 1000, lsp_format = 'fallback' }) end"
|
||||||
|
"コードをフォーマット"
|
||||||
|
)
|
||||||
|
(mkRaw "<leader>ca" "vim.lsp.buf.code_action" "コードアクション")
|
||||||
|
|
||||||
# File tree
|
# Diagnostics
|
||||||
(mk "<leader>e" "<cmd>Neotree toggle left<CR>" "ファイルツリー")
|
(mkRaw "]d" "vim.diagnostic.goto_next" "次の診断へ移動")
|
||||||
|
(mkRaw "[d" "vim.diagnostic.goto_prev" "前の診断へ移動")
|
||||||
|
(mkRaw "<leader>dl" "vim.diagnostic.open_float" "診断の詳細を表示")
|
||||||
|
|
||||||
# Terminal
|
# File tree
|
||||||
(mk "<leader>tt" "<cmd>ToggleTerm direction=float<CR>" "ターミナル")
|
(mk "<leader>e" "<cmd>Neotree toggle left<CR>" "ファイルツリー")
|
||||||
|
|
||||||
# Trouble
|
# Terminal
|
||||||
(mk "<leader>xx" "<cmd>Trouble diagnostics toggle<CR>" "診断一覧")
|
(mk "<leader>tt" "<cmd>ToggleTerm direction=float<CR>" "ターミナル")
|
||||||
(mk "<leader>xq" "<cmd>Trouble qflist toggle<CR>" "Quickfix一覧")
|
|
||||||
(mk "<leader>xl" "<cmd>Trouble loclist toggle<CR>" "Location List一覧")
|
|
||||||
(mk "<leader>xs" "<cmd>Trouble symbols toggle<CR>" "シンボル一覧")
|
|
||||||
(mk "<leader>xw" "<cmd>Trouble lsp toggle<CR>" "LSP一覧")
|
|
||||||
|
|
||||||
# Quickfix / Location list navigation
|
# Trouble
|
||||||
(mk "]q" "<cmd>cnext<CR>" "次のQuickfixへ")
|
(mk "<leader>xx" "<cmd>Trouble diagnostics toggle<CR>" "診断一覧")
|
||||||
(mk "[q" "<cmd>cprev<CR>" "前のQuickfixへ")
|
(mk "<leader>xq" "<cmd>Trouble qflist toggle<CR>" "Quickfix一覧")
|
||||||
(mk "]l" "<cmd>lnext<CR>" "次のLocation Listへ")
|
(mk "<leader>xl" "<cmd>Trouble loclist toggle<CR>" "Location List一覧")
|
||||||
(mk "[l" "<cmd>lprev<CR>" "前のLocation Listへ")
|
(mk "<leader>xs" "<cmd>Trouble symbols toggle<CR>" "シンボル一覧")
|
||||||
|
(mk "<leader>xw" "<cmd>Trouble lsp toggle<CR>" "LSP一覧")
|
||||||
|
|
||||||
# Window navigation
|
# Quickfix / Location list navigation
|
||||||
(mkSmartWindowNav "<C-h>" "h" "left" "左のウィンドウへ(端ならZellijペイン/タブへ)")
|
(mk "]q" "<cmd>cnext<CR>" "次のQuickfixへ")
|
||||||
(mkSmartWindowNav "<C-j>" "j" "down" "下のウィンドウへ(端ならZellijペインへ)")
|
(mk "[q" "<cmd>cprev<CR>" "前のQuickfixへ")
|
||||||
(mkSmartWindowNav "<C-k>" "k" "up" "上のウィンドウへ(端ならZellijペインへ)")
|
(mk "]l" "<cmd>lnext<CR>" "次のLocation Listへ")
|
||||||
(mkSmartWindowNav "<C-l>" "l" "right" "右のウィンドウへ(端ならZellijペイン/タブへ)")
|
(mk "[l" "<cmd>lprev<CR>" "前のLocation Listへ")
|
||||||
(mkSmartWindowNav "<C-Left>" "h" "left" "左のウィンドウへ(端ならZellijペイン/タブへ)")
|
|
||||||
(mkSmartWindowNav "<C-Down>" "j" "down" "下のウィンドウへ(端ならZellijペインへ)")
|
|
||||||
(mkSmartWindowNav "<C-Up>" "k" "up" "上のウィンドウへ(端ならZellijペインへ)")
|
|
||||||
(mkSmartWindowNav "<C-Right>" "l" "right" "右のウィンドウへ(端ならZellijペイン/タブへ)")
|
|
||||||
|
|
||||||
# Alternate file / previous file
|
# Window navigation
|
||||||
(mk "<leader><leader>" "<C-^>" "直前のファイルへ戻る")
|
(mkSmartWindowNav "<C-h>" "h" "left" "左のウィンドウへ(端ならZellijペイン/タブへ)")
|
||||||
(mk "<leader>w-" "<C-w><C-^>" "直前のファイルをsplitで開く")
|
(mkSmartWindowNav "<C-j>" "j" "down" "下のウィンドウへ(端ならZellijペインへ)")
|
||||||
|
(mkSmartWindowNav "<C-k>" "k" "up" "上のウィンドウへ(端ならZellijペインへ)")
|
||||||
|
(mkSmartWindowNav "<C-l>" "l" "right" "右のウィンドウへ(端ならZellijペイン/タブへ)")
|
||||||
|
(mkSmartWindowNav "<C-Left>" "h" "left" "左のウィンドウへ(端ならZellijペイン/タブへ)")
|
||||||
|
(mkSmartWindowNav "<C-Down>" "j" "down" "下のウィンドウへ(端ならZellijペインへ)")
|
||||||
|
(mkSmartWindowNav "<C-Up>" "k" "up" "上のウィンドウへ(端ならZellijペインへ)")
|
||||||
|
(mkSmartWindowNav "<C-Right>" "l" "right" "右のウィンドウへ(端ならZellijペイン/タブへ)")
|
||||||
|
|
||||||
# Buffer Bar
|
# Alternate file / previous file
|
||||||
(mk "[b" "<Cmd>BufferPrevious<CR>" "前のバッファーに移動")
|
(mk "<leader><leader>" "<C-^>" "直前のファイルへ戻る")
|
||||||
(mk "]b" "<Cmd>BufferNext<CR>" "次のバッファーに移動")
|
(mk "<leader>w-" "<C-w><C-^>" "直前のファイルをsplitで開く")
|
||||||
(mk "<leader>bc" "<Cmd>BufferClose<CR>" "バッファーを閉じる")
|
|
||||||
|
|
||||||
# Git Conflict
|
# Buffer Bar
|
||||||
(mk "<leader>gco" "<cmd>GitConflictChooseOurs<CR>" "現在のブランチを選択")
|
(mk "[b" "<Cmd>BufferPrevious<CR>" "前のバッファーに移動")
|
||||||
(mk "<leader>gct" "<cmd>GitConflictChooseTheirs<CR>" "相手のブランチを選択")
|
(mk "]b" "<Cmd>BufferNext<CR>" "次のバッファーに移動")
|
||||||
(mk "<leader>gcb" "<cmd>GitConflictChooseBoth<CR>" "両方を選択")
|
(mk "<leader>bc" "<Cmd>BufferClose<CR>" "バッファーを閉じる")
|
||||||
(mk "<leader>gcx" "<cmd>GitConflictListQf<CR>" "コンフリクト一覧")
|
|
||||||
(mk "]x" "<cmd>GitConflictNextConflict<CR>" "次のコンフリクト")
|
|
||||||
(mk "[x" "<cmd>GitConflictPrevConflict<CR>" "前のコンフリクト")
|
|
||||||
|
|
||||||
# Git
|
# Git Conflict
|
||||||
(mk "<leader>gl" "<cmd>LazyGit<CR>" "LazyGitを開く")
|
(mk "<leader>gco" "<cmd>GitConflictChooseOurs<CR>" "現在のブランチを選択")
|
||||||
(mk "<leader>gd" "<cmd>DiffviewOpen<CR>" "差分を開く")
|
(mk "<leader>gct" "<cmd>GitConflictChooseTheirs<CR>" "相手のブランチを選択")
|
||||||
(mk "<leader>gH" "<cmd>DiffviewFileHistory<CR>" "リポジトリ履歴")
|
(mk "<leader>gcb" "<cmd>GitConflictChooseBoth<CR>" "両方を選択")
|
||||||
(mk "<leader>gh" "<cmd>DiffviewFileHistory %<CR>" "現在ファイルの履歴")
|
(mk "<leader>gcx" "<cmd>GitConflictListQf<CR>" "コンフリクト一覧")
|
||||||
(mk "<leader>gq" "<cmd>DiffviewClose<CR>" "差分を閉じる")
|
(mk "]x" "<cmd>GitConflictNextConflict<CR>" "次のコンフリクト")
|
||||||
|
(mk "[x" "<cmd>GitConflictPrevConflict<CR>" "前のコンフリクト")
|
||||||
|
|
||||||
# Markview
|
# Git
|
||||||
(mk "<leader>mp" "<cmd>Markview splitToggle<CR>" "Markdownプレビュー")
|
(mk "<leader>gl" "<cmd>LazyGit<CR>" "LazyGitを開く")
|
||||||
|
(mk "<leader>gd" "<cmd>DiffviewOpen<CR>" "差分を開く")
|
||||||
|
(mk "<leader>gH" "<cmd>DiffviewFileHistory<CR>" "リポジトリ履歴")
|
||||||
|
(mk "<leader>gh" "<cmd>DiffviewFileHistory %<CR>" "現在ファイルの履歴")
|
||||||
|
(mk "<leader>gq" "<cmd>DiffviewClose<CR>" "差分を閉じる")
|
||||||
|
|
||||||
# Zen Mode
|
# Markview
|
||||||
(mk "<leader>zz" "<cmd>ZenMode<CR>" "Zen Modeを開く/閉じる")
|
(mk "<leader>mp" "<cmd>Markview splitToggle<CR>" "Markdownプレビュー")
|
||||||
|
|
||||||
# UFO (folding)
|
# Zen Mode
|
||||||
(mkRaw "zR" "require('ufo').openAllFolds" "全て展開")
|
(mk "<leader>zz" "<cmd>ZenMode<CR>" "Zen Modeを開く/閉じる")
|
||||||
(mkRaw "zM" "require('ufo').closeAllFolds" "全て折りたたむ")
|
|
||||||
|
|
||||||
# Dropbar
|
# UFO (folding)
|
||||||
(mkRaw "<leader>dp" "function() require('dropbar.api').pick() end" "dropbarでナビゲート")
|
(mkRaw "zR" "require('ufo').openAllFolds" "全て展開")
|
||||||
|
(mkRaw "zM" "require('ufo').closeAllFolds" "全て折りたたむ")
|
||||||
|
|
||||||
# Snacks
|
# Dropbar
|
||||||
(mkRaw "<leader>sd" "function() Snacks.dim.toggle() end" "Dimモードをトグル")
|
(mkRaw "<leader>dp" "function() require('dropbar.api').pick() end" "dropbarでナビゲート")
|
||||||
|
|
||||||
# Flash
|
# Snacks
|
||||||
(mkRaw "s" "function() require('flash').jump() end" "Flashジャンプ")
|
(mkRaw "<leader>sd" "function() Snacks.dim.toggle() end" "Dimモードをトグル")
|
||||||
(mkRaw "S" "function() require('flash').treesitter() end" "Flashツリーシッタ選択")
|
|
||||||
|
|
||||||
# Todo Comments
|
# Flash
|
||||||
(mk "]t" "<cmd>TodoNext<CR>" "次のTODO")
|
(mkRaw "s" "function() require('flash').jump() end" "Flashジャンプ")
|
||||||
(mk "[t" "<cmd>TodoPrev<CR>" "前のTODO")
|
(mkRaw "S" "function() require('flash').treesitter() end" "Flashツリーシッタ選択")
|
||||||
(mkRaw "<leader>ft" "function() Snacks.picker.todo_comments() end" "TODO一覧")
|
|
||||||
|
|
||||||
# Spectre
|
# Todo Comments
|
||||||
(mkRaw "<leader>sr" "function() require('spectre').toggle() end" "検索・置換")
|
(mk "]t" "<cmd>TodoNext<CR>" "次のTODO")
|
||||||
|
(mk "[t" "<cmd>TodoPrev<CR>" "前のTODO")
|
||||||
|
(mkRaw "<leader>ft" "function() Snacks.picker.todo_comments() end" "TODO一覧")
|
||||||
|
|
||||||
# Snacks Picker: generic
|
# Spectre
|
||||||
(mkRaw "<leader>ff" "function() Snacks.picker.files() end" "ファイルを探す")
|
(mkRaw "<leader>sr" "function() require('spectre').toggle() end" "検索・置換")
|
||||||
(mkRaw "<leader>fg" "function() Snacks.picker.grep() end" "文字列を全文検索")
|
|
||||||
(mkRaw "<leader>fb" "function() Snacks.picker.buffers() end" "開いているバッファを探す")
|
|
||||||
(mkRaw "<leader>fh" "function() Snacks.picker.help() end" "ヘルプ項目を探す")
|
|
||||||
(mkRaw "<leader>fk" "function() Snacks.picker.keymaps() end" "キーマップを探す")
|
|
||||||
(mkRaw "<leader>fc" "function() Snacks.picker.commands() end" "コマンドを探す")
|
|
||||||
|
|
||||||
# Snacks Picker: code navigation
|
# Snacks Picker: generic
|
||||||
(mkRaw "<leader>fs" "function() Snacks.picker.lsp_symbols() end" "現在ファイルのシンボルを探す")
|
(mkRaw "<leader>ff" "function() Snacks.picker.files() end" "ファイルを探す")
|
||||||
(mkRaw "<leader>fS" "function() Snacks.picker.lsp_workspace_symbols() end" "ワークスペース全体のシンボルを探す")
|
(mkRaw "<leader>fg" "function() Snacks.picker.grep() end" "文字列を全文検索")
|
||||||
(mkRaw "<leader>fr" "function() Snacks.picker.registers() end" "レジスタを探す")
|
(mkRaw "<leader>fb" "function() Snacks.picker.buffers() end" "開いているバッファを探す")
|
||||||
(mkRaw "<leader>fj" "function() Snacks.picker.jumps() end" "ジャンプ履歴を探す")
|
(mkRaw "<leader>fh" "function() Snacks.picker.help() end" "ヘルプ項目を探す")
|
||||||
(mkRaw "<leader>fq" "function() Snacks.picker.qflist() end" "Quickfixを探す")
|
(mkRaw "<leader>fk" "function() Snacks.picker.keymaps() end" "キーマップを探す")
|
||||||
(mkRaw "<leader>fl" "function() Snacks.picker.loclist() end" "Location Listを探す")
|
(mkRaw "<leader>fc" "function() Snacks.picker.commands() end" "コマンドを探す")
|
||||||
]
|
|
||||||
|
# Snacks Picker: code navigation
|
||||||
|
(mkRaw "<leader>fs" "function() Snacks.picker.lsp_symbols() end" "現在ファイルのシンボルを探す")
|
||||||
|
(mkRaw "<leader>fS" "function() Snacks.picker.lsp_workspace_symbols() end" "ワークスペース全体のシンボルを探す")
|
||||||
|
(mkRaw "<leader>fr" "function() Snacks.picker.registers() end" "レジスタを探す")
|
||||||
|
(mkRaw "<leader>fj" "function() Snacks.picker.jumps() end" "ジャンプ履歴を探す")
|
||||||
|
(mkRaw "<leader>fq" "function() Snacks.picker.qflist() end" "Quickfixを探す")
|
||||||
|
(mkRaw "<leader>fl" "function() Snacks.picker.loclist() end" "Location Listを探す")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim = {
|
||||||
|
env = {
|
||||||
|
LANG = "ja_JP.UTF-8";
|
||||||
|
LC_MESSAGES = "ja_JP.UTF-8";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfigLua = ''
|
||||||
|
vim.cmd.language("ja_JP.utf8")
|
||||||
|
vim.opt.helplang = { "ja", "en" }
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim = {
|
||||||
|
plugins.lsp = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
servers = {
|
||||||
|
# TypeScript / JavaScript
|
||||||
|
vtsls = {
|
||||||
|
enable = true;
|
||||||
|
packageFallback = true;
|
||||||
|
rootMarkers = [
|
||||||
|
"pnpm-workspace.yaml"
|
||||||
|
"package.json"
|
||||||
|
"tsconfig.json"
|
||||||
|
"jsconfig.json"
|
||||||
|
".git"
|
||||||
|
];
|
||||||
|
extraOptions.settings.typescript.locale = "ja";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Biome for lint / format
|
||||||
|
biome = {
|
||||||
|
enable = true;
|
||||||
|
packageFallback = true;
|
||||||
|
rootMarkers = [
|
||||||
|
"biome.json"
|
||||||
|
"biome.jsonc"
|
||||||
|
"package.json"
|
||||||
|
"pnpm-workspace.yaml"
|
||||||
|
".git"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Frontend / config languages
|
||||||
|
tailwindcss.enable = true;
|
||||||
|
cssls.enable = true;
|
||||||
|
jsonls.enable = true;
|
||||||
|
yamlls.enable = true;
|
||||||
|
lua_ls.enable = true;
|
||||||
|
nixd.enable = true;
|
||||||
|
|
||||||
|
# Other languages
|
||||||
|
rust_analyzer = {
|
||||||
|
enable = true;
|
||||||
|
installCargo = true;
|
||||||
|
installRustc = true;
|
||||||
|
};
|
||||||
|
svelte.enable = true;
|
||||||
|
ty.enable = true;
|
||||||
|
ruff.enable = true;
|
||||||
|
astro.enable = true;
|
||||||
|
gopls.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Diagnostic UI
|
||||||
|
diagnostic.settings = {
|
||||||
|
virtual_text = true;
|
||||||
|
float = {
|
||||||
|
border = "rounded";
|
||||||
|
source = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim = {
|
||||||
|
opts = {
|
||||||
|
# display
|
||||||
|
number = true;
|
||||||
|
relativenumber = true;
|
||||||
|
signcolumn = "yes";
|
||||||
|
termguicolors = true;
|
||||||
|
|
||||||
|
# action
|
||||||
|
mouse = "a";
|
||||||
|
clipboard = "unnamedplus";
|
||||||
|
updatetime = 200;
|
||||||
|
timeoutlen = 300;
|
||||||
|
undofile = true;
|
||||||
|
|
||||||
|
# display
|
||||||
|
wrap = false;
|
||||||
|
scrolloff = 8;
|
||||||
|
|
||||||
|
# search
|
||||||
|
ignorecase = true;
|
||||||
|
smartcase = true;
|
||||||
|
|
||||||
|
# window split
|
||||||
|
splitright = true;
|
||||||
|
splitbelow = true;
|
||||||
|
|
||||||
|
# indent
|
||||||
|
tabstop = 2;
|
||||||
|
shiftwidth = 2;
|
||||||
|
expandtab = true;
|
||||||
|
|
||||||
|
# file encoding
|
||||||
|
encoding = "utf-8";
|
||||||
|
fileencoding = "utf-8";
|
||||||
|
fileencodings = "utf-8,sjis,euc-jp,iso-2022-jp";
|
||||||
|
|
||||||
|
# invisible characters
|
||||||
|
list = true;
|
||||||
|
listchars = "tab:»-,trail:-,extends:»,precedes:«,nbsp:%";
|
||||||
|
};
|
||||||
|
|
||||||
|
globals = {
|
||||||
|
mapleader = " ";
|
||||||
|
maplocalleader = " ";
|
||||||
|
clipboard = "osc52";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{ lib, ... }@args:
|
||||||
|
lib.mkMerge [
|
||||||
|
(import ./editor args)
|
||||||
|
(import ./ui args)
|
||||||
|
]
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.nvim-autopairs.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.blink-cmp = {
|
||||||
|
enable = true;
|
||||||
|
setupLspCapabilities = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
keymap = {
|
||||||
|
preset = "enter";
|
||||||
|
|
||||||
|
"<C-Space>" = [ "show" ];
|
||||||
|
"<C-d>" = [ "scroll_documentation_up" ];
|
||||||
|
"<C-e>" = [ "hide" ];
|
||||||
|
"<C-f>" = [ "scroll_documentation_down" ];
|
||||||
|
|
||||||
|
"<Tab>" = [
|
||||||
|
"accept"
|
||||||
|
{
|
||||||
|
__raw = ''
|
||||||
|
function()
|
||||||
|
local ok, copilot = pcall(require, "copilot.suggestion")
|
||||||
|
if ok and copilot.is_visible() then
|
||||||
|
copilot.accept()
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
"<S-Tab>" = [
|
||||||
|
"select_prev"
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
"<C-n>" = [
|
||||||
|
"select_next"
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
"<C-p>" = [
|
||||||
|
"select_prev"
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
completion.list.selection = {
|
||||||
|
preselect = true;
|
||||||
|
auto_insert = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
sources.default = [
|
||||||
|
"lsp"
|
||||||
|
"path"
|
||||||
|
"buffer"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.comment.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins."conform-nvim" = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
javascript.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
javascriptreact.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
typescript.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
typescriptreact.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
json.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
yaml.__raw = ''{ "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
markdown.__raw = ''{ "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
lua = [ "stylua" ];
|
||||||
|
nix.__raw = ''{ "nix_fmt", "alejandra", stop_after_first = true }'';
|
||||||
|
sh = [ "shfmt" ];
|
||||||
|
};
|
||||||
|
formatters.nix_fmt = {
|
||||||
|
command = "nixfmt";
|
||||||
|
};
|
||||||
|
format_on_save.__raw = ''
|
||||||
|
function(_)
|
||||||
|
return { timeout_ms = 1000, lsp_format = "fallback" }
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.copilot-lua = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
suggestion = {
|
||||||
|
auto_trigger = true;
|
||||||
|
keymap.enabled = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{ lib, ... }@args:
|
||||||
|
lib.mkMerge [
|
||||||
|
(import ./autopairs.nix args)
|
||||||
|
(import ./blink-cmp.nix args)
|
||||||
|
(import ./comment.nix args)
|
||||||
|
(import ./conform.nix args)
|
||||||
|
(import ./copilot.nix args)
|
||||||
|
(import ./flash.nix args)
|
||||||
|
(import ./git-conflict.nix args)
|
||||||
|
(import ./git.nix args)
|
||||||
|
(import ./gitsigns.nix args)
|
||||||
|
(import ./glance.nix args)
|
||||||
|
(import ./lsp-signature.nix args)
|
||||||
|
(import ./snacks.nix args)
|
||||||
|
(import ./spectre.nix args)
|
||||||
|
(import ./surround.nix args)
|
||||||
|
(import ./todo-comments.nix args)
|
||||||
|
(import ./treesitter.nix args)
|
||||||
|
(import ./trouble.nix args)
|
||||||
|
(import ./wakatime.nix args)
|
||||||
|
]
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.flash-nvim ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("flash").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.git-conflict-nvim ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("git-conflict").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPackages = [ pkgs.lazygit ];
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
lazygit.enable = true;
|
||||||
|
diffview.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
_: {
|
||||||
|
# git change view
|
||||||
|
programs.nixvim.plugins.gitsigns = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
signs = {
|
||||||
|
add = {
|
||||||
|
text = "+";
|
||||||
|
};
|
||||||
|
change = {
|
||||||
|
text = "~";
|
||||||
|
};
|
||||||
|
delete = {
|
||||||
|
text = "_";
|
||||||
|
};
|
||||||
|
topdelete = {
|
||||||
|
text = "‾";
|
||||||
|
};
|
||||||
|
changedelete = {
|
||||||
|
text = "~";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.glance-nvim ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("glance").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.lsp-signature = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
hint_enable = true;
|
||||||
|
hint_prefix = " ";
|
||||||
|
floating_window = true;
|
||||||
|
bind = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.snacks-nvim ];
|
||||||
|
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("snacks").setup({
|
||||||
|
picker = {
|
||||||
|
enabled = true,
|
||||||
|
|
||||||
|
actions = require("trouble.sources.snacks").actions,
|
||||||
|
|
||||||
|
win = {
|
||||||
|
input = {
|
||||||
|
keys = {
|
||||||
|
["<C-t>"] = {
|
||||||
|
"trouble_open",
|
||||||
|
mode = { "n", "i" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
notifier = { enabled = true },
|
||||||
|
words = { enabled = true },
|
||||||
|
scroll = { enabled = true },
|
||||||
|
dim = { enabled = true },
|
||||||
|
})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPackages = [ pkgs.ripgrep ];
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.nvim-spectre ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("spectre").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.nvim-surround.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.todo-comments-nvim ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("todo-comments").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
plugins.treesitter = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
highlight.enable = true;
|
||||||
|
indent.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.nvim-ts-autotag ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("nvim-ts-autotag").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.trouble.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.extraPlugins = [ pkgs.vimPlugins.vim-wakatime ];
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.barbar = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
animation = false;
|
||||||
|
auto_hide = 1;
|
||||||
|
tabpages = true;
|
||||||
|
clickable = true;
|
||||||
|
focus_on_close = "left";
|
||||||
|
|
||||||
|
icons = {
|
||||||
|
button = "";
|
||||||
|
separator = {
|
||||||
|
left = "▎";
|
||||||
|
right = "";
|
||||||
|
};
|
||||||
|
separator_at_end = false;
|
||||||
|
filetype.enabled = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
sidebar_filetypes = {
|
||||||
|
neo-tree = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.indent-blankline = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
scope = {
|
||||||
|
enabled = true;
|
||||||
|
show_start = true;
|
||||||
|
show_end = true;
|
||||||
|
};
|
||||||
|
exclude = {
|
||||||
|
filetypes = [
|
||||||
|
"help"
|
||||||
|
"neo-tree"
|
||||||
|
"toggleterm"
|
||||||
|
"lazy"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.colorizer = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
filetypes = [
|
||||||
|
"*"
|
||||||
|
"!markdown"
|
||||||
|
];
|
||||||
|
user_commands = true;
|
||||||
|
|
||||||
|
options = {
|
||||||
|
parsers = {
|
||||||
|
css = true;
|
||||||
|
tailwind = {
|
||||||
|
enable = true;
|
||||||
|
lsp = true;
|
||||||
|
update_names = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
display.mode = "background";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{ lib, ... }@args:
|
||||||
|
lib.mkMerge [
|
||||||
|
(import ./barbar.nix args)
|
||||||
|
(import ./blankline.nix args)
|
||||||
|
(import ./colorizer.nix args)
|
||||||
|
(import ./dropbar.nix args)
|
||||||
|
(import ./lightbulb.nix args)
|
||||||
|
(import ./lualine.nix args)
|
||||||
|
(import ./markview.nix args)
|
||||||
|
(import ./neo-tree.nix args)
|
||||||
|
(import ./scrollbar.nix args)
|
||||||
|
(import ./toggleterm.nix args)
|
||||||
|
(import ./treesitter.nix args)
|
||||||
|
(import ./ufo.nix args)
|
||||||
|
(import ./web-devicons.nix args)
|
||||||
|
(import ./which-key.nix args)
|
||||||
|
(import ./zen-mode.nix args)
|
||||||
|
]
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.dropbar.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.nvim-lightbulb = {
|
||||||
|
enable = true;
|
||||||
|
settings.autocmd.enabled = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.lualine = {
|
||||||
|
enable = true;
|
||||||
|
settings.sections.lualine_x = [
|
||||||
|
{
|
||||||
|
__raw = ''
|
||||||
|
function()
|
||||||
|
local ok, conform = pcall(require, "conform")
|
||||||
|
if not ok then return "" end
|
||||||
|
local formatters = conform.list_formatters(0)
|
||||||
|
for _, f in ipairs(formatters) do
|
||||||
|
if f.available then
|
||||||
|
return " " .. f.name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
"encoding"
|
||||||
|
"fileformat"
|
||||||
|
"filetype"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.markview-nvim ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("markview").setup({ initial_state = false })
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim = {
|
||||||
|
plugins.neo-tree = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
close_if_last_window = true;
|
||||||
|
|
||||||
|
filesystem = {
|
||||||
|
follow_current_file = {
|
||||||
|
enabled = true;
|
||||||
|
leave_dirs_open = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
filtered_items = {
|
||||||
|
visible = true;
|
||||||
|
hide_dotfiles = false;
|
||||||
|
hide_gitignored = true;
|
||||||
|
hide_ignored = false;
|
||||||
|
hide_hidden = false;
|
||||||
|
|
||||||
|
hide_by_name = [ ];
|
||||||
|
hide_by_pattern = [ ];
|
||||||
|
|
||||||
|
always_show = [ ];
|
||||||
|
always_show_by_pattern = [ ];
|
||||||
|
|
||||||
|
never_show = [
|
||||||
|
".DS_Store"
|
||||||
|
"thumbs.db"
|
||||||
|
];
|
||||||
|
never_show_by_pattern = [ ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.nvim-scrollbar ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("scrollbar").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.toggleterm.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins."treesitter-context".enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
opts = {
|
||||||
|
foldcolumn = "1";
|
||||||
|
foldlevel = 99;
|
||||||
|
foldlevelstart = 99;
|
||||||
|
foldenable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraPlugins = [
|
||||||
|
pkgs.vimPlugins.nvim-ufo
|
||||||
|
pkgs.vimPlugins.promise-async
|
||||||
|
];
|
||||||
|
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("ufo").setup({
|
||||||
|
provider_selector = function()
|
||||||
|
return { "treesitter", "indent" }
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
_: {
|
||||||
|
# icon set preview
|
||||||
|
programs.nixvim.plugins.web-devicons.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
_: {
|
||||||
|
# key map help
|
||||||
|
programs.nixvim.plugins.which-key.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.zen-mode-nvim ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("zen-mode").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user