mirror of
https://github.com/dwinkler1/nvimConfig.git
synced 2026-05-22 12:03:31 -04:00
load packages only if installed
This commit is contained in:
parent
74600519a5
commit
d23c7f6f51
4 changed files with 92 additions and 82 deletions
51
flake.nix
51
flake.nix
|
|
@ -39,10 +39,8 @@
|
||||||
wrappers,
|
wrappers,
|
||||||
...
|
...
|
||||||
} @ inputs: let
|
} @ inputs: let
|
||||||
mkWrapperConfig = pkgs: let
|
mkWrapperConfig = pkgs: {
|
||||||
def = pkgs.lib.mkDefault;
|
cats = {
|
||||||
in {
|
|
||||||
cats = pkgs.lib.mapAttrs (_: v: def v) {
|
|
||||||
clickhouse = false;
|
clickhouse = false;
|
||||||
gitPlugins = true;
|
gitPlugins = true;
|
||||||
julia = false;
|
julia = false;
|
||||||
|
|
@ -55,22 +53,12 @@
|
||||||
};
|
};
|
||||||
settings = {
|
settings = {
|
||||||
lang_packages = {
|
lang_packages = {
|
||||||
python = def (with pkgs.python3Packages; [
|
python = [];
|
||||||
duckdb
|
r = [];
|
||||||
polars
|
julia = [];
|
||||||
]);
|
|
||||||
r = def ((with pkgs.rpkgs.rPackages; [
|
|
||||||
arrow
|
|
||||||
broom
|
|
||||||
data_table
|
|
||||||
janitor
|
|
||||||
languageserver
|
|
||||||
styler
|
|
||||||
]) ++ [ pkgs.nvimcom ]);
|
|
||||||
julia = def ["DataFramesMeta" "QuackIO"];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
binName = def "vv";
|
binName = "vv";
|
||||||
};
|
};
|
||||||
|
|
||||||
wrapperSettings = pkgs: let
|
wrapperSettings = pkgs: let
|
||||||
|
|
@ -78,7 +66,7 @@
|
||||||
in
|
in
|
||||||
wrapper.config.wrap {
|
wrapper.config.wrap {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit (cfg) cats settings binName;
|
inherit (cfg) settings binName;
|
||||||
};
|
};
|
||||||
|
|
||||||
systems = [
|
systems = [
|
||||||
|
|
@ -135,14 +123,29 @@
|
||||||
devShells = forAllSystems (
|
devShells = forAllSystems (
|
||||||
system: let
|
system: let
|
||||||
pkgs = mkPkgs system;
|
pkgs = mkPkgs system;
|
||||||
cfg = mkWrapperConfig pkgs;
|
|
||||||
nvimPkg = wrapperSettings pkgs;
|
nvimPkg = wrapperSettings pkgs;
|
||||||
|
|
||||||
|
pythonPkgs = with pkgs.python3Packages; [
|
||||||
|
duckdb
|
||||||
|
polars
|
||||||
|
];
|
||||||
|
|
||||||
|
rPkgs = (with pkgs.rpkgs.rPackages; [
|
||||||
|
arrow
|
||||||
|
broom
|
||||||
|
data_table
|
||||||
|
janitor
|
||||||
|
languageserver
|
||||||
|
styler
|
||||||
|
]) ++ [ pkgs.nvimcom ];
|
||||||
|
|
||||||
|
juliaPkgs = ["DataFramesMeta" "QuackIO"];
|
||||||
|
|
||||||
pythonPackages = let
|
pythonPackages = let
|
||||||
python_packages_fn =
|
python_packages_fn =
|
||||||
if pkgs ? basePythonPackages
|
if pkgs ? basePythonPackages
|
||||||
then ps: pkgs.basePythonPackages ps ++ cfg.settings.lang_packages.python
|
then ps: pkgs.basePythonPackages ps ++ pythonPkgs
|
||||||
else _: cfg.settings.lang_packages.python;
|
else _: pythonPkgs;
|
||||||
in
|
in
|
||||||
with pkgs; [
|
with pkgs; [
|
||||||
(python3.withPackages python_packages_fn)
|
(python3.withPackages python_packages_fn)
|
||||||
|
|
@ -153,7 +156,7 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
rPackages = let
|
rPackages = let
|
||||||
r_packages = (pkgs.baseRPackages or []) ++ cfg.settings.lang_packages.r;
|
r_packages = (pkgs.baseRPackages or []) ++ rPkgs;
|
||||||
in
|
in
|
||||||
with pkgs; [
|
with pkgs; [
|
||||||
(rWrapper.override {packages = r_packages;})
|
(rWrapper.override {packages = r_packages;})
|
||||||
|
|
@ -167,7 +170,7 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
juliaPackages = let
|
juliaPackages = let
|
||||||
julia_with_packages = pkgs.julia-bin.withPackages cfg.settings.lang_packages.julia;
|
julia_with_packages = pkgs.julia-bin.withPackages juliaPkgs;
|
||||||
in [julia_with_packages];
|
in [julia_with_packages];
|
||||||
|
|
||||||
markdownPackages = with pkgs; [
|
markdownPackages = with pkgs; [
|
||||||
|
|
|
||||||
|
|
@ -1,32 +1,35 @@
|
||||||
-- Add the key mappings only for Markdown files in a zk notebook.
|
-- 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 nix = require("config.nix")
|
||||||
local map = vim.keymap.set
|
if nix.get_cat("markdown", false) then
|
||||||
-- Open the link under the caret.
|
if require("zk.util").notebook_root(vim.fn.expand('%:p')) ~= nil then
|
||||||
map("n", "<CR>", "<Cmd>lua vim.lsp.buf.definition()<CR>", { noremap = true, silent = false, buffer = true })
|
local map = vim.keymap.set
|
||||||
|
-- Open the link under the caret.
|
||||||
|
map("n", "<CR>", "<Cmd>lua vim.lsp.buf.definition()<CR>", { noremap = true, silent = false, buffer = true })
|
||||||
|
|
||||||
-- Create a new note after asking for its title.
|
-- 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.
|
-- This overrides the global `<leader>zn` mapping to create the note in the same directory as the current buffer.
|
||||||
map("n", "<leader>zhn", "<Cmd>ZkNew { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>",
|
map("n", "<leader>zhn", "<Cmd>ZkNew { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>",
|
||||||
{ noremap = true, silent = false, buffer = true, desc = "Note (here)" })
|
{ noremap = true, silent = false, buffer = true, desc = "Note (here)" })
|
||||||
-- Create a new note in the same directory as the current buffer, using the current selection for title.
|
-- Create a new note in the same directory as the current buffer, using the current selection for title.
|
||||||
map("v", "<leader>zhnt", ":'<,'>ZkNewFromTitleSelection { dir = vim.fn.expand('%:p:h') }<CR>",
|
map("v", "<leader>zhnt", ":'<,'>ZkNewFromTitleSelection { dir = vim.fn.expand('%:p:h') }<CR>",
|
||||||
{ noremap = true, silent = false, buffer = true, desc = "Note from selection (title)" })
|
{ noremap = true, silent = false, buffer = true, desc = "Note from selection (title)" })
|
||||||
-- Create a new note in the same directory as the current buffer, using the current selection for note content and asking for its title.
|
-- 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>zhnc",
|
map("v", "<leader>zhnc",
|
||||||
":'<,'>ZkNewFromContentSelection { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>",
|
":'<,'>ZkNewFromContentSelection { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>",
|
||||||
{ noremap = true, silent = false, buffer = true, desc = "Note from selection (content)" })
|
{ noremap = true, silent = false, buffer = true, desc = "Note from selection (content)" })
|
||||||
|
|
||||||
-- Open notes linking to the current buffer.
|
-- Open notes linking to the current buffer.
|
||||||
map("n", "<leader>zb", "<Cmd>ZkBacklinks<CR>", { noremap = true, silent = false, buffer = true, desc = "Backlinks" })
|
map("n", "<leader>zb", "<Cmd>ZkBacklinks<CR>", { noremap = true, silent = false, buffer = true, desc = "Backlinks" })
|
||||||
-- Alternative for backlinks using pure LSP and showing the source context.
|
-- Alternative for backlinks using pure LSP and showing the source context.
|
||||||
--map('n', '<leader>zb', '<Cmd>lua vim.lsp.buf.references()<CR>', opts)
|
--map('n', '<leader>zb', '<Cmd>lua vim.lsp.buf.references()<CR>', opts)
|
||||||
-- Open notes linked by the current buffer.
|
-- Open notes linked by the current buffer.
|
||||||
map("n", "<leader>zL", "<Cmd>ZkLinks<CR>", { noremap = true, silent = false, buffer = true, desc = "Links" })
|
map("n", "<leader>zL", "<Cmd>ZkLinks<CR>", { noremap = true, silent = false, buffer = true, desc = "Links" })
|
||||||
map("n", "<leader>zi", "<Cmd>ZkInsertLink<CR>", { noremap = true, silent = false, buffer = true, desc = "Insert link" })
|
map("n", "<leader>zi", "<Cmd>ZkInsertLink<CR>", { noremap = true, silent = false, buffer = true, desc = "Insert link" })
|
||||||
|
|
||||||
-- Preview a linked note.
|
-- Preview a linked note.
|
||||||
-- Open the code actions for a visual selection.
|
-- Open the code actions for a visual selection.
|
||||||
map("v", "<leader>za", ":'<,'>lua vim.lsp.buf.range_code_action()<CR>",
|
map("v", "<leader>za", ":'<,'>lua vim.lsp.buf.range_code_action()<CR>",
|
||||||
{ noremap = true, silent = false, buffer = true, desc = "Code actions" })
|
{ noremap = true, silent = false, buffer = true, desc = "Code actions" })
|
||||||
|
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -390,23 +390,25 @@ end)
|
||||||
|
|
||||||
-- zk
|
-- zk
|
||||||
now_if_args(function()
|
now_if_args(function()
|
||||||
require("zk").setup({
|
if nix.get_cat("markdown", false) then
|
||||||
picker = "minipick",
|
require("zk").setup({
|
||||||
lsp = {
|
picker = "minipick",
|
||||||
-- `config` is passed to `vim.lsp.start_client(config)`
|
lsp = {
|
||||||
config = {
|
-- `config` is passed to `vim.lsp.start_client(config)`
|
||||||
cmd = { "zk", "lsp" },
|
config = {
|
||||||
name = "zk",
|
cmd = { "zk", "lsp" },
|
||||||
-- on_attach = ...
|
name = "zk",
|
||||||
-- etc, see `:h vim.lsp.start_client()`
|
-- on_attach = ...
|
||||||
},
|
-- etc, see `:h vim.lsp.start_client()`
|
||||||
|
},
|
||||||
|
|
||||||
-- automatically attach buffers in a zk notebook that match the given filetypes
|
-- automatically attach buffers in a zk notebook that match the given filetypes
|
||||||
auto_attach = {
|
auto_attach = {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
filetypes = { "markdown" },
|
filetypes = { "markdown" },
|
||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
|
|
|
||||||
|
|
@ -71,22 +71,24 @@ end)
|
||||||
now(function()
|
now(function()
|
||||||
vim.treesitter.language.register("markdown", { "quarto", "rmd" })
|
vim.treesitter.language.register("markdown", { "quarto", "rmd" })
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("FileType", {
|
if nix.get_cat({"r", "markdown"}, false) then
|
||||||
pattern = { "quarto" },
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
callback = function()
|
pattern = { "quarto" },
|
||||||
require("otter").activate()
|
callback = function()
|
||||||
end,
|
require("otter").activate()
|
||||||
})
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
require("otter").setup({
|
require("otter").setup({
|
||||||
lsp = {
|
lsp = {
|
||||||
diagnostic_update_events = { "BufWritePost", "InsertLeave" },
|
diagnostic_update_events = { "BufWritePost", "InsertLeave" },
|
||||||
},
|
},
|
||||||
buffers = {
|
buffers = {
|
||||||
set_filetype = true,
|
set_filetype = true,
|
||||||
write_to_disk = true,
|
write_to_disk = true,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
later(function()
|
later(function()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue