nixos-config/home-manager/modules/nvf/default.nix
2026-01-24 09:44:01 -05:00

106 lines
2.6 KiB
Nix

{
inputs,
pkgs,
lib,
...
}:
{
imports = [
inputs.nvf.homeManagerModules.default
./options.nix
./languages.nix
./picker.nix
./snacks.nix
./keymaps.nix
./utils.nix
./mini.nix
];
programs.nvf = {
enable = true;
settings.vim = {
startPlugins = with pkgs; [
# pkgs.vimPlugins.vim-kitty-navigator
vimPlugins.grug-far-nvim
vimPlugins.image-nvim
oasis-nvim
vimPlugins.vim-hoogle
vimPlugins.telescope_hoogle
vimPlugins.zk-nvim
];
luaConfigRC.colorscheme = ''
vim.cmd.colorscheme("oasis-day")
'';
luaConfigRC.zk_nvim = ''
local ok, zk = pcall(require, "zk")
if not ok then
return
end
zk.setup({
-- use "telescope", "fzf", etc. if you prefer
picker = "select",
lsp = {
config = {
name = "zk",
cmd = { "zk", "lsp" },
filetypes = { "markdown" },
-- you can put on_attach = function(client, bufnr) ... end here if you want
},
auto_attach = {
enabled = true,
},
},
})
'';
};
settings.vim.augroups = [
{ name = "SwiftSetup"; }
];
settings.vim.autocmds = [
# Start Swift LSP automatically for Swift files
{
event = [ "FileType" ];
pattern = [ "swift" ];
group = "SwiftSetup";
desc = "Start sourcekit-lsp for Swift files";
callback = lib.generators.mkLuaInline ''
function()
local lspconfig = require("lspconfig")
-- Avoid starting LSP multiple times
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
'';
}
# Format Swift files on save using swift-format
{
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
'';
}
];
};
}