{ description = "A very basic flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; neovim-nightly-overlay = { url = "github:nix-community/neovim-nightly-overlay"; }; # Neovim Plugins gopher-nvim = { url = "github:olexsmir/gopher.nvim"; flake = false; }; }; outputs = inputs@{ self, nixpkgs, flake-utils, home-manager, ... }: let inherit (self) outputs; nixpkgsConfig = { config.allowUnfree = false; }; neovim-overlay = import ./nix/overlay.nix { inherit inputs; }; overlays = [ neovim-overlay inputs.neovim-nightly-overlay.overlays.default ]; localLib = { mkPkgs = system: import nixpkgs { inherit system overlays; inherit (nixpkgsConfig) config; }; }; in { overlays.default = neovim-overlay; } // flake-utils.lib.eachDefaultSystem (system: let pkgs = localLib.mkPkgs system; in { formatter = pkgs.alejandra; packages = with pkgs; rec { nvim-nightly = neovim-nightly; nvim-ide = neovim-ide; default = nvim-ide; }; devShells = { default = pkgs.mkShell { name = "neovim"; buildInputs = with pkgs; [ lua-language-server stylua luajitPackages.luacheck ]; }; }; } ); }