Initial commit
This commit is contained in:
111
modules/features/neovim/neovim.nix
Normal file
111
modules/features/neovim/neovim.nix
Normal file
@@ -0,0 +1,111 @@
|
||||
{ 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
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user