{ description = "Neovim configuration"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; blink-cmp = { url = "github:Saghen/blink.cmp"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, flake-utils, blink-cmp }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [(final: prev: { node-lsp = final.callPackage ./node-lsp {}; blink-cmp = blink-cmp.packages.${system}.blink-cmp; neovim-unwrapped = prev.neovim-unwrapped.overrideAttrs (attrs: attrs // { patches = (attrs.patches or []) ++ [ # fix floating windows not closing when going to another file ./neovim-34946.patch ]; }); })]; }; in { packages.neovim = pkgs.callPackage ./neovim.nix {}; packages.neovim-minimal = (pkgs.callPackage ./neovim.nix {}).minimal; packages.default = self.packages.${system}.neovim; devShells.default = pkgs.mkShell { packages = with pkgs; [ lua-language-server ]; }; } ); }