{ description = "tA's vim setup"; inputs = { nixpkgs = { url = "github:NixOS/nixpkgs/nixos-unstable"; }; flake-utils = { url = "github:numtide/flake-utils"; }; rainbow-vim-src = { url = "github:luochen1990/rainbow"; flake = false; }; vim-racket-src = { url = "github:wlangstroth/vim-racket"; flake = false; }; slimv-src = { url = "github:kovisoft/slimv"; flake = false; }; idris2-src = { url = "github:edwinb/idris2-vim"; flake = false; }; }; outputs = { self, nixpkgs, flake-utils, rainbow-vim-src , vim-racket-src, slimv-src, idris2-src, ... }: let customPlugins = pkgs: { rainbow-vim = pkgs.vimUtils.buildVimPlugin { name = "rainbow-vim"; src = rainbow-vim-src; }; vim-racket = pkgs.vimUtils.buildVimPlugin { name = "vim-racket"; src = vim-racket-src; }; slimv = pkgs.vimUtils.buildVimPlugin { name = "slimv"; src = slimv-src; }; idris2 = pkgs.vimUtils.buildVimPlugin { name = "idris2"; src = idris2-src; }; }; in flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { overlays = [ ((import ./overlay.nix) customPlugins) ]; inherit system; }; in { defaultPackage = pkgs.ta.vim; }) // { overlay = (import ./overlay.nix) customPlugins; }; }