nix-config/modules/features/nvim.nix
2026-04-15 18:26:05 -04:00

95 lines
2.8 KiB
Nix

{ inputs, ... }:
{
config.dendritic.features.editor-neovim.homeModules = [
({ pkgs, lib, ... }: {
imports = [
inputs.nvf.homeManagerModules.default
../home/programs/neovim/options.nix
../home/programs/neovim/languages.nix
../home/programs/neovim/picker.nix
../home/programs/neovim/snacks.nix
../home/programs/neovim/keymaps.nix
../home/programs/neovim/utils.nix
../home/programs/neovim/mini.nix
];
programs.nvf = {
enable = true;
settings.vim = {
startPlugins = with pkgs; [
vimPlugins.grug-far-nvim
vimPlugins.image-nvim
vimPlugins.vim-hoogle
vimPlugins.telescope_hoogle
vimPlugins.zk-nvim
vimPlugins.cyberdream-nvim
vimPlugins.octo-nvim
];
luaConfigRC.colorscheme = ''
vim.cmd.colorscheme("cyberdream-light")
'';
luaConfigRC.zk_nvim = ''
local ok, zk = pcall(require, "zk")
if not ok then return end
zk.setup({
picker = "select",
lsp = {
config = {
name = "zk",
cmd = { "zk", "lsp" },
filetypes = { "markdown" },
},
auto_attach = { enabled = true },
},
})
'';
};
settings.vim.augroups = [
{ name = "SwiftSetup"; }
];
settings.vim.autocmds = [
{
event = [ "FileType" ];
pattern = [ "swift" ];
group = "SwiftSetup";
desc = "Start sourcekit-lsp for Swift files";
callback = lib.generators.mkLuaInline ''
function()
local lspconfig = require("lspconfig")
for _, client in pairs(vim.lsp.get_active_clients()) do
if client.name == "sourcekit" then return end
end
lspconfig.sourcekit.setup({
cmd = { "sourcekit-lsp" },
filetypes = { "swift", "swiftpm" },
root_dir = lspconfig.util.root_pattern("Package.swift", ".git"),
})
end
'';
}
{
event = [ "BufWritePost" ];
pattern = [ "*.swift" ];
group = "SwiftSetup";
desc = "Format Swift files on save";
callback = lib.generators.mkLuaInline ''
function()
if vim.fn.executable("swift-format") == 1 then
vim.cmd("silent! noautocmd !swift-format -i %")
vim.cmd("checktime")
end
end
'';
}
];
};
})
];
}