neovim -> nixvim
This commit is contained in:
@@ -19,10 +19,6 @@
|
||||
pavucontrol
|
||||
sshfs
|
||||
|
||||
obsidian
|
||||
lean4
|
||||
gcc
|
||||
|
||||
cups
|
||||
firefox
|
||||
bitwarden-desktop
|
||||
|
||||
@@ -12,10 +12,9 @@
|
||||
./inkscape.nix
|
||||
./libreoffice.nix
|
||||
./messenger.nix
|
||||
./neovim
|
||||
./nextcloud.nix
|
||||
./nixvim
|
||||
./picard.nix
|
||||
./planify.nix
|
||||
./prismlauncher.nix
|
||||
./pulseaudio
|
||||
./river
|
||||
|
||||
104
home/programs/nixvim/default.nix
Normal file
104
home/programs/nixvim/default.nix
Normal file
@@ -0,0 +1,104 @@
|
||||
{ inputs, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
inputs.nixvim.homeModules.nixvim
|
||||
./plugins
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
};
|
||||
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
|
||||
nixpkgs.useGlobalPackages = false;
|
||||
|
||||
clipboard = {
|
||||
providers = {
|
||||
wl-copy.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
|
||||
lualoader.enable = true;
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
texliveFull
|
||||
texlivePackages.standalone
|
||||
# papis-nvim
|
||||
]
|
||||
;
|
||||
extraConfigVim = ''
|
||||
filetype plugin on
|
||||
set nocompatible
|
||||
syntax on
|
||||
'';
|
||||
|
||||
colorscheme = "catppuccin";
|
||||
colorschemes.catppuccin = {
|
||||
#lazyLoad.enable = true;
|
||||
enable = true;
|
||||
flavour = "mocha";
|
||||
settings = {
|
||||
integrations = {
|
||||
markdown = true;
|
||||
leap = true;
|
||||
dap = true;
|
||||
dap_ui = true;
|
||||
lsp_trouble = true;
|
||||
blink_cmp = true;
|
||||
gitsigns = true;
|
||||
diffview = true;
|
||||
treesitter = true;
|
||||
barbar = true;
|
||||
telescope = true;
|
||||
native_lsp = {
|
||||
enabled = true;
|
||||
virtual_text = {
|
||||
errors = [ "italic" ];
|
||||
hints = [ "italic" ];
|
||||
warnings = [ "italic" ];
|
||||
information = [ "italic" ];
|
||||
ok = [ "italic" ];
|
||||
};
|
||||
underlines = {
|
||||
errors = [ "underline" ];
|
||||
hints = [ "underline" ];
|
||||
warnings = [ "underline" ];
|
||||
information = [ "underline" ];
|
||||
ok = [ "underline" ];
|
||||
};
|
||||
inlay_hints = {
|
||||
background = true;
|
||||
};
|
||||
};
|
||||
lsp_saga = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
globals = {
|
||||
mapleader = " ";
|
||||
maplocalleader = ",";
|
||||
};
|
||||
|
||||
opts = {
|
||||
cursorline = true; # Enable highlighting of the current line
|
||||
expandtab = true; # Use spaces instead of tabs
|
||||
list = true; # Show some invisible characters (tabs...)
|
||||
mouse = "a"; # Enable mouse mode
|
||||
number = true; # Print line number
|
||||
relativenumber = true; # Relative line numbers
|
||||
shiftround = true; # Round indent
|
||||
shiftwidth = 2; # Size of an indent
|
||||
smartindent = true; # Insert indents automatically
|
||||
spelllang = [ "en" ];
|
||||
tabstop = 2; # Number of spaces tabs count for
|
||||
};
|
||||
};
|
||||
}
|
||||
13
home/programs/nixvim/plugins/autopairs.nix
Normal file
13
home/programs/nixvim/plugins/autopairs.nix
Normal file
@@ -0,0 +1,13 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
nvim-autopairs = {
|
||||
enable = true;
|
||||
settings = {
|
||||
check_ts = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
85
home/programs/nixvim/plugins/barbar.nix
Normal file
85
home/programs/nixvim/plugins/barbar.nix
Normal file
@@ -0,0 +1,85 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
barbar = {
|
||||
enable = true;
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>b";
|
||||
group = "Buffers";
|
||||
icon = " ";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>,";
|
||||
icon = " ";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>.";
|
||||
icon = " ";
|
||||
}
|
||||
];
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
action = "<CMD>BufferPrevious<CR>";
|
||||
key = "<leader>,";
|
||||
mode = "n";
|
||||
options = {
|
||||
desc = "Tab ";
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<CMD>BufferNext<CR>";
|
||||
key = "<leader>.";
|
||||
mode = "n";
|
||||
options = {
|
||||
desc = "Tab ";
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<CMD>BufferMovePrevious<CR>";
|
||||
key = "<leader>b<";
|
||||
mode = "n";
|
||||
options = {
|
||||
desc = "Re-Order ";
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<CMD>BufferMoveNext<CR>";
|
||||
key = "<leader>b>";
|
||||
mode = "n";
|
||||
options = {
|
||||
desc = "Re-Order ";
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<CMD>BufferClose<CR>";
|
||||
key = "<leader>bc";
|
||||
mode = "n";
|
||||
options = {
|
||||
desc = "Close";
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<CMD>tabnew +Telescope\\ file_browser<CR>";
|
||||
key = "<leader>bn";
|
||||
mode = "n";
|
||||
options = {
|
||||
desc = "Create";
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<CMD>BufferPick<CR>";
|
||||
key = "<leader>bp";
|
||||
mode = "n";
|
||||
options = {
|
||||
desc = "Pick Tab";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
68
home/programs/nixvim/plugins/bullets.nix
Normal file
68
home/programs/nixvim/plugins/bullets.nix
Normal file
@@ -0,0 +1,68 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
bullets = {
|
||||
enable = true;
|
||||
settings = {
|
||||
enabled_file_types = [
|
||||
"markdown"
|
||||
"text"
|
||||
"gitcommit"
|
||||
];
|
||||
set_mappings = 0;
|
||||
checkbox_markers = " -X";
|
||||
custom_mappings = [
|
||||
[
|
||||
"nmap"
|
||||
"o"
|
||||
"<Plug>(bullets-newline)"
|
||||
]
|
||||
[
|
||||
"vmap"
|
||||
"gN"
|
||||
"<Plug>(bullets-renumber)"
|
||||
]
|
||||
[
|
||||
"nmap"
|
||||
"gN"
|
||||
"<Plug>(bullets-renumber)"
|
||||
]
|
||||
[
|
||||
"imap"
|
||||
"<C-t>"
|
||||
"<Plug>(bullets-demote)"
|
||||
]
|
||||
[
|
||||
"nmap"
|
||||
">>"
|
||||
"<Plug>(bullets-demote)"
|
||||
]
|
||||
[
|
||||
"vmap"
|
||||
">"
|
||||
"<Plug>(bullets-demote)"
|
||||
]
|
||||
[
|
||||
"imap"
|
||||
"<C-d>"
|
||||
"<Plug>(bullets-promote)"
|
||||
]
|
||||
[
|
||||
"nmap"
|
||||
"<<"
|
||||
"<Plug>(bullets-promote)"
|
||||
]
|
||||
[
|
||||
"vmap"
|
||||
"<"
|
||||
"<Plug>(bullets-promote)"
|
||||
]
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
73
home/programs/nixvim/plugins/cmp.nix
Normal file
73
home/programs/nixvim/plugins/cmp.nix
Normal file
@@ -0,0 +1,73 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
blink-cmp = {
|
||||
enable = true;
|
||||
settings = {
|
||||
keymap = {
|
||||
preset = "default";
|
||||
};
|
||||
snippets = {
|
||||
preset = "luasnip";
|
||||
};
|
||||
completion = {
|
||||
accept = {
|
||||
auto_brackets = {
|
||||
enabled = true;
|
||||
kind_resolution = {
|
||||
enabled = true;
|
||||
};
|
||||
semantic_token_resolution = {
|
||||
enabled = true;
|
||||
timeout_ms = 400;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
sources = {
|
||||
per_filetype = {
|
||||
yaml = [ "papis" ];
|
||||
};
|
||||
providers = {
|
||||
spell = {
|
||||
module = "blink-cmp-spell";
|
||||
name = "Spell";
|
||||
score_offset = 100;
|
||||
opts = { };
|
||||
};
|
||||
vimtex = {
|
||||
name = "vimtex";
|
||||
module = "blink.compat.source";
|
||||
};
|
||||
dap = {
|
||||
name = "dap";
|
||||
module = "blink.compat.source";
|
||||
};
|
||||
mkdnflow = {
|
||||
name = "mkdnflow";
|
||||
module = "blink.compat.source";
|
||||
};
|
||||
};
|
||||
default = [
|
||||
"lsp"
|
||||
"mkdnflow"
|
||||
"path"
|
||||
"snippets"
|
||||
# "dap"
|
||||
"vimtex"
|
||||
"buffer"
|
||||
"spell"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
blink-cmp-spell.enable = true;
|
||||
blink-compat.enable = true;
|
||||
cmp-vimtex.enable = true;
|
||||
# cmp-dap.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
56
home/programs/nixvim/plugins/comment-box.nix
Normal file
56
home/programs/nixvim/plugins/comment-box.nix
Normal file
@@ -0,0 +1,56 @@
|
||||
{...}:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
comment-box = {
|
||||
enable = true;
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>c";
|
||||
group = "Boxes";
|
||||
icon = "□ ";
|
||||
}
|
||||
];
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>cb";
|
||||
action = "<Cmd>CBccbox<CR>";
|
||||
options = {
|
||||
desc = "Box Title";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>ct";
|
||||
action = "<Cmd>CBllline<CR>";
|
||||
options = {
|
||||
desc = "Titled Line";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>cl";
|
||||
action = "<Cmd>CBline<CR>";
|
||||
options = {
|
||||
desc = "Simple Line";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>cm";
|
||||
action = "<Cmd>CBllbox14<CR>";
|
||||
options = {
|
||||
desc = "Marked";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>cd";
|
||||
action = "<Cmd>CBd<CR>";
|
||||
options = {
|
||||
desc = "Remove a Box";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
16
home/programs/nixvim/plugins/comment.nix
Normal file
16
home/programs/nixvim/plugins/comment.nix
Normal file
@@ -0,0 +1,16 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
comment = {
|
||||
enable = true;
|
||||
settings = {
|
||||
mappings = {
|
||||
basic = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
133
home/programs/nixvim/plugins/conform.nix
Normal file
133
home/programs/nixvim/plugins/conform.nix
Normal file
@@ -0,0 +1,133 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
stylua
|
||||
rustfmt
|
||||
fourmolu
|
||||
shellcheck
|
||||
shellharden
|
||||
shfmt
|
||||
black
|
||||
beamMinimal28Packages.elixir
|
||||
clang-tools
|
||||
prettierd
|
||||
nixfmt-rfc-style
|
||||
tex-fmt
|
||||
hclfmt
|
||||
topiary # TODO: Install https://github.com/blindFS/topiary-nushell somehow, e.g. clone languages.ncl to ~/.config/topiary/languages.ncl & nu.scm to ~/.config/topiary/topiary-queries/queries/nu.scm
|
||||
];
|
||||
|
||||
programs.nixvim.plugins = {
|
||||
conform-nvim = {
|
||||
enable = true;
|
||||
settings = {
|
||||
formatters_by_ft = {
|
||||
lua = [ "stylua" ];
|
||||
rust = [ "rustfmt" ];
|
||||
python = [
|
||||
"black"
|
||||
];
|
||||
haskell = [ "fourmolu" ];
|
||||
terraform = [ "hcl" ];
|
||||
elixir = [ "mix" ];
|
||||
bash = [
|
||||
"shellcheck"
|
||||
"shellharden"
|
||||
"shfmt"
|
||||
];
|
||||
sh = [
|
||||
"shellcheck"
|
||||
"shfmt"
|
||||
];
|
||||
c = [ "clang-format" ];
|
||||
cpp = [ "clang-format" ];
|
||||
markdown = [ "prettierd" ];
|
||||
json = [ "prettierd" ];
|
||||
yaml = [ "prettierd" ];
|
||||
nu = [ "topiary_nu" ];
|
||||
nix = [ "nixfmt" ];
|
||||
tex = [
|
||||
"tex-fmt"
|
||||
];
|
||||
"_" = [
|
||||
"squeeze_blanks"
|
||||
"trim_whitespace"
|
||||
"trim_newlines"
|
||||
];
|
||||
};
|
||||
format_on_save = # Lua
|
||||
''
|
||||
function(bufnr)
|
||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||
return
|
||||
end
|
||||
|
||||
return { lsp_fallback = true }
|
||||
end
|
||||
'';
|
||||
format_after_save = # Lua
|
||||
''
|
||||
function(bufnr)
|
||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||
return
|
||||
end
|
||||
|
||||
return { lsp_fallback = true }
|
||||
end
|
||||
'';
|
||||
formatters = {
|
||||
topiary_nu = {
|
||||
command = "topiary";
|
||||
args = [
|
||||
"format"
|
||||
"--language"
|
||||
"nu"
|
||||
];
|
||||
};
|
||||
stylua = {
|
||||
"inherit" = true;
|
||||
prepend_args = [
|
||||
"--indent-type"
|
||||
"Spaces"
|
||||
"--indent-width"
|
||||
"2"
|
||||
];
|
||||
};
|
||||
tex-fmt = {
|
||||
command = "tex-fmt";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.nixvim.userCommands = {
|
||||
FormatDisable = {
|
||||
bang = true;
|
||||
desc = "Disable autoformat-on-save";
|
||||
command.__raw = # Lua
|
||||
''
|
||||
function(args)
|
||||
if args.bang then
|
||||
-- FormatDisable! will disable formatting just for this buffer
|
||||
vim.b.disable_autoformat = true
|
||||
else
|
||||
vim.g.disable_autoformat = true
|
||||
end
|
||||
end
|
||||
'';
|
||||
};
|
||||
FormatEnable = {
|
||||
desc = "Re-enable autoformat-on-save";
|
||||
command.__raw = # Lua
|
||||
''
|
||||
function()
|
||||
vim.b.disable_autoformat = false
|
||||
vim.g.disable_autoformat = false
|
||||
end
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
298
home/programs/nixvim/plugins/dap.nix
Normal file
298
home/programs/nixvim/plugins/dap.nix
Normal file
@@ -0,0 +1,298 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
lldb_19
|
||||
gdb
|
||||
rustc
|
||||
# python3.withPackages
|
||||
# (ps: with ps; [ debugpy ])
|
||||
];
|
||||
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
dap-python = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
dap = {
|
||||
enable = true;
|
||||
luaConfig.post = ''
|
||||
local dap, dapui = require("dap"), require("dapui")
|
||||
dap.listeners.before.attach.dapui_config = function()
|
||||
dapui.open()
|
||||
end
|
||||
dap.listeners.before.launch.dapui_config = function()
|
||||
dapui.open()
|
||||
end
|
||||
dap.listeners.before.event_terminated.dapui_config = function()
|
||||
dapui.close()
|
||||
end
|
||||
dap.listeners.before.event_exited.dapui_config = function()
|
||||
dapui.close()
|
||||
end
|
||||
'';
|
||||
adapters = {
|
||||
executables = {
|
||||
lldb = {
|
||||
command = "${pkgs.lldb_19}/bin/lldb-dap";
|
||||
};
|
||||
gdb = {
|
||||
command = "${pkgs.gdb}/bin/gdb";
|
||||
args = [
|
||||
"--interpreter=dap"
|
||||
"--eval-command"
|
||||
"set print pretty on"
|
||||
];
|
||||
};
|
||||
rust-gdb = {
|
||||
command = "${pkgs.rustc}/bin/rust-gdb";
|
||||
args = [
|
||||
"--interpreter=dap"
|
||||
"--eval-command"
|
||||
"set print pretty on"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
signs = {
|
||||
dapBreakpoint.text = "";
|
||||
};
|
||||
configurations = {
|
||||
cpp = [
|
||||
{
|
||||
name = "Launch";
|
||||
type = "gdb";
|
||||
request = "launch";
|
||||
program.__raw = # lua
|
||||
''
|
||||
function()
|
||||
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
||||
end
|
||||
'';
|
||||
cwd = "\${workspaceFolder}";
|
||||
stopAtBeginningOfMainSubprogram = false;
|
||||
}
|
||||
{
|
||||
name = "Select and attach to process";
|
||||
type = "gdb";
|
||||
request = "attach";
|
||||
program._raw = # lua
|
||||
''
|
||||
function()
|
||||
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
||||
end
|
||||
'';
|
||||
pid.__raw = ''
|
||||
function()
|
||||
local name = vim.fn.input('Executable name (filter): ')
|
||||
return require("dap.utils").pick_process({ filter = name })
|
||||
end
|
||||
'';
|
||||
cwd = "\${workspaceFolder}";
|
||||
}
|
||||
{
|
||||
name = "Attach to gdbserver :1234";
|
||||
type = "gdb";
|
||||
request = "attach";
|
||||
target = "localhost:1234";
|
||||
program.__raw = ''
|
||||
function()
|
||||
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
||||
end
|
||||
'';
|
||||
cwd = "\${workspaceFolder}";
|
||||
}
|
||||
];
|
||||
c = [
|
||||
{
|
||||
name = "Launch file";
|
||||
type = "lldb";
|
||||
request = "launch";
|
||||
cwd = "\${workspaceFolder}";
|
||||
stopOnEntry = false;
|
||||
program.__raw = # lua
|
||||
''
|
||||
function()
|
||||
return coroutine.create(function(coro)
|
||||
local opts = {}
|
||||
require("telescope.pickers")
|
||||
.new(opts, {
|
||||
prompt_title = "Path to executable",
|
||||
finder = require("telescope.finders").new_oneshot_job({ "fd", "--hidden", "--no-ignore", "--type", "x" }, {}),
|
||||
sorter = require("telescope.config").values.generic_sorter(opts),
|
||||
attach_mappings = function(buffer_number)
|
||||
require("telescope.actions").select_default:replace(function()
|
||||
require("telescope.actions").close(buffer_number)
|
||||
coroutine.resume(coro, require("telescope.actions.state").get_selected_entry()[1])
|
||||
end)
|
||||
return true
|
||||
end,
|
||||
})
|
||||
:find()
|
||||
end)
|
||||
end
|
||||
'';
|
||||
args = { };
|
||||
}
|
||||
];
|
||||
rust = [
|
||||
{
|
||||
name = "Launch";
|
||||
type = "rust-gdb";
|
||||
request = "launch";
|
||||
program.__raw = ''
|
||||
function()
|
||||
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
||||
end
|
||||
'';
|
||||
args = { };
|
||||
cwd = "\${workspaceFolder}";
|
||||
stopAtBeginningOfMainSubprogram = false;
|
||||
}
|
||||
{
|
||||
name = "Select and attach to process";
|
||||
type = "rust-gdb";
|
||||
request = "attach";
|
||||
program.__raw = ''
|
||||
function()
|
||||
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
||||
end
|
||||
'';
|
||||
pid.__raw = ''
|
||||
function()
|
||||
local name = vim.fn.input('Executable name (filter): ')
|
||||
return require("dap.utils").pick_process({ filter = name })
|
||||
end
|
||||
'';
|
||||
cwd = "\${workspaceFolder}";
|
||||
}
|
||||
{
|
||||
name = "Attach to gdbserver :1234";
|
||||
type = "rust-gdb";
|
||||
request = "attach";
|
||||
target = "localhost:1234";
|
||||
program.__raw = ''
|
||||
function()
|
||||
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
||||
end
|
||||
'';
|
||||
cwd = "\${workspaceFolder}";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
dap-ui = {
|
||||
enable = true;
|
||||
};
|
||||
dap-virtual-text = {
|
||||
enable = true;
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>d";
|
||||
group = "Debugger";
|
||||
icon = " ";
|
||||
}
|
||||
];
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>dt";
|
||||
action.__raw = "function() require('dap').toggle_breakpoint() end";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Toggle Breakpoint";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>dc";
|
||||
action.__raw = "function() require('dap').continue() end";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Continue";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>dc";
|
||||
action.__raw = "function() require('dap').continue() end";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Continue";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>di";
|
||||
action.__raw = "function() require('dap').step_into() end";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Step Into";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>do";
|
||||
action.__raw = "function() require('dap').step_over() end";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Step Over";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>du";
|
||||
action.__raw = "function() require('dap').step_out() end";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Step Out";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>dr";
|
||||
action.__raw = "function() require('dap').repl.open() end";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Open REPL";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>dl";
|
||||
action.__raw = "function() require('dap').run_last() end";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Run Last";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>dq";
|
||||
action.__raw = # lua
|
||||
''
|
||||
function()
|
||||
require("dap").terminate()
|
||||
require("dapui").close()
|
||||
require("nvim-dap-virtual-text").toggle()
|
||||
end
|
||||
'';
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Terminate";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>db";
|
||||
action.__raw = "function() require('dap').list_breakpoints() end";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "List Breakpoints";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>de";
|
||||
action.__raw = "function() require('dap').set_exception_breakpoints({ ' all ' }) end";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Set Exception Breakpoints";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
52
home/programs/nixvim/plugins/default.nix
Normal file
52
home/programs/nixvim/plugins/default.nix
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
imports = [
|
||||
./autopairs.nix
|
||||
./barbar.nix
|
||||
./bullets.nix
|
||||
./cmp.nix
|
||||
./comment-box.nix
|
||||
./comment.nix
|
||||
./conform.nix
|
||||
./dap.nix
|
||||
./diffview.nix
|
||||
./dynomark.nix
|
||||
./edgy.nix
|
||||
./gitsigns.nix
|
||||
./haskell-tools.nix
|
||||
./knap.nix
|
||||
./leap.nix
|
||||
./lsp.nix
|
||||
./ltex-extra.nix
|
||||
./lualine.nix
|
||||
./markdown-preview.nix
|
||||
./mkdnflow.nix
|
||||
./neoscroll.nix
|
||||
./neotree.nix
|
||||
./noice.nix
|
||||
./notify.nix
|
||||
./oil.nix
|
||||
./otter.nix
|
||||
./papis.nix
|
||||
./peek.nix
|
||||
./markdown-preview.nix
|
||||
./smart-splits.nix
|
||||
./sniprun.nix
|
||||
./startup.nix
|
||||
./surround.nix
|
||||
./telescope.nix
|
||||
./texpresso.nix
|
||||
./todo-comments.nix
|
||||
./toggleterm.nix
|
||||
./treesitter.nix
|
||||
./trouble.nix
|
||||
./typst-preview.nix
|
||||
./typst-vim.nix
|
||||
./undotree.nix
|
||||
./vimtex.nix
|
||||
./which-key.nix
|
||||
./yanky.nix
|
||||
./zk.nix
|
||||
|
||||
./snippets.nix
|
||||
];
|
||||
}
|
||||
12
home/programs/nixvim/plugins/diffview.nix
Normal file
12
home/programs/nixvim/plugins/diffview.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
diffview = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
43
home/programs/nixvim/plugins/dynomark.nix
Normal file
43
home/programs/nixvim/plugins/dynomark.nix
Normal file
@@ -0,0 +1,43 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
dynomark-nvim = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "dynomark.nvim";
|
||||
doCheck = false;
|
||||
src = pkgs.pkgs.fetchFromGitHub {
|
||||
owner = "k-lar";
|
||||
repo = "dynomark.nvim";
|
||||
rev = "a59f4e44a7619747552d869747d0f3fbb7be32b3";
|
||||
hash = "sha256-zrPpFMLI2lbqm0W/I530519d7RQKDK9HRouMNAsXv+U=";
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.nixvim = {
|
||||
|
||||
extraPlugins = [
|
||||
dynomark-nvim
|
||||
];
|
||||
|
||||
extraConfigLua = ''require('dynomark').setup({})'';
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>v";
|
||||
action = "<Plug>(DynomarkToggle)";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Toggle Dynomark";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>V";
|
||||
action = "<Plug>(DynomarkRun)";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Run dynomark query under cursor";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
80
home/programs/nixvim/plugins/edgy.nix
Normal file
80
home/programs/nixvim/plugins/edgy.nix
Normal file
@@ -0,0 +1,80 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
localOpts = {
|
||||
# views can only be fully collapsed with the global statusline
|
||||
laststatus = 3;
|
||||
# Default splitting will cause your main splits to jump when opening an edgebar.
|
||||
# To prevent this, set `splitkeep` to either `screen` or `topline`.
|
||||
splitkeep = "screen";
|
||||
};
|
||||
plugins = {
|
||||
edgy = {
|
||||
enable = true;
|
||||
autoLoad = true;
|
||||
settings = {
|
||||
bottom.__raw = ''
|
||||
{
|
||||
-- toggleterm / lazyterm at the bottom with a height of 40% of the screen
|
||||
{
|
||||
ft = "toggleterm",
|
||||
size = { height = 0.2 },
|
||||
-- exclude floating windows
|
||||
filter = function(buf, win)
|
||||
return vim.api.nvim_win_get_config(win).relative == ""
|
||||
end
|
||||
},
|
||||
"Trouble",
|
||||
{ ft = "qf", title = "QuickFix" },
|
||||
{
|
||||
ft = "help",
|
||||
size = { height = 20 },
|
||||
-- only show help buffers
|
||||
filter = function(buf)
|
||||
return vim.bo[buf].buftype == "help"
|
||||
end
|
||||
}
|
||||
}
|
||||
'';
|
||||
left.__raw = ''
|
||||
{
|
||||
-- Neo-tree filesystem always takes half the screen height
|
||||
{
|
||||
title = "Neo-Tree",
|
||||
ft = "neo-tree",
|
||||
filter = function(buf)
|
||||
return vim.b[buf].neo_tree_source == "filesystem"
|
||||
end,
|
||||
size = { height = 0.2 }
|
||||
},
|
||||
{
|
||||
title = "Neo-Tree Git",
|
||||
ft = "neo-tree",
|
||||
filter = function(buf)
|
||||
return vim.b[buf].neo_tree_source == "git_status"
|
||||
end,
|
||||
pinned = true,
|
||||
collapsed = true, -- show window as closed/collapsed on start
|
||||
open = "Neotree position=right git_status"
|
||||
},
|
||||
{
|
||||
title = "Neo-Tree Buffers",
|
||||
ft = "neo-tree",
|
||||
filter = function(buf)
|
||||
return vim.b[buf].neo_tree_source == "buffers"
|
||||
end,
|
||||
pinned = true,
|
||||
collapsed = true, -- show window as closed/collapsed on start
|
||||
open = "Neotree position=top buffers"
|
||||
},
|
||||
-- any other neo-tree windows
|
||||
"neo-tree"
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
11
home/programs/nixvim/plugins/gitsigns.nix
Normal file
11
home/programs/nixvim/plugins/gitsigns.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
gitsigns = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
19
home/programs/nixvim/plugins/haskell-tools.nix
Normal file
19
home/programs/nixvim/plugins/haskell-tools.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
extraPackages = with pkgs; [
|
||||
haskell.compiler.native-bignum.ghc912
|
||||
haskellPackages.haskell-language-server
|
||||
haskellPackages.stack
|
||||
haskellPackages.fast-tags
|
||||
haskellPackages.hoogle
|
||||
haskellPackages.haskell-debug-adapter
|
||||
haskellPackages.ghci-dap
|
||||
];
|
||||
|
||||
extraPlugins = with pkgs.vimPlugins; [
|
||||
haskell-tools-nvim
|
||||
];
|
||||
};
|
||||
}
|
||||
68
home/programs/nixvim/plugins/knap.nix
Normal file
68
home/programs/nixvim/plugins/knap.nix
Normal file
@@ -0,0 +1,68 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
# TODO: Make filetype keybindings work
|
||||
let
|
||||
keys = [
|
||||
{
|
||||
action.__raw = "function() require('knap').close_viewer() end";
|
||||
key = "<C-k>c";
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
"i"
|
||||
];
|
||||
options = {
|
||||
desc = "Close Viewer (knap)";
|
||||
};
|
||||
}
|
||||
{
|
||||
action.__raw = "function() require('knap').toggle_autopreviewing() end";
|
||||
key = "<C-k>k";
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
"i"
|
||||
];
|
||||
options = {
|
||||
desc = "Toggle Auto-Processing (knap)";
|
||||
};
|
||||
}
|
||||
{
|
||||
action.__raw = "function() require('knap').forward_jump() end";
|
||||
key = "<C-k>s";
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
"i"
|
||||
];
|
||||
options = {
|
||||
desc = "SyncTeX Forward Search (Knap)";
|
||||
};
|
||||
}
|
||||
];
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
pandoc
|
||||
texliveFull
|
||||
rubber
|
||||
];
|
||||
programs.nixvim = {
|
||||
extraPlugins = with pkgs.vimPlugins; [ knap ];
|
||||
globals = {
|
||||
knap_settings = {
|
||||
htmltohtmlviewerlaunch = "luakit %outputfile%";
|
||||
mdtohtmlviewerlaunch = "luakit %outputfile%";
|
||||
markdowntohtmlviewerlaunch = "luakit %outputfile%";
|
||||
};
|
||||
};
|
||||
files = {
|
||||
"ftplugin/latex.lua" = {
|
||||
keymaps = keys;
|
||||
};
|
||||
"ftplugin/markdown.lua" = {
|
||||
keymaps = keys;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
30
home/programs/nixvim/plugins/leap.nix
Normal file
30
home/programs/nixvim/plugins/leap.nix
Normal file
@@ -0,0 +1,30 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
leap = {
|
||||
enable = true;
|
||||
settings = {
|
||||
case_sensitive = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
key = "s";
|
||||
action = "<Plug>(leap)";
|
||||
mode = [
|
||||
"n"
|
||||
"x"
|
||||
"o"
|
||||
];
|
||||
}
|
||||
{
|
||||
key = "S";
|
||||
action = "<Plug>(leap-from-window)";
|
||||
mode = [ "n" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
102
home/programs/nixvim/plugins/lsp.nix
Normal file
102
home/programs/nixvim/plugins/lsp.nix
Normal file
@@ -0,0 +1,102 @@
|
||||
{ pkgs, config, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
tofu-ls
|
||||
zuban
|
||||
];
|
||||
|
||||
programs.nixvim = {
|
||||
plugins.lsp.enable = true;
|
||||
|
||||
lsp = {
|
||||
luaConfig = {
|
||||
post = ''
|
||||
vim.lsp.enable('tofu_ls')
|
||||
vim.lsp.enable('prolog_ls')
|
||||
'';
|
||||
};
|
||||
servers = {
|
||||
nixd = {
|
||||
enable = false;
|
||||
};
|
||||
rust_analyzer = {
|
||||
enable = true;
|
||||
};
|
||||
leanls = {
|
||||
enable = true;
|
||||
};
|
||||
nil_ls = {
|
||||
enable = !config.programs.nixvim.plugins.lsp.servers.nixd.enable;
|
||||
config = {
|
||||
nil = {
|
||||
formatting = {
|
||||
command = [
|
||||
"nixfmt"
|
||||
];
|
||||
};
|
||||
diagnostics = {
|
||||
ignored = [ ];
|
||||
};
|
||||
nix = {
|
||||
flake = {
|
||||
autoArchive = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
nushell = {
|
||||
enable = true;
|
||||
};
|
||||
pylsp = {
|
||||
enable = true;
|
||||
};
|
||||
pylyzer = {
|
||||
enable = false;
|
||||
};
|
||||
pyright = {
|
||||
enable = true;
|
||||
};
|
||||
clangd = {
|
||||
enable = true;
|
||||
};
|
||||
zk = {
|
||||
enable = true;
|
||||
};
|
||||
elixirls = {
|
||||
enable = true;
|
||||
};
|
||||
marksman = {
|
||||
enable = true;
|
||||
};
|
||||
texlab = {
|
||||
enable = true;
|
||||
};
|
||||
lua_ls = {
|
||||
enable = true;
|
||||
};
|
||||
ltex_plus = {
|
||||
enable = true;
|
||||
package = pkgs.ltex-ls-plus;
|
||||
config = {
|
||||
ltex = {
|
||||
language = "en-US";
|
||||
enabled = [
|
||||
"latex"
|
||||
"tex"
|
||||
"bibtex"
|
||||
"markdown"
|
||||
"typst"
|
||||
"quarto"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
tinymist = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
9
home/programs/nixvim/plugins/ltex-extra.nix
Normal file
9
home/programs/nixvim/plugins/ltex-extra.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
ltex-extra = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
49
home/programs/nixvim/plugins/lualine.nix
Normal file
49
home/programs/nixvim/plugins/lualine.nix
Normal file
@@ -0,0 +1,49 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
lualine = {
|
||||
enable = true;
|
||||
settings = {
|
||||
theme = "catppuccin";
|
||||
# sections = {
|
||||
# lualine_c = [
|
||||
# {
|
||||
# __unkeyed-1 = {
|
||||
# __raw = ''
|
||||
# function()
|
||||
# require("trouble").statusline({
|
||||
# mode = "lsp_document_symbols",
|
||||
# groups = {},
|
||||
# title = false,
|
||||
# filter = { range = true },
|
||||
# format = "{kind_icon}{symbol.name:Normal}",
|
||||
# -- The following line is needed to fix the background color
|
||||
# -- Set it to the lualine section you want to use
|
||||
# hl_group = "lualine_c_normal",
|
||||
# }
|
||||
# ).get
|
||||
# end
|
||||
# '';
|
||||
# };
|
||||
# cond = {
|
||||
# __raw = ''
|
||||
# require("trouble").statusline({
|
||||
# mode = "lsp_document_symbols",
|
||||
# groups = {},
|
||||
# title = false,
|
||||
# filter = { range = true },
|
||||
# format = "{kind_icon}{symbol.name:Normal}",
|
||||
# -- The following line is needed to fix the background color
|
||||
# -- Set it to the lualine section you want to use
|
||||
# hl_group = "lualine_c_normal",
|
||||
# }).has
|
||||
# '';
|
||||
# };
|
||||
# }
|
||||
# ];
|
||||
# };
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
9
home/programs/nixvim/plugins/markdown-preview.nix
Normal file
9
home/programs/nixvim/plugins/markdown-preview.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
markdown-preview = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
191
home/programs/nixvim/plugins/mkdnflow.nix
Normal file
191
home/programs/nixvim/plugins/mkdnflow.nix
Normal file
@@ -0,0 +1,191 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
extraConfigLua = ''
|
||||
vim.api.nvim_create_autocmd("FileType", {pattern = "markdown", command = "set awa"})
|
||||
'';
|
||||
|
||||
plugins = {
|
||||
mkdnflow = {
|
||||
enable = true;
|
||||
settings = {
|
||||
links = {
|
||||
style = "wiki";
|
||||
create_on_follow_failure = true;
|
||||
conceal = true;
|
||||
name_is_source = false;
|
||||
implicit_extension = "md";
|
||||
context = 0;
|
||||
transform_explicit.__raw = # Lua
|
||||
''
|
||||
function(input)
|
||||
if input:match('%d%d%d%d%-%d%d%-%d%d') then
|
||||
return('journals/'..input)
|
||||
else
|
||||
require("zk.api").new(vim.fn.expand('%:p:h'), { dryRun = true }, function(err, res)
|
||||
file_name = res.path:match("[^/]*.md$"):match("(.+)%..+$")
|
||||
end)
|
||||
return(file_name)
|
||||
end
|
||||
end
|
||||
'';
|
||||
};
|
||||
modules = {
|
||||
conceal = true;
|
||||
cursor = true;
|
||||
folds = true;
|
||||
links = true;
|
||||
lists = true;
|
||||
maps = true;
|
||||
paths = true;
|
||||
tables = true;
|
||||
yaml = true;
|
||||
};
|
||||
filetypes = {
|
||||
md = true;
|
||||
qmd = true;
|
||||
};
|
||||
to_do = {
|
||||
symbols = [
|
||||
" "
|
||||
"-"
|
||||
"X"
|
||||
];
|
||||
update_parents = true;
|
||||
};
|
||||
foldtext = {
|
||||
title_transformer.__raw = ''
|
||||
function()
|
||||
local function my_title_transformer(text)
|
||||
local updated_title = text:gsub("%b{}", "")
|
||||
updated_title = updated_title:gsub("^%s*", "")
|
||||
updated_title = updated_title:gsub("%s*$", "")
|
||||
updated_title = updated_title:gsub("^######", "░░░░░▓")
|
||||
updated_title = updated_title:gsub("^#####", "░░░░▓▓")
|
||||
updated_title = updated_title:gsub("^####", "░░░▓▓▓")
|
||||
updated_title = updated_title:gsub("^###", "░░▓▓▓▓")
|
||||
updated_title = updated_title:gsub("^##", "░▓▓▓▓▓")
|
||||
updated_title = updated_title:gsub("^#", "▓▓▓▓▓▓")
|
||||
return updated_title
|
||||
end
|
||||
return my_title_transformer
|
||||
end
|
||||
'';
|
||||
object_count_icon_set = "nerdfont";
|
||||
object_count_opts.__raw = ''
|
||||
function()
|
||||
local opts = {
|
||||
link = false, -- Prevent links from being counted
|
||||
blockquote = { -- Count block quotes (these aren't counted by default)
|
||||
icon = ' ',
|
||||
count_method = {
|
||||
pattern = { "^>.+$" },
|
||||
tally = "blocks",
|
||||
}
|
||||
},
|
||||
fncblk = {
|
||||
-- Override the icon for fenced code blocks with
|
||||
icon = " "
|
||||
}
|
||||
}
|
||||
return opts
|
||||
end
|
||||
'';
|
||||
line_count = false;
|
||||
word_count = true;
|
||||
fill_chars = {
|
||||
left_edge = "╾─🖿 ─";
|
||||
right_edge = "──╼";
|
||||
item_separator = " · ";
|
||||
section_separator = " // ";
|
||||
left_inside = " ┝";
|
||||
right_inside = "┥ ";
|
||||
middle = "─";
|
||||
};
|
||||
};
|
||||
mappings = {
|
||||
MkdnEnter = {
|
||||
key = "<CR>";
|
||||
modes = [
|
||||
"n"
|
||||
"v"
|
||||
"i"
|
||||
];
|
||||
};
|
||||
MkdnGoBack = {
|
||||
key = "<BS>";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnDecreaseHeading = {
|
||||
key = "-";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnIncreaseHeading = {
|
||||
key = "+";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnNewListItemAboveInsert = {
|
||||
key = "O";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnNewListItemBelowInsert = {
|
||||
key = "o";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnTableNewColAfter = {
|
||||
key = "<leader>ic";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnTableNewColBefore = {
|
||||
key = "<leader>iC";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnTableNewRowAbove = {
|
||||
key = "<leader>iR";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnTableNewRowBelow = {
|
||||
key = "<leader>ir";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnTableNextCell = {
|
||||
key = "<Tab>";
|
||||
modes = "i";
|
||||
};
|
||||
MkdnTablePrevCell = {
|
||||
key = "<S-Tab>";
|
||||
modes = "i";
|
||||
};
|
||||
MkdnToggleToDo = {
|
||||
key = "<C-Space>";
|
||||
modes = [
|
||||
"n"
|
||||
"v"
|
||||
];
|
||||
};
|
||||
};
|
||||
create_dirs = true;
|
||||
new_file_template = {
|
||||
use_template = true;
|
||||
placeholders = {
|
||||
before = {
|
||||
title = "link_title";
|
||||
date = "os_date";
|
||||
};
|
||||
after = { };
|
||||
};
|
||||
template = ''
|
||||
---
|
||||
title: {{ title }}
|
||||
date: {{ date }}
|
||||
tags: []
|
||||
---
|
||||
# {{ title }}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
28
home/programs/nixvim/plugins/neoscroll.nix
Normal file
28
home/programs/nixvim/plugins/neoscroll.nix
Normal file
@@ -0,0 +1,28 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
neoscroll = {
|
||||
enable = true;
|
||||
settings = {
|
||||
cursor_scrolls_alone = true;
|
||||
easing_function = "quadratic";
|
||||
hide_cursor = true;
|
||||
mappings = [
|
||||
"<C-u>"
|
||||
"<C-d>"
|
||||
"<C-b>"
|
||||
"<C-f>"
|
||||
"<C-y>"
|
||||
"<C-e>"
|
||||
"zt"
|
||||
"zz"
|
||||
"zb"
|
||||
];
|
||||
respect_scrolloff = false;
|
||||
stop_eof = true;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
14
home/programs/nixvim/plugins/neotree.nix
Normal file
14
home/programs/nixvim/plugins/neotree.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
neo-tree = {
|
||||
enable = true;
|
||||
settings = {
|
||||
enable_git_status = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
22
home/programs/nixvim/plugins/noice.nix
Normal file
22
home/programs/nixvim/plugins/noice.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
noice = {
|
||||
enable = true;
|
||||
settings = {
|
||||
lsp.override = {
|
||||
"vim.lsp.util.convert_input_to_markdown_lines" = true;
|
||||
"vim.lsp.util.stylize_markdown" = true;
|
||||
};
|
||||
prests = {
|
||||
bottom_search = true;
|
||||
command_palette = true;
|
||||
inc_rename = false;
|
||||
long_message_to_split = true;
|
||||
lsp_doc_border = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
17
home/programs/nixvim/plugins/notify.nix
Normal file
17
home/programs/nixvim/plugins/notify.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
notify = {
|
||||
enable = true;
|
||||
settings = {
|
||||
render = "wrapped-compact";
|
||||
};
|
||||
};
|
||||
};
|
||||
opts = {
|
||||
termguicolors = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
9
home/programs/nixvim/plugins/oil.nix
Normal file
9
home/programs/nixvim/plugins/oil.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
oil = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
9
home/programs/nixvim/plugins/otter.nix
Normal file
9
home/programs/nixvim/plugins/otter.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
otter = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
28
home/programs/nixvim/plugins/papis.nix
Normal file
28
home/programs/nixvim/plugins/papis.nix
Normal file
@@ -0,0 +1,28 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
papis = {
|
||||
enable = true;
|
||||
settings = {
|
||||
yq_bin = "${pkgs.yq-go}/bin/yq";
|
||||
search = {
|
||||
provider = "telescope";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>pp";
|
||||
action = "<CMD>Papis search<CR>";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Papis";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
12
home/programs/nixvim/plugins/peek.nix
Normal file
12
home/programs/nixvim/plugins/peek.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
peek = {
|
||||
enable = true;
|
||||
settings = {
|
||||
app = "firefox";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
29
home/programs/nixvim/plugins/render-markdown.nix
Normal file
29
home/programs/nixvim/plugins/render-markdown.nix
Normal file
@@ -0,0 +1,29 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [ python312Packages.pylatexenc ];
|
||||
|
||||
programs.nixvim.plugins = {
|
||||
render-markdown = {
|
||||
enable = true;
|
||||
settings = {
|
||||
ft = [
|
||||
"markdown"
|
||||
"quarto"
|
||||
];
|
||||
latex = {
|
||||
enabled = false;
|
||||
};
|
||||
completions = {
|
||||
lsp = {
|
||||
enabled = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
web-devicons = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
104
home/programs/nixvim/plugins/smart-splits.nix
Normal file
104
home/programs/nixvim/plugins/smart-splits.nix
Normal file
@@ -0,0 +1,104 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
smart-splits = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
programs.nixvim.keymaps = [
|
||||
{
|
||||
action.__raw = "require('smart-splits').move_cursor_left";
|
||||
key = "<C-S-p>h";
|
||||
mode = "n";
|
||||
}
|
||||
{
|
||||
action.__raw = "require('smart-splits').move_cursor_right";
|
||||
key = "<C-S-p>l";
|
||||
mode = "n";
|
||||
}
|
||||
{
|
||||
action.__raw = "require('smart-splits').move_cursor_down";
|
||||
key = "<C-S-p>j";
|
||||
mode = "n";
|
||||
}
|
||||
{
|
||||
action.__raw = "require('smart-splits').move_cursor_up";
|
||||
key = "<C-S-p>k";
|
||||
mode = "n";
|
||||
}
|
||||
{
|
||||
action.__raw = "require('smart-splits').resize_left";
|
||||
key = "<C-S-r>h";
|
||||
mode = "n";
|
||||
}
|
||||
{
|
||||
action.__raw = "require('smart-splits').resize_right";
|
||||
key = "<C-S-r>l";
|
||||
mode = "n";
|
||||
}
|
||||
{
|
||||
action.__raw = "require('smart-splits').resize_down";
|
||||
key = "<C-S-r>j";
|
||||
mode = "n";
|
||||
}
|
||||
{
|
||||
action.__raw = "require('smart-splits').resize_up";
|
||||
key = "<C-S-r>k";
|
||||
mode = "n";
|
||||
}
|
||||
{
|
||||
action = "<CMD>silent !kitten @ launch --location=hsplit<CR>";
|
||||
key = "<C-S-p>s";
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
"i"
|
||||
];
|
||||
}
|
||||
{
|
||||
action = "<CMD>silent !kitten @ launch --location=vsplit<CR>";
|
||||
key = "<C-S-p>v";
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
"i"
|
||||
];
|
||||
}
|
||||
{
|
||||
action = "<CMD>silent !kitten @ launch --location=hsplit --cwd=current --bias=35<CR>";
|
||||
key = "<C-S-p>p";
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
"i"
|
||||
];
|
||||
}
|
||||
{
|
||||
action = "<CMD>silent !kitten @ close-window<CR>";
|
||||
key = "<C-S-p>q";
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
"i"
|
||||
];
|
||||
}
|
||||
{
|
||||
action = "<CMD>silent !kitten @ action layout_action rotate<CR>";
|
||||
key = "<C-S-p>r";
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
"i"
|
||||
];
|
||||
}
|
||||
{
|
||||
action = "<CMD>silent !kitten @ action toggle_layout stack<CR>";
|
||||
key = "<C-S-p>f";
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
"i"
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
15
home/programs/nixvim/plugins/snippets.nix
Normal file
15
home/programs/nixvim/plugins/snippets.nix
Normal file
@@ -0,0 +1,15 @@
|
||||
{...}:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
luasnip = {
|
||||
enable = true;
|
||||
fromVscode = [ { } ];
|
||||
};
|
||||
|
||||
friendly-snippets = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
28
home/programs/nixvim/plugins/sniprun.nix
Normal file
28
home/programs/nixvim/plugins/sniprun.nix
Normal file
@@ -0,0 +1,28 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
sniprun = {
|
||||
enable = true;
|
||||
settings = {
|
||||
display = [ "VirtualLine" ];
|
||||
snipruncolors = {
|
||||
SniprunVirtualTextOk = {
|
||||
bg = "#91d7e3";
|
||||
fg = "#000000";
|
||||
ctermbg = "Cyan";
|
||||
ctermfg = "Black";
|
||||
};
|
||||
SniprunVirtualTextErr = {
|
||||
bg = "#ee99a0";
|
||||
fg = "#000000";
|
||||
ctermbg = "DarkRed";
|
||||
ctermfg = "Black";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
71
home/programs/nixvim/plugins/startup.nix
Normal file
71
home/programs/nixvim/plugins/startup.nix
Normal file
@@ -0,0 +1,71 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
startup = {
|
||||
enable = true;
|
||||
settings = {
|
||||
theme = "dashboard";
|
||||
sections = {
|
||||
body = {
|
||||
align = "center";
|
||||
content = [
|
||||
[
|
||||
" Find File"
|
||||
"Telescope find_files"
|
||||
"<leader>ff"
|
||||
]
|
||||
[
|
||||
" Find Word"
|
||||
"Telescope live_grep"
|
||||
"<leader>lg"
|
||||
]
|
||||
[
|
||||
" Recent Files"
|
||||
"Telescope oldfiles"
|
||||
"<leader>of"
|
||||
]
|
||||
[
|
||||
" File Browser"
|
||||
"Telescope file_browser"
|
||||
"<leader>fb"
|
||||
]
|
||||
[
|
||||
" Colorschemes"
|
||||
"Telescope colorscheme"
|
||||
"<leader>cs"
|
||||
]
|
||||
[
|
||||
" New File"
|
||||
"lua require'startup'.new_file()"
|
||||
"<leader>nf"
|
||||
]
|
||||
];
|
||||
defaultColor = "";
|
||||
foldSection = true;
|
||||
highlight = "String";
|
||||
margin = 5;
|
||||
oldfilesAmount = 0;
|
||||
title = "Basic Commands";
|
||||
type = "mapping";
|
||||
};
|
||||
header = {
|
||||
align = "center";
|
||||
content = {
|
||||
__raw = "require('startup.headers').hydra_header";
|
||||
};
|
||||
defaultColor = "";
|
||||
foldSection = false;
|
||||
highlight = "Statement";
|
||||
margin = 5;
|
||||
oldfilesAmount = 0;
|
||||
title = "Header";
|
||||
type = "text";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
162
home/programs/nixvim/plugins/surround.nix
Normal file
162
home/programs/nixvim/plugins/surround.nix
Normal file
@@ -0,0 +1,162 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
nvim-surround = {
|
||||
enable = true;
|
||||
luaConfig.post = # lua
|
||||
''
|
||||
local M = {}
|
||||
|
||||
M.get_input = function(prompt)
|
||||
local input = require("nvim-surround.input")
|
||||
return input.get_input(prompt)
|
||||
end
|
||||
|
||||
M.get_selection = function(args)
|
||||
if args.char then
|
||||
return M.get_find(args.char)(args.char)
|
||||
elseif args.motion then
|
||||
return require("nvim-surround.motions").get_selection(args.motion)
|
||||
elseif args.node then
|
||||
return require("nvim-surround.treesitter").get_selection(args.node)
|
||||
elseif args.pattern then
|
||||
return require("nvim-surround.patterns").get_selection(args.pattern)
|
||||
elseif args.query then
|
||||
return require("nvim-surround.queries").get_selection(args.query.capture, args.query.type)
|
||||
else
|
||||
vim.notify("Invalid key provided for `:h nvim-surround.config.get_selection()`.", vim.log.levels.ERROR)
|
||||
end
|
||||
end
|
||||
|
||||
surrounds = {
|
||||
["("] = {
|
||||
add = { "( ", " )" },
|
||||
find = function()
|
||||
return M.get_selection({ motion = "a(" })
|
||||
end,
|
||||
delete = "^(. ?)().-( ?.)()$",
|
||||
},
|
||||
[")"] = {
|
||||
add = { "(", ")" },
|
||||
find = function()
|
||||
return M.get_selection({ motion = "a)" })
|
||||
end,
|
||||
delete = "^(.)().-(.)()$",
|
||||
},
|
||||
["{"] = {
|
||||
add = { "{ ", " }" },
|
||||
find = function()
|
||||
return M.get_selection({ motion = "a{" })
|
||||
end,
|
||||
delete = "^(. ?)().-( ?.)()$",
|
||||
},
|
||||
["}"] = {
|
||||
add = { "{", "}" },
|
||||
find = function()
|
||||
return M.get_selection({ motion = "a}" })
|
||||
end,
|
||||
delete = "^(.)().-(.)()$",
|
||||
},
|
||||
["<"] = {
|
||||
add = { "< ", " >" },
|
||||
find = function()
|
||||
return M.get_selection({ motion = "a<" })
|
||||
end,
|
||||
delete = "^(. ?)().-( ?.)()$",
|
||||
},
|
||||
[">"] = {
|
||||
add = { "<", ">" },
|
||||
find = function()
|
||||
return M.get_selection({ motion = "a>" })
|
||||
end,
|
||||
delete = "^(.)().-(.)()$",
|
||||
},
|
||||
["["] = {
|
||||
add = { "[ ", " ]" },
|
||||
find = function()
|
||||
return M.get_selection({ motion = "a[" })
|
||||
end,
|
||||
delete = "^(. ?)().-( ?.)()$",
|
||||
},
|
||||
["]"] = {
|
||||
add = { "[", "]" },
|
||||
find = function()
|
||||
return M.get_selection({ motion = "a]" })
|
||||
end,
|
||||
delete = "^(.)().-(.)()$",
|
||||
},
|
||||
["'"] = {
|
||||
add = { "'", "'" },
|
||||
find = function()
|
||||
return M.get_selection({ motion = "a'" })
|
||||
end,
|
||||
delete = "^(.)().-(.)()$",
|
||||
},
|
||||
['"'] = {
|
||||
add = { '"', '"' },
|
||||
find = function()
|
||||
return M.get_selection({ motion = 'a"' })
|
||||
end,
|
||||
delete = "^(.)().-(.)()$",
|
||||
},
|
||||
["`"] = {
|
||||
add = { "`", "`" },
|
||||
find = function()
|
||||
return M.get_selection({ motion = "a`" })
|
||||
end,
|
||||
delete = "^(.)().-(.)()$",
|
||||
},
|
||||
["i"] = {
|
||||
add = function()
|
||||
local left_delimiter = M.get_input("Enter the left delimiter: ")
|
||||
local right_delimiter = left_delimiter and M.get_input("Enter the right delimiter: ")
|
||||
if right_delimiter then
|
||||
return { { left_delimiter }, { right_delimiter } }
|
||||
end
|
||||
end,
|
||||
find = function() end,
|
||||
delete = function() end,
|
||||
},
|
||||
}
|
||||
'';
|
||||
settings = {
|
||||
aliases = {
|
||||
"a" = ">";
|
||||
"b" = ")";
|
||||
"B" = "}";
|
||||
"r" = "]";
|
||||
"q" = [
|
||||
"\""
|
||||
"'"
|
||||
"`"
|
||||
];
|
||||
"Q" = "''";
|
||||
"s" = [
|
||||
"}"
|
||||
"]"
|
||||
")"
|
||||
">"
|
||||
"\""
|
||||
"'"
|
||||
"`"
|
||||
];
|
||||
};
|
||||
keymaps = {
|
||||
insert = "<C-g>s";
|
||||
insert_line = "<C-g>S";
|
||||
normal = "ys";
|
||||
normal_cur = "yss";
|
||||
normal_line = "yS";
|
||||
normal_cur_line = "ySS";
|
||||
visual = "S";
|
||||
visual_line = "gS";
|
||||
delete = "ds";
|
||||
# TODO: This keymap clashed with comment boxses
|
||||
change = "cs";
|
||||
change_line = "cS";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
49
home/programs/nixvim/plugins/telescope.nix
Normal file
49
home/programs/nixvim/plugins/telescope.nix
Normal file
@@ -0,0 +1,49 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
ripgrep
|
||||
fd
|
||||
];
|
||||
programs.nixvim.plugins = {
|
||||
telescope = {
|
||||
enable = true;
|
||||
extensions = {
|
||||
fzf-native.enable = true;
|
||||
ui-select.enable = true;
|
||||
undo.enable = true;
|
||||
file-browser = {
|
||||
enable = true;
|
||||
settings = {
|
||||
hijack_netrw = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
keymaps = {
|
||||
"<leader>ff" = {
|
||||
action = "find_files";
|
||||
options.desc = "List Files";
|
||||
};
|
||||
"<leader>fb" = {
|
||||
action = "file_browser path=%:p:h select_buffer=true";
|
||||
options.desc = "File Browser";
|
||||
};
|
||||
"<leader>fs" = {
|
||||
action = "buffers";
|
||||
options.desc = "List Open Buffers";
|
||||
};
|
||||
"<leader>fu" = {
|
||||
action = "undo";
|
||||
options.desc = "Undo Tree";
|
||||
};
|
||||
};
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>f";
|
||||
group = "Telescope";
|
||||
icon = " ";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
30
home/programs/nixvim/plugins/texpresso.nix
Normal file
30
home/programs/nixvim/plugins/texpresso.nix
Normal file
@@ -0,0 +1,30 @@
|
||||
{ ... }:
|
||||
|
||||
# TODO: Make filetype keybindings work
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
texpresso = {
|
||||
enable = false;
|
||||
};
|
||||
};
|
||||
files = {
|
||||
"ftplugin/latex.lua" = {
|
||||
keymaps = [
|
||||
{
|
||||
action = "<CMD>Texpresso %<CR>";
|
||||
key = "<C-k>t";
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
"i"
|
||||
];
|
||||
options = {
|
||||
desc = "Start Texpresso";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
94
home/programs/nixvim/plugins/todo-comments.nix
Normal file
94
home/programs/nixvim/plugins/todo-comments.nix
Normal file
@@ -0,0 +1,94 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
todo-comments = {
|
||||
enable = true;
|
||||
settings = {
|
||||
highlight = {
|
||||
comments_only = false;
|
||||
};
|
||||
colors = {
|
||||
default = [
|
||||
"Identifier"
|
||||
"#7C3AED"
|
||||
];
|
||||
error = [
|
||||
"DiagnosticError"
|
||||
"ErrorMsg"
|
||||
"#DC2626"
|
||||
];
|
||||
hint = [
|
||||
"DiagnosticHint"
|
||||
"#10B981"
|
||||
];
|
||||
info = [
|
||||
"DiagnosticInfo"
|
||||
"#2563EB"
|
||||
];
|
||||
test = [
|
||||
"Identifier"
|
||||
"#FF00FF"
|
||||
];
|
||||
warning = [
|
||||
"DiagnosticWarn"
|
||||
"WarningMsg"
|
||||
"#FBBF24"
|
||||
];
|
||||
};
|
||||
keywords = {
|
||||
FIX = {
|
||||
alt = [
|
||||
"FIXME"
|
||||
"BUG"
|
||||
"FIXIT"
|
||||
"ISSUE"
|
||||
];
|
||||
color = "error";
|
||||
icon = " ";
|
||||
};
|
||||
HACK = {
|
||||
color = "warning";
|
||||
icon = " ";
|
||||
};
|
||||
NOTE = {
|
||||
alt = [
|
||||
"INFO"
|
||||
];
|
||||
color = "hint";
|
||||
icon = " ";
|
||||
};
|
||||
PERF = {
|
||||
alt = [
|
||||
"OPTIM"
|
||||
"PERFORMANCE"
|
||||
"OPTIMIZE"
|
||||
];
|
||||
icon = " ";
|
||||
};
|
||||
TEST = {
|
||||
alt = [
|
||||
"TESTING"
|
||||
"PASSED"
|
||||
"FAILED"
|
||||
];
|
||||
color = "test";
|
||||
icon = "⏲ ";
|
||||
};
|
||||
TODO = {
|
||||
color = "info";
|
||||
icon = " ";
|
||||
};
|
||||
WARN = {
|
||||
alt = [
|
||||
"WARNING"
|
||||
"XXX"
|
||||
];
|
||||
color = "warning";
|
||||
icon = " ";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
43
home/programs/nixvim/plugins/toggleterm.nix
Normal file
43
home/programs/nixvim/plugins/toggleterm.nix
Normal file
@@ -0,0 +1,43 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
toggleterm = {
|
||||
enable = true;
|
||||
settings = {
|
||||
open_mapping.__raw = "[[<c-,>]]";
|
||||
insert_mappings = true;
|
||||
shade_terminals = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
action = "<CMD>ToggleTermSendCurrentLine<CR>";
|
||||
key = "<leader>sts";
|
||||
mode = "n";
|
||||
options = {
|
||||
desc = "Send Current Line";
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<CMD>ToggleTermSendVisualLines<CR>";
|
||||
key = "<leader>stv";
|
||||
mode = "x";
|
||||
options = {
|
||||
desc = "Send all the (whole) lines in selection";
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<CMD>ToggleTermSendVisualSelection<CR>";
|
||||
key = "<leader>sts";
|
||||
mode = "x";
|
||||
options = {
|
||||
desc = "Send selection";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
18
home/programs/nixvim/plugins/treesitter.nix
Normal file
18
home/programs/nixvim/plugins/treesitter.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
treesitter = {
|
||||
enable = true;
|
||||
folding.enable = false;
|
||||
settings = {
|
||||
auto_install = false;
|
||||
highlight.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
ts-context-commentstring = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
170
home/programs/nixvim/plugins/trouble.nix
Normal file
170
home/programs/nixvim/plugins/trouble.nix
Normal file
@@ -0,0 +1,170 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
trouble = {
|
||||
enable = true;
|
||||
settings = {
|
||||
modes = {
|
||||
diagnostics = {
|
||||
auto_close = true;
|
||||
auto_open = false;
|
||||
};
|
||||
# Diagnostics for the current buffer only
|
||||
diagnostics_buffer = {
|
||||
mode = "diagnostics";
|
||||
filter = {
|
||||
buf = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
focus = false;
|
||||
open_no_results = true;
|
||||
# Plugin Default
|
||||
keys = {
|
||||
"<2-leftmouse>" = "jump";
|
||||
"<c-s>" = "jump_split";
|
||||
"<c-v>" = "jump_vsplit";
|
||||
"<cr>" = "jump";
|
||||
"<esc>" = "cancel";
|
||||
"?" = "help";
|
||||
P = "toggle_preview";
|
||||
R = "toggle_refresh";
|
||||
"[[" = "prev";
|
||||
"]]" = "next";
|
||||
d = {
|
||||
action = "delete";
|
||||
mode = "v";
|
||||
};
|
||||
dd = "delete";
|
||||
gb = {
|
||||
action = {
|
||||
__raw = ''
|
||||
function(view)
|
||||
view:filter({ buf = 0 }, { toggle = true })
|
||||
end
|
||||
'';
|
||||
};
|
||||
desc = "Toggle Current Buffer Filter";
|
||||
};
|
||||
i = "inspect";
|
||||
o = "jump_close";
|
||||
p = "preview";
|
||||
q = "close";
|
||||
r = "refresh";
|
||||
s = {
|
||||
action = {
|
||||
__raw = ''
|
||||
function(view)
|
||||
local f = view:get_filter("severity")
|
||||
local severity = ((f and f.filter.severity or 0) + 1) % 5
|
||||
view:filter({ severity = severity }, {
|
||||
id = "severity",
|
||||
template = "{hl:Title}Filter:{hl} {severity}",
|
||||
del = severity == 0,
|
||||
})
|
||||
end
|
||||
'';
|
||||
};
|
||||
desc = "Toggle Severity Filter";
|
||||
};
|
||||
zA = "fold_toggle_recursive";
|
||||
zC = "fold_close_recursive";
|
||||
zM = "fold_close_all";
|
||||
zN = "fold_enable";
|
||||
zO = "fold_open_recursive";
|
||||
zR = "fold_open_all";
|
||||
zX = "fold_update_all";
|
||||
za = "fold_toggle";
|
||||
zc = "fold_close";
|
||||
zi = "fold_toggle_enable";
|
||||
zm = "fold_more";
|
||||
zn = "fold_disable";
|
||||
zo = "fold_open";
|
||||
zr = "fold_reduce";
|
||||
zx = "fold_update";
|
||||
"{" = "prev";
|
||||
"}" = "next";
|
||||
};
|
||||
# Plugin Default
|
||||
icons = {
|
||||
folder_closed = " ";
|
||||
folder_open = " ";
|
||||
indent = {
|
||||
fold_closed = " ";
|
||||
fold_open = " ";
|
||||
last = "└╴";
|
||||
middle = "├╴";
|
||||
top = "│ ";
|
||||
ws = " ";
|
||||
};
|
||||
kinds = {
|
||||
Array = " ";
|
||||
Boolean = " ";
|
||||
Class = " ";
|
||||
Constant = " ";
|
||||
Constructor = " ";
|
||||
Enum = " ";
|
||||
EnumMember = " ";
|
||||
Event = " ";
|
||||
Field = " ";
|
||||
File = " ";
|
||||
Function = " ";
|
||||
Interface = " ";
|
||||
Key = " ";
|
||||
Method = " ";
|
||||
Module = " ";
|
||||
Namespace = " ";
|
||||
Null = " ";
|
||||
Number = " ";
|
||||
Object = " ";
|
||||
Operator = " ";
|
||||
Package = " ";
|
||||
Property = " ";
|
||||
String = " ";
|
||||
Struct = " ";
|
||||
TypeParameter = " ";
|
||||
Variable = " ";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>x";
|
||||
group = "Trouble";
|
||||
icon = " ";
|
||||
}
|
||||
];
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>xx";
|
||||
action = "<CMD>Trouble diagnostics toggle<CR>";
|
||||
options.desc = "Diagnostics";
|
||||
}
|
||||
{
|
||||
key = "<leader>xt";
|
||||
action = "<CMD>Trouble todo toggle<CR>";
|
||||
options.desc = "Todos";
|
||||
}
|
||||
{
|
||||
key = "<leader>xX";
|
||||
action = "<CMD>Trouble diagnostics toggle filter.buf=0<CR>";
|
||||
options.desc = "Buffer Diagnostics";
|
||||
}
|
||||
{
|
||||
key = "<leader>xL";
|
||||
action = "<CMD>Trouble loclist toggle<CR>";
|
||||
options.desc = "Location List";
|
||||
}
|
||||
{
|
||||
key = "<leader>xQ";
|
||||
action = "<CMD>Trouble qflist toggle<CR>";
|
||||
options.desc = "Quickfix List";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
38
home/programs/nixvim/plugins/typst-preview.nix
Normal file
38
home/programs/nixvim/plugins/typst-preview.nix
Normal file
@@ -0,0 +1,38 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
typst-preview = {
|
||||
enable = true;
|
||||
lazyLoad = {
|
||||
settings = {
|
||||
ft = "typst";
|
||||
cmd = "TypstPreview";
|
||||
};
|
||||
};
|
||||
settings = {
|
||||
open_command = "qutebrowser --target tab %s";
|
||||
};
|
||||
};
|
||||
};
|
||||
files = {
|
||||
"ftplugin/typst.lua" = {
|
||||
keymaps = [
|
||||
{
|
||||
action = "<CMD>TypstPreview<CR>";
|
||||
key = "<C-k>t";
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
"i"
|
||||
];
|
||||
options = {
|
||||
desc = "Typst Preview";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
17
home/programs/nixvim/plugins/typst-vim.nix
Normal file
17
home/programs/nixvim/plugins/typst-vim.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{ ... }:
|
||||
|
||||
# TODO: coneal does not work
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
typst-vim = {
|
||||
enable = true;
|
||||
settings = {
|
||||
conceal = 1;
|
||||
conceal_math = 1;
|
||||
conceal_emoji = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
11
home/programs/nixvim/plugins/undotree.nix
Normal file
11
home/programs/nixvim/plugins/undotree.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
undotree = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
40
home/programs/nixvim/plugins/vimtex.nix
Normal file
40
home/programs/nixvim/plugins/vimtex.nix
Normal file
@@ -0,0 +1,40 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
vimtex = {
|
||||
enable = true;
|
||||
settings = {
|
||||
view_automatic = false;
|
||||
mappings_disable = {
|
||||
"n" = [ "K" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
autoGroups = {
|
||||
"lazyvim_vimtex_conceal" = {
|
||||
clear = true;
|
||||
};
|
||||
};
|
||||
|
||||
autoCmd = [
|
||||
{
|
||||
event = [ "FileType" ];
|
||||
group = "lazyvim_vimtex_conceal";
|
||||
pattern = [
|
||||
"bib"
|
||||
"tex"
|
||||
];
|
||||
callback.__raw = # lua
|
||||
''
|
||||
function ()
|
||||
vim.wo.conceallevel = 2
|
||||
end
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
9
home/programs/nixvim/plugins/which-key.nix
Normal file
9
home/programs/nixvim/plugins/which-key.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
which-key = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
69
home/programs/nixvim/plugins/yanky.nix
Normal file
69
home/programs/nixvim/plugins/yanky.nix
Normal file
@@ -0,0 +1,69 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
yanky = {
|
||||
enable = true;
|
||||
settings = {
|
||||
ring = {
|
||||
storage = "sqlite";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
sqlite-lua = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
key = "p";
|
||||
action = "<Plug>(YankyPutAfter)";
|
||||
mode = [
|
||||
"n"
|
||||
"x"
|
||||
];
|
||||
}
|
||||
{
|
||||
key = "P";
|
||||
action = "<Plug>(YankyPutBefore)";
|
||||
mode = [
|
||||
"n"
|
||||
"x"
|
||||
];
|
||||
}
|
||||
{
|
||||
key = "gp";
|
||||
action = "<Plug>(YankyGPutAfter)";
|
||||
mode = [
|
||||
"n"
|
||||
"x"
|
||||
];
|
||||
}
|
||||
{
|
||||
key = "gP";
|
||||
action = "<Plug>(YankyGPutBefore)";
|
||||
mode = [
|
||||
"n"
|
||||
"x"
|
||||
];
|
||||
}
|
||||
{
|
||||
key = "<c-p>";
|
||||
action = "<Plug>(YankyPreviousEntry)";
|
||||
mode = [
|
||||
"n"
|
||||
];
|
||||
}
|
||||
{
|
||||
key = "<c-n>";
|
||||
action = "<Plug>(YankyNextEntry)";
|
||||
mode = [
|
||||
"n"
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
95
home/programs/nixvim/plugins/zk.nix
Normal file
95
home/programs/nixvim/plugins/zk.nix
Normal file
@@ -0,0 +1,95 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
zk = {
|
||||
enable = true;
|
||||
settings = {
|
||||
picker = "telescope";
|
||||
};
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>z";
|
||||
group = "Zettelkasten";
|
||||
icon = " ";
|
||||
}
|
||||
];
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>zn";
|
||||
action = "<Cmd>ZkNew { title = vim.fn.input('Title: ') }<CR>";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Create";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>zo";
|
||||
action = "<Cmd>ZkNotes { sort = { 'modified' } }<CR>";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Open";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>zt";
|
||||
action = "<Cmd>ZkTags<CR>";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Open Tags";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>zf";
|
||||
action = "<Cmd>ZkNotes { sort = { 'modified' }, match = { vim.fn.input('Search: ') } }<CR>";
|
||||
mode = [ "n" ];
|
||||
options = {
|
||||
desc = "Search";
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>zf";
|
||||
action = ":'<,'>ZkMatch<CR>";
|
||||
mode = [ "v" ];
|
||||
options = {
|
||||
desc = "Search (Matching the Selection)";
|
||||
};
|
||||
}
|
||||
];
|
||||
files = {
|
||||
# TODO: Add descriptions
|
||||
# TODO: Did the sytnax change?
|
||||
"ftplugin/markdown.lua" = {
|
||||
extraConfigLua = # lua
|
||||
''
|
||||
-- Add the key mappings only for Markdown files in a zk notebook.
|
||||
if require("zk.util").notebook_root(vim.fn.expand('%:p')) ~= nil then
|
||||
local function map(...) vim.api.nvim_buf_set_keymap(0, ...) end
|
||||
local opts = { noremap=true, silent=false }
|
||||
|
||||
-- Create a new note after asking for its title.
|
||||
-- This overrides the global `<leader>zn` mapping to create the note in the same directory as the current buffer.
|
||||
map("n", "<leader>zn", "<Cmd>ZkNew { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts)
|
||||
-- Create a new note in the same directory as the current buffer, using the current selection for title.
|
||||
map("v", "<leader>znt", ":'<,'>ZkNewFromTitleSelection { dir = vim.fn.expand('%:p:h') }<CR>", opts)
|
||||
-- Create a new note in the same directory as the current buffer, using the current selection for note content and asking for its title.
|
||||
map("v", "<leader>znc", ":'<,'>ZkNewFromContentSelection { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts)
|
||||
|
||||
-- Open notes linking to the current buffer.
|
||||
map("n", "<leader>zb", "<Cmd>ZkBacklinks<CR>", opts)
|
||||
-- Open notes linked by the current buffer.
|
||||
map("n", "<leader>zl", "<Cmd>ZkLinks<CR>", opts)
|
||||
|
||||
-- Preview a linked note.
|
||||
map("n", "K", "<Cmd>lua vim.lsp.buf.hover()<CR>", opts)
|
||||
-- Open the code actions for a visual selection.
|
||||
map("v", "<leader>za", ":'<,'>lua vim.lsp.buf.range_code_action()<CR>", opts)
|
||||
end
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [ planify ];
|
||||
}
|
||||
@@ -17,8 +17,8 @@ color.active=green
|
||||
color.recurring=blue
|
||||
color.scheduled=white on green
|
||||
color.until=yellow
|
||||
color.blocked=black on white
|
||||
color.blocking=black on bright white
|
||||
color.blocked=green
|
||||
color.blocking=yellow
|
||||
|
||||
# Project
|
||||
color.project.none=red
|
||||
|
||||
@@ -13,6 +13,41 @@
|
||||
enable = true;
|
||||
colorTheme = ./catppuccin.theme;
|
||||
package = pkgs.taskwarrior3;
|
||||
dataLocation = "~/Nextcloud/tasks";
|
||||
config = {
|
||||
uda.parentName = {
|
||||
type = "string";
|
||||
label = "Parent";
|
||||
};
|
||||
report.projall = {
|
||||
description = "All tasks grouped by projet";
|
||||
columns = [
|
||||
"id"
|
||||
"project.indented"
|
||||
"depends"
|
||||
"tags"
|
||||
"due"
|
||||
"description"
|
||||
"urgency"
|
||||
"start.age"
|
||||
];
|
||||
labels = [
|
||||
"ID"
|
||||
"Project"
|
||||
"Deps"
|
||||
"Tag"
|
||||
"Due"
|
||||
"Description"
|
||||
"Urgency"
|
||||
"Age"
|
||||
];
|
||||
sort = [
|
||||
"parentName+\\/"
|
||||
"project+"
|
||||
];
|
||||
filter = "status:pending";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home.file.".local/share/task/hooks/on-modify.timewarrior" = {
|
||||
@@ -20,6 +55,11 @@
|
||||
source = "${pkgs.timewarrior}/share/doc/timew/ext/on-modify.timewarrior";
|
||||
};
|
||||
|
||||
home.file."Nextcloud/tasks/hooks/on-add.sh" = {
|
||||
executable = true;
|
||||
source = ./hooks/on-add.sh;
|
||||
};
|
||||
|
||||
# TODO: This need the python package timew-report, pyfzf and plumbum
|
||||
# home.file.".config/timewarrior/extensions/twfzf.py" = {
|
||||
# source = builtins.fetchurl {
|
||||
|
||||
@@ -26,7 +26,9 @@
|
||||
size = 100000000000;
|
||||
path = "${config.xdg.dataHome}/zsh/zsh_history";
|
||||
};
|
||||
syntaxHighlighting = { enable = true; };
|
||||
syntaxHighlighting = {
|
||||
enable = true;
|
||||
};
|
||||
initContent = ''
|
||||
export LD_LIBRARY_PATH="/nix/store/yjm4j9n85bcp42v5nkz2xifrp4a9s63k-sqlite-3.46.1/lib"o
|
||||
export CHROME_EXECUTABLE="/run/current-system/sw/bin/google-chrome-stable"
|
||||
@@ -36,6 +38,20 @@
|
||||
RPROMPT='[%F{yellow}%?%f]'
|
||||
bindkey "^[[A" history-beginning-search-backward
|
||||
bindkey "^[[B" history-beginning-search-forward
|
||||
|
||||
# trep: tree projall report - top-level projects with headers
|
||||
trep() {
|
||||
project() {
|
||||
echo -e "\e[1;34m/----- Project $1 -----\e[0m"
|
||||
task projall "project:$1"
|
||||
echo ""
|
||||
}
|
||||
while IFS= read -r proj; do
|
||||
project "$proj"
|
||||
done < <(task _projects | grep -v '\.')
|
||||
}
|
||||
|
||||
alias trep='trep'
|
||||
'';
|
||||
plugins = [
|
||||
{
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [ ./ssh-agent ./gpg-agent ./hypridle.nix ./nextcloud.nix ./nextcloud.nix ];
|
||||
imports = [
|
||||
./ssh-agent
|
||||
./gpg-agent
|
||||
./hypridle.nix
|
||||
./nextcloud.nix
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user