|
- Fully Modularized: Every configuration is split into modules, making it easy to use only what you need.
- Three Configurations:
- Bare: Minimal setup for quick edits on any server.
- Core: A daily-driver setup with LSP and language support.
- Full: All-in-one, feature-rich setup, including LaTeX support.
- Customizable: Import modules individually or override configurations using
config.nvix
.
For a minimal setup with basic mappings and options, ideal for quick edits:
nix run "github:niksingh710/nvix#bare"
For a fully-featured daily driver with LSP and language support:
nix run "github:niksingh710/nvix#core"
For a comprehensive setup with jumbo packs (e.g., LaTeX support):
nix run "github:niksingh710/nvix#full"
Ensure that you have nix installed on your system and flakes enabled.
# This is multiuser installation of nix requires sudo
sh <(curl -L https://nixos.org/nix/install) --daemon
inputs = {
nvix.url = "github:niksingh710/nvix";
};
environment.packages = [
inputs.nvix.packages.${pkgs.system}.default
];
# Replace `default` with `bare`, `core`, or `full` as needed
For further customization, use:
inputs.nvix.packages.${pkgs.system}.default.extend { }
Check the variables.nix
file or the Nixvim Wiki for additional configuration options.
- Generalized Design: Use specific modules (e.g., lualine) without adopting the entire configuration.
- Community-Driven: Plans to support multiple standardized configurations for popular plugins (e.g., lualine).
- Lightweight to Full-Featured: Choose a setup based on your needs.
Each module has its own README with usage details. The configurations build on one another:
- Bare: Minimal setup.
- Core: Includes everything in Bare.
- Full: Includes everything in Core.
Module | Included In | Description |
---|---|---|
aesthetics | Core, Full | Utility functions required by other modules. |
utils | Bare, Core, Full | Utility functions required by other modules. |
general | Bare, Core, Full | Basic Neovim settings (e.g., number, relativenumber). |
lualine | Core, Full | Status line configuration. |
auto-session | Core, Full | Auto-session management for Neovim sessions. |
buffer | Bare, Core, Full | Buffer-related features and management. |
cmp | Core, Full | Completion engine setup and configuration. |
colorschemes | Bare, Core, Full | Themes for Neovim, including TokyoDark and TokyoNight. |
copilot | Bare, Core, Full | GitHub Copilot integration in Neovim. |
dashboard | Core, Full | Neovim start dashboard and related setup. |
explorer | Bare, Core, Full | File explorer integration, including neo-tree and oil. |
firenvim | Core, Full | Browser-based text editing with Firenvim. |
git | Core, Full | Git-related functionality and configuration in Neovim. |
lang | Core, Full | Language-specific configurations for various languages. |
lsp | Core, Full | Language Server Protocol (LSP) setup for enhanced development. |
snacks | Core, Full | Collection of utility plugins for Neovim. |
telescope | Core, Full | Search and file navigation using the Telescope plugin. |
tex | Full | Full TeX/TeXLive/TeXLab setup for LaTeX document editing. |
treesitter | Core, Full | Syntax highlighting and parsing with Treesitter. |
This table lists the modules, where they are included (Bare
, Core
, Full
), and a brief description. You can add or adjust the descriptions for each module accordingly.For detailed usage, refer to each module's README.
Note
If you find something undocumented or have a better way of documenting, please share—it will be integrated. An auto-doc generator would also be a great addition; if you know how to implement one, please share or contribute. With time, more relevant plugins will be added.
Nvix was initially created as a learning experiment while exploring Nix. Over time, it evolved into a modular and flexible configuration for Neovim.
- Bare: For lightweight, minimal editing without distractions.
- Core: For regular usage with full LSP and language support.
- Full: For advanced workflows requiring plugins like LaTeX.
Absolutely! Nvix is modular, so you can pick and choose modules (e.g., lualine) to include in your setup. This allows you to quickly spin up an editor with your preferences without adopting the full configuration.
Yes! The goal is to include standardized configurations for popular plugins, allowing for user-specific choices via config.nvix
.
Nixvim already exposes most options for customization. As new standardized configurations are added, more options will be exposed where needed.
Contributions are welcome! Here’s how you can help:
- Fix typos or improve documentation.
- Suggest better configurations or enhancements.
- Request support for new plugins or options.
- Share your expertise in configuring LSP or plugins for specific languages.
Create an issue or a PR—I’ll address it as soon as possible!
Initialize a new Nixvim configuration:
nix flake init -t "github:nix-community/nixvim"
Then, add Nvix modules to your configuration:
# Add Nvix to inputs
inputs = {
...
nvix.url = "github:niksingh710/nvix";
...
};
# Import required modules
modules.imports = [
./config
inputs.nvix.nvixModules.utils
inputs.nvix.nvixModules.lualine
];
Note
The utils
module is required for most configurations. Some modules depend on custom-packaged plugins—refer to their README for details.
- Add more community-standard configurations.
- Increase the number of exposed options in
config.nvix
. - Improve support for language-specific LSPs.
This project is licensed under the MIT License.
Nvix wouldn’t be possible without inspiration and tools from the following repositories:
Nvix is a personal project, but I’ve designed it to be flexible and reusable. If you find it helpful, give it a star on GitHub!
Have questions or suggestions? Feel free to open an issue—I’m always looking to improve.
Happy coding! ⚛️