mirror of
https://codeberg.org/muon/home.git
synced 2026-03-09 03:53:11 +00:00
Refactor terminal development
This commit is contained in:
parent
76d16b1348
commit
85c51ff9d0
7 changed files with 484 additions and 2133 deletions
144
modules/home/terminal/nvim/default.nix
Normal file
144
modules/home/terminal/nvim/default.nix
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
options.mods.nvim.enable =
|
||||
lib.mkEnableOption "enables nvim";
|
||||
|
||||
imports = [
|
||||
inputs.nvf.homeManagerModules.default
|
||||
./obsidian.nix
|
||||
];
|
||||
|
||||
config = lib.mkIf config.mods.nvim.enable {
|
||||
programs.nvf = {
|
||||
enable = true;
|
||||
settings = {
|
||||
vim = {
|
||||
viAlias = false;
|
||||
vimAlias = true;
|
||||
lsp = {
|
||||
enable = true;
|
||||
formatOnSave = true;
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>w";
|
||||
mode = ["n"];
|
||||
action = ":w<CR>";
|
||||
silent = true;
|
||||
desc = "Save file";
|
||||
}
|
||||
{
|
||||
key = "<leader>q";
|
||||
mode = ["n"];
|
||||
action = ":q<CR>";
|
||||
silent = false;
|
||||
desc = "Quit";
|
||||
}
|
||||
{
|
||||
key = "gd";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua vim.lsp.buf.definition()<CR>";
|
||||
desc = "Go to Definition";
|
||||
}
|
||||
];
|
||||
|
||||
languages = {
|
||||
enableFormat = true;
|
||||
enableTreesitter = true;
|
||||
enableExtraDiagnostics = true;
|
||||
|
||||
nix.enable = true;
|
||||
nix.lsp.servers = ["nixd"];
|
||||
|
||||
markdown.enable = true;
|
||||
bash.enable = true;
|
||||
rust.enable = true;
|
||||
rust.extensions.crates-nvim.enable = true;
|
||||
|
||||
python = {
|
||||
enable = true;
|
||||
lsp.servers = ["pyright"];
|
||||
format.type = ["ruff" "black"];
|
||||
};
|
||||
|
||||
clang = {
|
||||
enable = true;
|
||||
cHeader = true;
|
||||
};
|
||||
};
|
||||
|
||||
statusline.lualine.enable = true;
|
||||
telescope.enable = true;
|
||||
autocomplete.nvim-cmp.enable = true;
|
||||
autopairs.nvim-autopairs.enable = true;
|
||||
tabline.nvimBufferline.enable = true;
|
||||
treesitter.context.enable = true;
|
||||
dashboard.alpha.enable = true;
|
||||
comments.comment-nvim.enable = true;
|
||||
notes.todo-comments.enable = true;
|
||||
|
||||
clipboard = {
|
||||
enable = true;
|
||||
providers.xclip.enable = true;
|
||||
};
|
||||
|
||||
options = {
|
||||
tabstop = 2;
|
||||
shiftwidth = 0;
|
||||
conceallevel = 2;
|
||||
};
|
||||
|
||||
spellcheck = {enable = true;};
|
||||
|
||||
binds = {
|
||||
whichKey.enable = true;
|
||||
cheatsheet.enable = true;
|
||||
};
|
||||
|
||||
git = {
|
||||
enable = true;
|
||||
gitsigns.enable = true;
|
||||
gitsigns.codeActions.enable =
|
||||
false; # throws an annoying debug message
|
||||
};
|
||||
|
||||
utility = {
|
||||
diffview-nvim.enable = true;
|
||||
surround.enable = true;
|
||||
undotree.enable = true;
|
||||
|
||||
motion = {
|
||||
hop.enable = true;
|
||||
leap.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
visuals = {
|
||||
nvim-web-devicons.enable = true;
|
||||
nvim-cursorline.enable = true;
|
||||
cinnamon-nvim.enable = true;
|
||||
fidget-nvim.enable = true;
|
||||
|
||||
highlight-undo.enable = true;
|
||||
indent-blankline.enable = true;
|
||||
};
|
||||
|
||||
ui = {
|
||||
borders.enable = true;
|
||||
noice.enable = true;
|
||||
colorizer.enable = true;
|
||||
illuminate.enable = true;
|
||||
smartcolumn.enable = true;
|
||||
fastaction.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
123
modules/home/terminal/nvim/obsidian.nix
Normal file
123
modules/home/terminal/nvim/obsidian.nix
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options.mods.obsidian.enable =
|
||||
lib.mkEnableOption "enables obsidian";
|
||||
|
||||
config = lib.mkIf config.obsidian.enable {
|
||||
programs.nvf.settings.vim.notes.obsidian = {
|
||||
enable = true;
|
||||
setupOpts = {
|
||||
workspaces = [
|
||||
{
|
||||
name = "agentic";
|
||||
path = "~/work/vaults/agentic";
|
||||
}
|
||||
];
|
||||
completion.nvim_cmp = true;
|
||||
|
||||
note_id_func =
|
||||
lib.generators.mkLuaInline
|
||||
# lua
|
||||
''
|
||||
function(title)
|
||||
local suffix = ""
|
||||
if title ~= nil then
|
||||
-- If title is given, transform it into valid file name.
|
||||
suffix = title:gsub(" ", "-"):gsub("[^A-Za-z0-9-]", ""):lower()
|
||||
else
|
||||
-- If title is nil, just add 4 random uppercase letters to the suffix.
|
||||
for _ = 1, 4 do
|
||||
suffix = suffix .. string.char(math.random(65, 90))
|
||||
end
|
||||
end
|
||||
return tostring(os.date("%Y%m%d%H%M%S")) .. "-" .. suffix
|
||||
end
|
||||
'';
|
||||
|
||||
ui = {
|
||||
enable = true;
|
||||
update_debounce = 200;
|
||||
max_file_length = 5000;
|
||||
checkboxes = {
|
||||
" " = {
|
||||
char = "";
|
||||
hl_group = "ObsidianTodo";
|
||||
};
|
||||
"x" = {
|
||||
char = "";
|
||||
hl_group = "ObsidianDone";
|
||||
};
|
||||
">" = {
|
||||
char = "";
|
||||
hl_group = "ObsidianRightArrow";
|
||||
};
|
||||
"~" = {
|
||||
char = "";
|
||||
hl_group = "ObsidianTilde";
|
||||
};
|
||||
"!" = {
|
||||
char = "";
|
||||
hl_group = "ObsidianImportant";
|
||||
};
|
||||
};
|
||||
bullets = {
|
||||
char = "•";
|
||||
hl_group = "ObsidianBullet";
|
||||
};
|
||||
external_link_icon = {
|
||||
char = "";
|
||||
hl_group = "ObsidianExtLinkIcon";
|
||||
};
|
||||
reference_text = {hl_group = "ObsidianRefText";};
|
||||
highlight_text = {hl_group = "ObsidianHighlightText";};
|
||||
tags = {hl_group = "ObsidianTag";};
|
||||
block_ids = {hl_group = "ObsidianBlockID";};
|
||||
hl_groups = {
|
||||
ObsidianTodo = {
|
||||
bold = true;
|
||||
fg = "#f78c6c";
|
||||
};
|
||||
ObsidianDone = {
|
||||
bold = true;
|
||||
fg = "#89ddff";
|
||||
};
|
||||
ObsidianRightArrow = {
|
||||
bold = true;
|
||||
fg = "#f78c6c";
|
||||
};
|
||||
ObsidianTilde = {
|
||||
bold = true;
|
||||
fg = "#ff5370";
|
||||
};
|
||||
ObsidianImportant = {
|
||||
bold = true;
|
||||
fg = "#d73128";
|
||||
};
|
||||
ObsidianBullet = {
|
||||
bold = true;
|
||||
fg = "#89ddff";
|
||||
};
|
||||
ObsidianRefText = {
|
||||
underline = true;
|
||||
fg = "#c792ea";
|
||||
};
|
||||
ObsidianExtLinkIcon = {fg = "#c792ea";};
|
||||
ObsidianTag = {
|
||||
italic = true;
|
||||
fg = "#89ddff";
|
||||
};
|
||||
ObsidianBlockID = {
|
||||
italic = true;
|
||||
fg = "#89ddff";
|
||||
};
|
||||
ObsidianHighlightText = {bg = "#75662e";};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
todo-comments.enable = true;
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue