106 lines
2.6 KiB
Nix
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
|
|
'';
|
|
}
|
|
];
|
|
};
|
|
}
|