95 lines
2.8 KiB
Nix
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
|
|
'';
|
|
}
|
|
];
|
|
};
|
|
})
|
|
];
|
|
}
|