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