26 Commits

Author SHA1 Message Date
74973c1449 chore: initial commit for draft MR 2025-12-18 15:56:51 +01:00
545a5927e5 chore(nvim): add commented formatter.nvim config
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:54:13 +01:00
c6b2743cf6 chore(nvim): reorder plugins, remove claude-code from paq-setup
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:53:59 +01:00
430bec1708 style(lsp): fix formatting and indentation
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:53:56 +01:00
d9e25eec77 chore: remove taskdeps script
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:53:04 +01:00
a588604d91 chore(nvim): comment out image.nvim config
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:53:01 +01:00
d9911dd2ce style(cmp): reformat sources list
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:52:57 +01:00
b397fab3f2 feat(ftplugin): add dotenv filetype support
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:52:54 +01:00
1246f42638 feat(nvim): add skeleton module to init
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:52:50 +01:00
06fb7dd4b8 fix(wiki): disable auto lcd on VimEnter
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:52:47 +01:00
4b2d24e1f4 feat(fzf): add resume to live_grep, use complete_file
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:52:42 +01:00
f57d227203 feat(lint): enable eslint for js/ts, disable systemdlint/yamllint
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:52:31 +01:00
82f904c9dc feat(format): enable lsp_fallback, disable json formatters
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:52:24 +01:00
26b5f00643 fix(lsp): update helm_ls, yamlls, disable emmet
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:51:36 +01:00
31f604f8f6 feat(lsp): add terraformls, rust_analyzer, configure nixd
Add support for Terraform and Rust language servers, and configure nixd
with home-manager options for better Nix completions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:51:17 +01:00
8632e7a1bc feat(lsp): switch from ts_ls to vtsls
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:51:02 +01:00
0a9405ffd6 chore(nvim): disable codecompanion plugin config
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:50:40 +01:00
eceaab3caf chore(nvim): disable mcphub plugin config
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:50:36 +01:00
1dbb9c1e5d chore(nvim): disable nvimkit, normalize paq-setup formatting
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:50:16 +01:00
b3e1e4e939 chore(nvim): disable image.nvim plugin
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:45:36 +01:00
14e1f01784 feat(nvim): add vim-markdown-composer plugin
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:45:12 +01:00
e1e300bee2 feat(nvim): add blink.download plugin
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:44:58 +01:00
1418407e63 feat(nvim): add obsidian plugin
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:44:41 +01:00
1e3a5d291f feat(nvim): add nvim-early-retirement plugin
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:44:18 +01:00
a8100cf3e2 feat(nvim): add kubectl plugin
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 15:40:18 +01:00
6c738b78e7 feat: set up 'claude-code.nvim' plugin 2025-12-18 15:34:49 +01:00
22 changed files with 324 additions and 457 deletions

View File

@@ -1,144 +0,0 @@
#!/usr/bin/python
import argparse
import json
import subprocess
from collections import defaultdict
def get_task_data():
command = (
"task +PENDING or +WAITING -COMPLETED -DELETED export | "
"jq '[.[] | {uuid: .uuid, id, depends: .depends, description: .description, status: .status }]'"
)
output = subprocess.check_output(command, shell=True)
return json.loads(output)
def parse_task_data(data):
dependency_graph = defaultdict(list)
task_details = {}
dependent_tasks = set()
for task in data:
task_id = task["uuid"]
task_details[task_id] = {
"id": task.get("id", "?"),
"description": task.get("description", "No description"),
"status": task.get("status", "Unknown status"),
}
if task["depends"]:
for dependency in task["depends"]:
dependency_graph[dependency].append(task_id)
dependent_tasks.add(task_id)
root_tasks = set(task_details.keys()) - dependent_tasks
return task_details, dependency_graph, root_tasks
def get_all_parents(task_id, dependency_graph):
return [
parent for parent, children in dependency_graph.items() if task_id in children
]
def build_ascii_dag(
task_id,
task_details,
dependency_graph,
prefix="",
is_last=True,
show_id=True,
visited=None,
):
if visited is None:
visited = set()
if task_id in visited:
return [f"{prefix}{'└── ' if is_last else '├── '}... (cycle detected)"]
visited.add(task_id)
task_info = task_details[task_id]
task_line = f"{prefix}{'└── ' if is_last else '├── '}{task_info['id'] + ': ' if show_id else ''}{task_info['description']} ({task_info['status']})"
lines = [task_line]
children = dependency_graph.get(task_id, [])
for idx, child in enumerate(children):
child_is_last = idx == len(children) - 1
child_prefix = prefix + (" " if is_last else "│ ")
lines.extend(
build_ascii_dag(
child,
task_details,
dependency_graph,
child_prefix,
child_is_last,
show_id,
visited.copy(),
)
)
return lines
def render_dependency_dag(task_details, dependency_graph, root_tasks, show_id):
dag_lines = []
global_visited = set()
def dfs(task_id, prefix="", is_last=True, visited=None):
if visited is None:
visited = set()
if task_id in visited:
return
visited.add(task_id)
global_visited.add(task_id)
task_info = task_details[task_id]
task_line = f"{prefix}{'└── ' if is_last else '├── '}{str(task_info['id']) + ': ' if show_id else ''}{task_info['description']} ({task_info['status']})"
dag_lines.append(task_line)
children = dependency_graph.get(task_id, [])
for idx, child in enumerate(children):
child_is_last = idx == len(children) - 1
child_prefix = prefix + (" " if is_last else "│ ")
dfs(child, child_prefix, child_is_last, visited.copy())
root_tasks_with_children = [
root for root in root_tasks if dependency_graph.get(root, [])
]
for root in sorted(
root_tasks_with_children,
key=lambda x: len(dependency_graph.get(x, [])),
reverse=True,
):
if root not in global_visited:
dfs(root)
dag_lines.append("")
return "\n".join(dag_lines).rstrip()
def main(args):
data = get_task_data()
task_details, dependency_graph, root_tasks = parse_task_data(data)
ascii_dag = render_dependency_dag(
task_details, dependency_graph, root_tasks, show_id=args.show_id
)
print(ascii_dag)
if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="Generates a task dependency DAG for Taskwarrior tasks."
)
parser.add_argument(
"--show-id",
action="store_true",
default=False,
help="Include task IDs in the output.",
)
args = parser.parse_args()
main(args)

View File

@@ -1,61 +1 @@
require("claude-code").setup({ require("claude-code").setup()
-- Terminal window settings
window = {
split_ratio = 0.3, -- Percentage of screen for the terminal window (height for horizontal, width for vertical splits)
position = "vertical", -- Position of the window: "botright", "topleft", "vertical", "float", etc.
enter_insert = true, -- Whether to enter insert mode when opening Claude Code
hide_numbers = true, -- Hide line numbers in the terminal window
hide_signcolumn = true, -- Hide the sign column in the terminal window
-- Floating window configuration (only applies when position = "float")
float = {
width = "80%", -- Width: number of columns or percentage string
height = "80%", -- Height: number of rows or percentage string
row = "center", -- Row position: number, "center", or percentage string
col = "center", -- Column position: number, "center", or percentage string
relative = "editor", -- Relative to: "editor" or "cursor"
border = "rounded", -- Border style: "none", "single", "double", "rounded", "solid", "shadow"
},
},
-- File refresh settings
refresh = {
enable = true, -- Enable file change detection
updatetime = 100, -- updatetime when Claude Code is active (milliseconds)
timer_interval = 1000, -- How often to check for file changes (milliseconds)
show_notifications = true, -- Show notification when files are reloaded
},
-- Git project settings
git = {
use_git_root = true, -- Set CWD to git root when opening Claude Code (if in git project)
},
-- Shell-specific settings
shell = {
separator = "&&", -- Command separator used in shell commands
pushd_cmd = "pushd", -- Command to push directory onto stack (e.g., 'pushd' for bash/zsh, 'enter' for nushell)
popd_cmd = "popd", -- Command to pop directory from stack (e.g., 'popd' for bash/zsh, 'exit' for nushell)
},
-- Command settings
command = "claude", -- Command used to launch Claude Code
-- Command variants
command_variants = {
-- Conversation management
continue = "--continue", -- Resume the most recent conversation
resume = "--resume", -- Display an interactive conversation picker
-- Output options
verbose = "--verbose", -- Enable verbose logging with full turn-by-turn output
},
-- Keymaps
keymaps = {
toggle = {
normal = "<C-,>", -- Normal mode keymap for toggling Claude Code, false to disable
terminal = "<C-,>", -- Terminal mode keymap for toggling Claude Code, false to disable
variants = {
continue = "<leader>cC", -- Normal mode keymap for Claude Code with continue flag
verbose = "<leader>cV", -- Normal mode keymap for Claude Code with verbose flag
},
},
window_navigation = true, -- Enable window navigation keymaps (<C-h/j/k/l>)
scrolling = true, -- Enable scrolling keymaps (<C-f/b>) for page up/down
},
})

View File

@@ -1,22 +1,16 @@
require("codecompanion").setup({ -- require("codecompanion").setup({
ignore_warnings = true, -- extensions = {
strategies = { -- mcphub = {
chat = { adapter = "openai" }, -- callback = "mcphub.extensions.codecompanion",
inline = { adapter = "openai" }, -- opts = {
}, -- make_vars = true,
}) -- make_slash_commands = true,
-- show_result_in_chat = true
-- Load mcphub extension after codecompanion is initialized -- }
-- and ensure the config structure exists -- }
local ok, cc_config = pcall(require, "codecompanion.config") -- },
if ok then -- strategies = {
cc_config.interactions = cc_config.interactions or {} -- chat = { adapter = "openai" },
cc_config.interactions.chat = cc_config.interactions.chat or {} -- inline = { adapter = "openai" },
cc_config.interactions.chat.tools = cc_config.interactions.chat.tools or {} -- },
-- })
require("mcphub.extensions.codecompanion").setup({
make_vars = true,
make_slash_commands = true,
show_result_in_chat = true,
})
end

View File

@@ -1,6 +1,6 @@
require("conform").setup({ require("conform").setup({
format_after_save = { format_after_save = {
lsp_fallback = false, lsp_fallback = true,
async = false, async = false,
timeout_ms = 500, timeout_ms = 500,
}, },
@@ -13,15 +13,14 @@ require("conform").setup({
gdscript = { "gdformat" }, gdscript = { "gdformat" },
haskell = { "ormolu" }, haskell = { "ormolu" },
html = { "prettierd", "prettier", stop_after_first = true }, html = { "prettierd", "prettier", stop_after_first = true },
javascript = { "eslint_d", "eslint", "prettierd", "prettier", stop_after_first = true },
javascriptreact = { "eslint_d", "eslint", "prettierd", "prettier", stop_after_first = true },
json = { "prettierd", "prettier", stop_after_first = true },
jsonc = { "prettierd", "prettier", stop_after_first = true },
lua = { "stylua" }, -- configured in stylua.toml lua = { "stylua" }, -- configured in stylua.toml
markdown = { "prettierd", "prettier", stop_after_first = true }, markdown = { "prettierd", "prettier", stop_after_first = true },
nix = { "nixfmt" }, nix = { "nixfmt" },
javascript = { "eslint_d", "eslint", "prettierd", "prettier", stop_after_first = true },
javascriptreact = { "eslint_d", "eslint", "prettierd", "prettier", stop_after_first = true },
-- json = { "prettierd", "prettier", stop_after_first = true },
-- jsonc = { "prettierd", "prettier", stop_after_first = true },
python = { "isort", "black" }, python = { "isort", "black" },
rust = { "rustfmt", lsp_fallback = "fallback" },
svelte = { "eslint_d", "prettierd", "prettier", stop_after_first = true }, svelte = { "eslint_d", "prettierd", "prettier", stop_after_first = true },
typescript = { "eslint_d", "prettierd", "prettier", stop_after_first = true }, typescript = { "eslint_d", "prettierd", "prettier", stop_after_first = true },
typescriptreact = { "eslint_d", "eslint", "prettierd", "prettier", stop_after_first = true }, typescriptreact = { "eslint_d", "eslint", "prettierd", "prettier", stop_after_first = true },

View File

@@ -0,0 +1,78 @@
-- require("formatter").setup({
-- logging = true,
-- filetype = {
-- typescriptreact = {
-- -- prettier
-- function()
-- return {
-- exe = "prettier",
-- args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0) },
-- stdin = true,
-- }
-- end,
-- },
-- typescript = {
-- -- prettier
-- function()
-- return {
-- exe = "prettier",
-- args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0) },
-- stdin = true,
-- }
-- end,
-- -- linter
-- -- function()
-- -- return {
-- -- exe = "eslint",
-- -- args = {
-- -- "--stdin-filename",
-- -- vim.api.nvim_buf_get_name(0),
-- -- "--fix",
-- -- "--cache"
-- -- },
-- -- stdin = false
-- -- }
-- -- end
-- },
-- javascript = {
-- -- prettier
-- function()
-- return {
-- exe = "prettier",
-- args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0) },
-- stdin = true,
-- }
-- end,
-- },
-- javascriptreact = {
-- -- prettier
-- function()
-- return {
-- exe = "prettier",
-- args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0) },
-- stdin = true,
-- }
-- end,
-- },
-- json = {
-- -- prettier
-- function()
-- return {
-- exe = "prettier",
-- args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0) },
-- stdin = true,
-- }
-- end,
-- },
-- lua = {
-- -- luafmt
-- function()
-- return {
-- exe = "luafmt",
-- args = { "--indent-count", 2, "--stdin" },
-- stdin = true,
-- }
-- end,
-- },
-- },
-- })

View File

@@ -5,7 +5,9 @@ fzf.setup({ "max-perf" })
vim.keymap.set("n", "<leader>f<leader>", fzf.builtin) -- Help vim.keymap.set("n", "<leader>f<leader>", fzf.builtin) -- Help
vim.keymap.set("n", "<leader>fc", fzf.commands) vim.keymap.set("n", "<leader>fc", fzf.commands)
vim.keymap.set("n", "<leader>ff", fzf.files) vim.keymap.set("n", "<leader>ff", fzf.files)
vim.keymap.set("n", "<leader>fg", fzf.live_grep_native) vim.keymap.set("n", "<leader>fg", function()
fzf.live_grep_native({ resume = true })
end)
vim.keymap.set("n", "<leader>fb", fzf.buffers) vim.keymap.set("n", "<leader>fb", fzf.buffers)
vim.keymap.set("n", "<leader>fd", fzf.diagnostics_workspace) vim.keymap.set("n", "<leader>fd", fzf.diagnostics_workspace)
vim.keymap.set("n", "<leader>fhe", fzf.help_tags) vim.keymap.set("n", "<leader>fhe", fzf.help_tags)
@@ -13,4 +15,4 @@ vim.keymap.set("n", "<leader>fhi", fzf.search_history)
vim.keymap.set("n", "<leader>fma", fzf.marks) vim.keymap.set("n", "<leader>fma", fzf.marks)
vim.keymap.set("n", "<leader>fma", fzf.man_pages) vim.keymap.set("n", "<leader>fma", fzf.man_pages)
vim.keymap.set("i", "<c-f>", fzf.complete_path) vim.keymap.set("i", "<c-f>", fzf.complete_file)

View File

@@ -1,10 +1,10 @@
require("image").setup({ -- require("image").setup({
backend = "kitty", -- backend = "kitty",
kitty_method = "normal", -- kitty_method = "normal",
processor = "magick_cli", -- processor = "magick_cli",
integrations = { -- integrations = {
markdown = { -- markdown = {
filetypes = { "markdown", "pandoc" }, -- filetypes = { "markdown", "pandoc" },
}, -- },
}, -- },
}) -- })

View File

@@ -0,0 +1 @@
require("kubectl").setup()

View File

@@ -17,11 +17,9 @@ local servers = {
format = false, format = false,
}, },
}, },
emmet_language_server = {}, -- emmet_language_server = {},
gdscript = {}, gdscript = {},
helm_ls = { helm_ls = { filetypes = { "helm", "yaml.helm-values" } },
filetypes = { "yaml", "helm", "yaml.helm-values" },
},
hls = { filetypes = { "haskell", "lhaskell", "cabal" } }, hls = { filetypes = { "haskell", "lhaskell", "cabal" } },
html = {}, html = {},
jsonls = { jsonls = {
@@ -65,8 +63,26 @@ local servers = {
}, },
}, },
-- marksman = {}, -- marksman = {},
nixd = {}, -- TODO: This completion ain't working yet
nixd = {
nixpkgs = {
expr = "import <nixpkgs> { }",
},
formatting = {
command = { "nixfmt" },
},
options = {
home_manager = {
expr = '(builtins.getFlake "/home/hektor/.config/home-manager").homeConfigurations.work.options',
},
},
},
pyright = {}, pyright = {},
rust_analyzer = {
settings = {
["rust-analyzer"] = {},
},
},
-- tsserver = {}, -- tsserver = {},
svelte = { svelte = {
plugin = { plugin = {
@@ -76,48 +92,43 @@ local servers = {
}, },
}, },
tailwindcss = {}, tailwindcss = {},
-- vtsls = {}, terraformls = {},
ts_ls = {}, -- ts_ls = {},
-- vtsls = { vtsls = {
-- maxTsServerMemory = 16384, maxTsServerMemory = 16384,
-- filetypes = { filetypes = {
-- "javascript", "javascript",
-- "javascriptreact", "javascriptreact",
-- "javascript.jsx", "javascript.jsx",
-- "typescript", "typescript",
-- "typescriptreact", "typescriptreact",
-- "typescript.tsx", "typescript.tsx",
-- }, },
-- settings = { settings = {
-- complete_function_calls = true, complete_function_calls = true,
-- vtsls = { vtsls = {
-- enableMoveToFileCodeAction = true, enableMoveToFileCodeAction = true,
-- autoUseWorkspaceTsdk = true, autoUseWorkspaceTsdk = true,
-- experimental = { experimental = { completion = { enableServerSideFuzzyMatch = true } },
-- completion = { },
-- enableServerSideFuzzyMatch = true, typescript = {
-- }, updateImportsOnFileMove = { enabled = "always" },
-- }, suggest = { completeFunctionCalls = true },
-- }, inlayHints = {
-- typescript = { enumMemberValues = { enabled = true },
-- updateImportsOnFileMove = { enabled = "always" }, functionLikeReturnTypes = { enabled = true },
-- suggest = { parameterNames = { enabled = "literals" },
-- completeFunctionCalls = true, parameterTypes = { enabled = true },
-- }, propertyDeclarationTypes = { enabled = true },
-- inlayHints = { variableTypes = { enabled = false },
-- enumMemberValues = { enabled = true }, },
-- functionLikeReturnTypes = { enabled = true }, },
-- parameterNames = { enabled = "literals" }, },
-- parameterTypes = { enabled = true }, },
-- propertyDeclarationTypes = { enabled = true },
-- variableTypes = { enabled = false },
-- },
-- },
-- },
-- },
yamlls = { yamlls = {
settings = { settings = {
yaml = { yaml = {
validate = true,
schemaStore = { schemaStore = {
-- You must disable built-in schemaStore support if you want to use -- You must disable built-in schemaStore support if you want to use
-- this plugin and its advanced options like `ignore`. -- this plugin and its advanced options like `ignore`.

View File

@@ -1 +1 @@
require("mcphub").setup({}) -- require("mcphub").setup({})

View File

@@ -62,12 +62,12 @@ cmp.setup({
["<CR>"] = c_l, ["<CR>"] = c_l,
}), }),
sources = { sources = {
{ name = "copilot", group_index = 2 },
{ name = "zk" }, { name = "zk" },
{ name = "copilot", group_index = 2 },
{ name = "nvim_lsp", keyword_length = 8 }, { name = "nvim_lsp", keyword_length = 8 },
{ name = "luasnip", max_item_count = 16 }, { name = "luasnip", max_item_count = 16 },
{ name = "path" }, { name = "path" },
{ name = "buffer", max_item_count = 8 }, { name = "buffer", max_item_count = 8 },
}, },
window = { window = {
completion = cmp.config.window.bordered({ border = { "", "", "", "", "", "", "", "" } }), completion = cmp.config.window.bordered({ border = { "", "", "", "", "", "", "", "" } }),

View File

@@ -12,8 +12,8 @@ require("lint").linters_by_ft = {
editorconfig = { "editorconfig-checker" }, editorconfig = { "editorconfig-checker" },
haskell = { "hlint" }, haskell = { "hlint" },
-- html = { "htmlhint" }, -- html = { "htmlhint" },
-- javascript = { eslint_linter }, javascript = { eslint_linter },
-- javascriptreact = { eslint_linter }, javascriptreact = { eslint_linter },
gdscript = { "gdlint" }, gdscript = { "gdlint" },
latex = { "chktex" }, latex = { "chktex" },
-- lua = { "luacheck", "selene" }, -- lua = { "luacheck", "selene" },
@@ -22,10 +22,9 @@ require("lint").linters_by_ft = {
-- python = { "pylint" }, -- python = { "pylint" },
sh = { "shellcheck" }, sh = { "shellcheck" },
svelte = { eslint_linter }, svelte = { eslint_linter },
systemd = { "systemdlint" }, typescript = { eslint_linter },
-- typescript = { eslint_linter }, typescriptreact = { eslint_linter },
-- typescriptreact = { eslint_linter }, -- yaml = { "yamllint" },
yaml = { "yamllint" },
} }
-- TODO: Wouldn't it be possible / nice to only try to load the linters when they are -- TODO: Wouldn't it be possible / nice to only try to load the linters when they are

View File

@@ -0,0 +1,9 @@
require("obsidian").setup({
legacy_commands = false,
workspaces = {
{
name = "test",
path = "~/zk/work",
},
},
})

View File

@@ -1,6 +1,6 @@
vim.cmd([[ vim.cmd([[
" Change local buffer to directory of current file after the plugin has loaded " " Change local buffer to directory of current file after the plugin has loaded
autocmd VimEnter * lcd %:p:h " autocmd VimEnter * lcd %:p:h
" " Override wiki index mapping to also cd into the wiki " " Override wiki index mapping to also cd into the wiki
nm <leader>ww <plug>(wiki-index) nm <leader>ww <plug>(wiki-index)

View File

@@ -1,45 +1,5 @@
{ {
"nodes": { "nodes": {
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"mcp-hub",
"nixpkgs"
]
},
"locked": {
"lastModified": 1743550720,
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"mcp-hub": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1755841689,
"narHash": "sha256-KakvXZf0vjdqzyT+LsAKHEr4GLICGXPmxl1hZ3tI7Yg=",
"owner": "ravitemer",
"repo": "mcp-hub",
"rev": "9c7670a4c341ed3cf738a6242c0fde1cea40bccf",
"type": "github"
},
"original": {
"owner": "ravitemer",
"repo": "mcp-hub",
"type": "github"
}
},
"nixCats": { "nixCats": {
"locked": { "locked": {
"lastModified": 1765766809, "lastModified": 1765766809,
@@ -57,27 +17,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1743689281, "lastModified": 1765934234,
"narHash": "sha256-y7Hg5lwWhEOgflEHRfzSH96BOt26LaYfrYWzZ+VoVdg=", "narHash": "sha256-pJjWUzNnjbIAMIc5gRFUuKCDQ9S1cuh3b2hKgA7Mc4A=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2bfc080955153be0be56724be6fa5477b4eefabb",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1766532406,
"narHash": "sha256-acLU/ag9VEoKkzOD202QASX25nG1eArXg5A0mHjKgxM=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "8142186f001295e5a3239f485c8a49bf2de2695a", "rev": "af84f9d270d404c17699522fab95bbf928a2d92f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -202,11 +146,11 @@
"plugins-tailwind-fold-nvim": { "plugins-tailwind-fold-nvim": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1766077142, "lastModified": 1752559116,
"narHash": "sha256-SwcDLlygXUSV/dytPXA5Y45OpUhjnExc8SZg5a8MZ2k=", "narHash": "sha256-8uefZIVsn9USEd6FyiO3m3TRKAS/vigU4t9Tk5ijd3c=",
"owner": "razak17", "owner": "razak17",
"repo": "tailwind-fold.nvim", "repo": "tailwind-fold.nvim",
"rev": "e2ba5ee1ca9b74208709fe9d7314b8aa753b26a7", "rev": "d9e7ca11691d252b35795726dff087bf013b2ebf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -217,9 +161,8 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"mcp-hub": "mcp-hub",
"nixCats": "nixCats", "nixCats": "nixCats",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs",
"plugins-beancount-nvim": "plugins-beancount-nvim", "plugins-beancount-nvim": "plugins-beancount-nvim",
"plugins-crazy-node-movement": "plugins-crazy-node-movement", "plugins-crazy-node-movement": "plugins-crazy-node-movement",
"plugins-helm-ls-nvim": "plugins-helm-ls-nvim", "plugins-helm-ls-nvim": "plugins-helm-ls-nvim",

View File

@@ -2,7 +2,6 @@
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nixCats.url = "github:BirdeeHub/nixCats-nvim"; nixCats.url = "github:BirdeeHub/nixCats-nvim";
mcp-hub.url = "github:ravitemer/mcp-hub";
plugins-shipwright-nvim = { plugins-shipwright-nvim = {
url = "github:rktjmp/shipwright.nvim"; url = "github:rktjmp/shipwright.nvim";
@@ -52,11 +51,8 @@
forEachSystem = utils.eachSystem nixpkgs.lib.platforms.all; forEachSystem = utils.eachSystem nixpkgs.lib.platforms.all;
extra_pkg_config = { }; extra_pkg_config = { };
mkDependencyOverlays = system: [ dependencyOverlays = [
(utils.standardPluginOverlay inputs) (utils.standardPluginOverlay inputs)
(final: prev: {
mcp-hub = inputs.mcp-hub.packages.${system}.default;
})
]; ];
categoryDefinitions = categoryDefinitions =
@@ -70,16 +66,12 @@
black black
clang clang
clang-tools clang-tools
delta
fd
gawk gawk
gdtoolkit_4 gdtoolkit_4
isort isort
mcp-hub
nixd nixd
nixfmt nixfmt
nodePackages.prettier nodePackages.prettier
nodePackages.typescript-language-server
ormolu ormolu
prettierd prettierd
rustfmt rustfmt
@@ -197,7 +189,6 @@
forEachSystem ( forEachSystem (
system: system:
let let
dependencyOverlays = mkDependencyOverlays system;
nixCatsBuilder = utils.baseBuilder luaPath { nixCatsBuilder = utils.baseBuilder luaPath {
inherit inherit
nixpkgs nixpkgs
@@ -229,32 +220,31 @@
moduleNamespace = [ defaultPackageName ]; moduleNamespace = [ defaultPackageName ];
inherit inherit
defaultPackageName defaultPackageName
dependencyOverlays
luaPath luaPath
categoryDefinitions categoryDefinitions
packageDefinitions packageDefinitions
extra_pkg_config extra_pkg_config
nixpkgs nixpkgs
; ;
dependencyOverlays = mkDependencyOverlays;
}; };
homeModule = utils.mkHomeModules { homeModule = utils.mkHomeModules {
moduleNamespace = [ defaultPackageName ]; moduleNamespace = [ defaultPackageName ];
inherit inherit
defaultPackageName defaultPackageName
dependencyOverlays
luaPath luaPath
categoryDefinitions categoryDefinitions
packageDefinitions packageDefinitions
extra_pkg_config extra_pkg_config
nixpkgs nixpkgs
; ;
dependencyOverlays = mkDependencyOverlays;
}; };
in in
{ {
overlays = utils.makeOverlays luaPath { overlays = utils.makeOverlays luaPath {
inherit nixpkgs extra_pkg_config; inherit nixpkgs dependencyOverlays extra_pkg_config;
dependencyOverlays = mkDependencyOverlays;
} categoryDefinitions packageDefinitions defaultPackageName; } categoryDefinitions packageDefinitions defaultPackageName;
nixosModules.default = nixosModule; nixosModules.default = nixosModule;

View File

@@ -0,0 +1 @@
vim.opt_local.filetype = "sh"

View File

@@ -20,6 +20,7 @@ require("statusline")
require("diagnostic") require("diagnostic")
require("utils") require("utils")
require("zk") require("zk")
require("skeleton")
require("reload") require("reload")
require("paq-setup") -- when not on nixCats require("paq-setup") -- when not on nixCats

View File

@@ -34,14 +34,17 @@ require("nixCatsUtils.catPacker").setup({
{ "razak17/tailwind-fold.nvim" }, { "razak17/tailwind-fold.nvim" },
{ "rmagatti/auto-session" }, { "rmagatti/auto-session" },
{ "kndndrj/nvim-dbee" }, { "kndndrj/nvim-dbee" },
{ "3rd/image.nvim", build = false }, -- { "3rd/image.nvim", build = false },
{ "polarmutex/beancount.nvim" }, { "polarmutex/beancount.nvim" },
{ "jamesblckwell/nvimkit.nvim" }, -- { "jamesblckwell/nvimkit.nvim" },
{ 'olimorris/codecompanion.nvim' }, { "olimorris/codecompanion.nvim" },
{ "ravitemer/mcphub.nvim", build = "pnpm install -g mcp-hub@latest" }, { "ravitemer/mcphub.nvim", build = "pnpm install -g mcp-hub@latest" },
{ "zbirenbaum/copilot.lua" }, { "zbirenbaum/copilot.lua" },
{ "zbirenbaum/copilot-cmp" }, { "zbirenbaum/copilot-cmp" },
{ "qvalentin/helm-ls.nvim", ft = "helm" }, { "qvalentin/helm-ls.nvim", ft = "helm" },
{ "saghen/blink.download" },
{ "ramilito/kubectl.nvim" },
{ "mikesmithgh/kitty-scrollback.nvim" }, { "mikesmithgh/kitty-scrollback.nvim" },
{ "greggh/claude-code.nvim" }, { "chrisgrieser/nvim-early-retirement" },
{ "euclio/vim-markdown-composer" },
}) })

88
flake.lock generated
View File

@@ -29,11 +29,11 @@
}, },
"locked": { "locked": {
"dir": "pkgs/firefox-addons", "dir": "pkgs/firefox-addons",
"lastModified": 1766046711, "lastModified": 1765771449,
"narHash": "sha256-PijxRQcvSgQae3qBdY4+IGMsMFL67N3D7sBJdZxDii4=", "narHash": "sha256-ZoHRPmTzwC1ndX3NQB/b/WKtU1WduAJdLI4j8eW/QFM=",
"owner": "rycee", "owner": "rycee",
"repo": "nur-expressions", "repo": "nur-expressions",
"rev": "7163ab9a8e64cd29c45e8f93fbc038b12056e6fc", "rev": "5bcf9a2aeb4d361c2ff918a146b3fcc1e136b9ca",
"type": "gitlab" "type": "gitlab"
}, },
"original": { "original": {
@@ -43,28 +43,6 @@
"type": "gitlab" "type": "gitlab"
} }
}, },
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nvim",
"mcp-hub",
"nixpkgs"
]
},
"locked": {
"lastModified": 1743550720,
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
@@ -90,11 +68,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1765980955, "lastModified": 1765682243,
"narHash": "sha256-rB45jv4uwC90vM9UZ70plfvY/2Kdygs+zlQ07dGQFk4=", "narHash": "sha256-yeCxFV/905Wr91yKt5zrVvK6O2CVXWRMSrxqlAZnLp0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "89c9508bbe9b40d36b3dc206c2483ef176f15173", "rev": "58bf3ecb2d0bba7bdf363fc8a6c4d49b4d509d03",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -103,25 +81,6 @@
"type": "github" "type": "github"
} }
}, },
"mcp-hub": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1755841689,
"narHash": "sha256-KakvXZf0vjdqzyT+LsAKHEr4GLICGXPmxl1hZ3tI7Yg=",
"owner": "ravitemer",
"repo": "mcp-hub",
"rev": "9c7670a4c341ed3cf738a6242c0fde1cea40bccf",
"type": "github"
},
"original": {
"owner": "ravitemer",
"repo": "mcp-hub",
"type": "github"
}
},
"nix-secrets": { "nix-secrets": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -194,11 +153,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1765779637, "lastModified": 1765472234,
"narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=", "narHash": "sha256-9VvC20PJPsleGMewwcWYKGzDIyjckEz8uWmT0vCDYK0=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1306659b587dc277866c7b69eb97e5f07864d8c4", "rev": "2fbfb1d73d239d2402a8fe03963e37aab15abe8b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -208,25 +167,8 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": {
"locked": {
"lastModified": 1743689281,
"narHash": "sha256-y7Hg5lwWhEOgflEHRfzSH96BOt26LaYfrYWzZ+VoVdg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2bfc080955153be0be56724be6fa5477b4eefabb",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nvim": { "nvim": {
"inputs": { "inputs": {
"mcp-hub": "mcp-hub",
"nixCats": "nixCats", "nixCats": "nixCats",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
@@ -365,11 +307,11 @@
"plugins-tailwind-fold-nvim": { "plugins-tailwind-fold-nvim": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1766077142, "lastModified": 1752559116,
"narHash": "sha256-SwcDLlygXUSV/dytPXA5Y45OpUhjnExc8SZg5a8MZ2k=", "narHash": "sha256-8uefZIVsn9USEd6FyiO3m3TRKAS/vigU4t9Tk5ijd3c=",
"owner": "razak17", "owner": "razak17",
"repo": "tailwind-fold.nvim", "repo": "tailwind-fold.nvim",
"rev": "e2ba5ee1ca9b74208709fe9d7314b8aa753b26a7", "rev": "d9e7ca11691d252b35795726dff087bf013b2ebf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -398,11 +340,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1765836173, "lastModified": 1765684837,
"narHash": "sha256-hWRYfdH2ONI7HXbqZqW8Q1y9IRbnXWvtvt/ONZovSNY=", "narHash": "sha256-fJCnsYcpQxxy/wit9EBOK33c0Z9U4D3Tvo3gf2mvHos=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "443a7f2e7e118c4fc63b7fae05ab3080dd0e5c63", "rev": "94d8af61d8a603d33d1ed3500a33fcf35ae7d3bc",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -0,0 +1,98 @@
{
inputs,
config,
pkgs,
...
}:
with pkgs;
[
age
aider-chat
argocd
azure-cli
bat
biome
(config.lib.nixGL.wrap bruno)
chromium
clang
claude-code
(config.lib.nixGL.wrap code-cursor)
curl
dconf2nix
dive
emmet-language-server
eslint_d
flameshot
fluxcd
fzf
fzf-git-sh
git-machete
github-copilot-cli
glab
go
hadolint
hello
helm-ls
htop
input-leap
jira-cli-go
jq
k3d
(config.lib.nixGL.wrap kitty)
kubectl
kubernetes
kubernetes-helm
kustomize
lua
lua-language-server
minikube
ncspot
nil
nixd
nixfmt-rfc-style
# nodejs
nodejs_24
nvimpager
(config.lib.nixGL.wrap obsidian)
pavucontrol
# pgadmin4
prettierd
responder
ripgrep
rust-analyzer
rustlings
shellcheck
(config.lib.nixGL.wrap signal-desktop)
silver-searcher
sleuthkit
spotify
starship
stylua
taskopen
taskwarrior3
(config.lib.nixGL.wrap teams-for-linux)
opentofu
sops
tldr
tmux
tree
tree-sitter
tsx
upbound
vault-bin
(config.lib.nixGL.wrap vscode)
vscode-langservers-extracted
vtsls
yaml-language-server
xclip
xmage
yamllint
yarn
(python311.withPackages (ppkgs: [
ppkgs.plyer
ppkgs.dbus-python
]))
# flakes
inputs.nvim.packages.x86_64-linux.nvim
]