{ description = "My Completely Inelegant Neovim Flake"; inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; vim-angry-reviewer = { url = "github:anufrievroman/vim-angry-reviewer"; flake = false; }; }; outputs = { self, nixpkgs, ... }@inputs: let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; overlays = [ (self: super: { vale = super.callPackage ./nix/vale.nix { }; flake8-isort = super.python3Packages.callPackage ./nix/flake8-isort.nix { }; mypython = super.python3Packages.callPackage ./nix/mypython.nix { }; }) ]; }; in rec { # For nix < 2.7 # For nix >= 2.7 they should grab automatically from: # apps.${system}.default # packages.${system}.default defaultApp.${system} = apps.${system}.default; defaultPackage.${system} = packages.${system}.default; apps.${system} = rec { nvim = { type = "app"; program = "${packages.${system}.default}/bin/nvim"; }; default = nvim; }; # Read the init.lua from the repo. initfile = pkgs.lib.readFile ./init.lua; packages.${system} = with pkgs; let # Vim angry reviewer wasn't packaged when I build this. Easy enough to # package myself. vim-angry-reviewer = vimUtils.buildVimPluginFrom2Nix { pname = "vim-angry-reviewer"; version = "HEAD"; src = inputs.vim-angry-reviewer; }; # My custom neovim with my init file and all the plugins I use. myneovim = (neovim.override { configure = { customRC = '' lua << EOF ${initfile} EOF ''; packages.myPlugins = with vimPlugins; { start = [ # Colorscheme nord-nvim # Syntax coloring nvim-ts-rainbow (nvim-treesitter.withPlugins (plugins: tree-sitter.allGrammars)) # Autocompletes nvim-lspconfig nvim-cmp cmp-nvim-lsp # File navigation lf-vim vim-floaterm # The rest vim-commentary vim-surround vim-repeat fzf-vim vim-argwrap vim-fugitive indent-blankline-nvim camelcasemotion hop-nvim ale goyo-vim vim-oscyank ack-vim vim-angry-reviewer ]; }; }; }); in rec { default = neovimCH; neovimCH = symlinkJoin { name = "neovim"; paths = [ myneovim ]; buildInputs = [ pkgs.makeWrapper ]; postBuild = with pkgs; '' rm $out/bin/nvim BINPATH=${lib.makeBinPath [ gcc nodejs mypython pyright vale tree-sitter nodePackages.bash-language-server shellcheck hadolint ]} makeWrapper ${myneovim}/bin/nvim $out/bin/nvim --prefix PATH : $BINPATH ''; }; }; }; }