{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; utils.url = "github:numtide/flake-utils"; tabby-nvim = { url = "github:nanozuki/tabby.nvim?rev=916c9e56d043906a441cd9f905e2ca1f5c4dddb0"; flake = false; }; editorconfig-nvim = { url = "github:gpanders/editorconfig.nvim?rev=7d10fe6bc340fd783c0b61cf627dd235100284db"; flake = false; }; telescope-live-grep-args-nvim = { url = "github:nvim-telescope/telescope-live-grep-args.nvim?rev=32b633b062d1168a2d18ad27994e5b4ef97f0a74"; flake = false; }; }; outputs = inputs @ { self, nixpkgs, utils, ... }: utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [ (f: p: { vimPlugins = p.vimPlugins // { # TODO: make util to build plugins from array tabby-nvim = p.vimUtils.buildVimPluginFrom2Nix { name = "tabby-nvim"; src = inputs.tabby-nvim; }; editorconfig-nvim = p.vimUtils.buildVimPluginFrom2Nix { name = "editorconfig-nvim"; src = inputs.editorconfig-nvim; }; telescope-live-grep-args-nvim = p.vimUtils.buildVimPluginFrom2Nix { name = "telescope-live-grep-args-nvim"; src = inputs.telescope-live-grep-args-nvim; }; }; }) ]; }; neovim = pkgs.callPackage ./. { }; in { apps.default = { type = "app"; program = "${neovim}/bin/nvim"; }; packages.default = neovim; devShells.default = pkgs.mkShell { packages = [ (neovim.override { enableDevIcons = true; enableTabby = true; }) pkgs.stylua # lua formatter ]; }; overlays = f: p: { myneovim = neovim; }; }); }