{ 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 ''; } ]; }; }