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