# Custom Inputs {#ch-custom-inputs} One of the greatest strengths of **nvf** is its ability to get plugins from flake inputs and build them locally from any given source. For plugins that do not require any kind of additional building step, this is a powerful method of adding plugins to your configuration that are not packaged in nixpkgs, or those you want to track from source without relying on nixpkgs. The [additional plugins section](#sec-additional-plugins) details the addition of new plugins to nvf under regular circumstances, i.e. while making a pull request to the project. You may _override_ those plugin inputs in your own `flake.nix` to change source versions, e.g., to use newer versions of plugins that are not yet updated in **nvf**. ```nix { inputs = { # ... # The name here is arbitrary, you can name it whatever. # This will add a plugin input called "your-neodev-input" # that you can reference in a `follows` line. your-neodev-input = { url = "github:folke/neodev.nvim"; flake = false; }; nvf = { url = "github:notashelf/nvf"; # The name of the input must match for the follows line # plugin-neodev-nvim is what the input is called inside nvf # so you must match the exact name here. inputs.plugin-neodev-nvim.follows = "your-neodev-input"; }; # ... }; } ``` This will override the source for the `neodev.nvim` plugin that is used in nvf with your own input. You can update your new input via `nix flake update` or more specifically `nix flake update <name of your input>` to keep it up to date. ::: {.warning} While updating plugin inputs, make sure that any configuration that has been deprecated in newer versions is changed in the plugin's `setupOpts`. If you depend on a new version, requesting a version bump in the issues section is a more reliable option. :::