Files
AsdamNixOS/modules/features/neovim/neovim.nix
2026-07-21 23:36:34 +02:00

126 lines
3.4 KiB
Nix

{ inputs, self, ... }: {
flake.nixosModules.neovim = { pkgs, ... }: let
selfpkgs = self.packages."${pkgs.stdenv.hostPlatform.system}";
in {
programs.neovim.defaultEditor = true;
environment.systemPackages = [
selfpkgs.neovim
];
};
flake.modules.neovim.main = { config, wlib, lib, pkgs, ... }: {
options = {
dynamicMode = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
If true, use impure config instead for fast edits
Both versions of the package may be installed simultaneously
'';
};
initLua = lib.mkOption {
type = wlib.types.stringable;
default = ./.;
};
dynamicInitLua = lib.mkOption {
type = lib.types.either wlib.types.stringable lib.types.luaInline;
default = lib.generators.mkLuaInline "vim.uv.os_homedir() .. '/Documents/MyNixOs/modules/features/neovim'";
};
};
config = {
settings.config_directory =
if config.dynamicMode
then config.dynamicInitLua
else config.initLua;
extraPackages = [
pkgs.ffmpeg-full
pkgs.wl-clipboard
];
specs.init = {
data = null;
before = ["MAIN_INIT"];
config =
''
require('init')
vim.g['wiki_root'] = '~/Documents/Scripts/Wiki/personal'
'';
/*local harpoon = require("harpoon")
harpoon:setup()
vim.keymap.set("n", "<leader>a", function() harpoon:list():add() end)
vim.keymap.set("n", "<C-e>", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end)
vim.keymap.set("n", "<C-h>", function() harpoon:list():select(1) end)
vim.keymap.set("n", "<C-j>", function() harpoon:list():select(2) end)
vim.keymap.set("n", "<C-k>", function() harpoon:list():select(3) end)
vim.keymap.set("n", "<C-l>", function() harpoon:list():select(4) end)*/
};
specs.plugins = {
data = [
pkgs.vimPlugins.lz-n
pkgs.vimPlugins.nvim-lspconfig
pkgs.vimPlugins.nvim-treesitter.withAllGrammars
pkgs.vimPlugins.nvim-web-devicons
pkgs.vimPlugins.lspkind-nvim
pkgs.vimPlugins.colorful-menu-nvim
pkgs.vimPlugins.blink-cmp
pkgs.vimPlugins.snacks-nvim
pkgs.vimPlugins.oil-nvim
pkgs.vimPlugins.lualine-nvim
pkgs.vimPlugins.luasnip
pkgs.vimPlugins.kanagawa-nvim
#pkgs.vimPlugins.telescope-nvim
pkgs.vimPlugins.wiki-vim
];
};
specs.lazyPlugins = {
lazy = true;
data = [
pkgs.vimPlugins.lazydev-nvim
pkgs.vimPlugins.gitsigns-nvim
pkgs.vimPlugins.nvim-autopairs
pkgs.vimPlugins.fastaction-nvim
pkgs.vimPlugins.mini-files
pkgs.vimPlugins.codecompanion-nvim
pkgs.vimPlugins.undotree
pkgs.vimPlugins.vim-fugitive
pkgs.vimPlugins.plenary-nvim
#pkgs.vimPlugins.harpoon2
#pkgs.vimPlugins.neowiki-nvim
];
};
};
};
perSystem = {pkgs, self', ... }: {
packages.neovim = inputs.wrapper-modules.wrappers.neovim.wrap {
inherit pkgs;
imports = [
self.modules.neovim.main
#self.modules.neovim.lua
#self.modules.neovim.nix
];
};
packages.neovimFull = inputs.wrapper-modules.wrappers.neovim.wrap {
inherit pkgs;
dynamicMode = true;
imports = [
self.modules.neovim.main
#self.modules.neovim.allServers
];
};
};
}