112 lines
2.5 KiB
Nix
112 lines
2.5 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')";
|
|
};
|
|
|
|
specs.plugins = {
|
|
data = [
|
|
pkgs.vimPlugins.lz-n
|
|
pkgs.vimPlugins.plenary-nvim
|
|
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.kiwi-nvim
|
|
];
|
|
};
|
|
|
|
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.harpoon
|
|
pkgs.vimPlugins.undotree
|
|
pkgs.vimPlugins.vim-fugitive
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
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
|
|
];
|
|
};
|
|
};
|
|
|
|
|
|
}
|