**[
Get Started
][Get Started]**
**[
Documentation
][Documentation]**
**[
Help
][Help]**
**[
Contribute
][Contribute]**
**[
FAQ
][Faq]**
**[
Credits
][Credits]**
[Get Started]: #get-started
[Documentation]: #documentation
[Help]: #help
[Contribute]: #contributing
[FAQ]: #faq
[Credits]: #credits
---
## Get Started
### Using `nix` CLI
If you would like to try out the configuration before even thinking about
installing it, you can run the following command
```console
nix run github:notashelf/neovim-flake
```
This will get you a feel for the base configuration and UI design.
The flake exposes `#nix` as the default package, providing minimal
language support and various utilities.You may also use `#nix`,
`#tidal` or `#maximal` to get try out different configurations.
It is as simple as changing the target output to get a different
configuration. For example, to get a configuration with `tidal` support, run:
```console
nix run github:notashelf/neovim-flake#tidal
```
Similar instructions will apply for `nix profile install`. However, you are
recommended to instead use the module system as described in the manual.
> [!NOTE]
> The `maximal` configuration is _massive_ and will take a while to build.
> To get a feel for the configuration, use the default `nix` or `tidal`
> configurations. Should you choose to try out the `maximal` configuration,
> using the binary cache as described in the manual is _strongly_ recommended.
### Docker
As of version 0.5, an image for the `nix` output is published to Dockerhub
and GitHub packages with each tagged release. If you do not have Nix installed
on your system, you may run neovim within a container using your favorite tool.
The following command will open the current directory in neovim with necessary
tools bootstrapped.
```console
docker run -v `pwd`:/home/neovim/demo --rm -it notashelf/neovim-flake:latest
```
The available registeres are `ghcr.io` and `dockerhub` for the time being.
Adjust to your liking.
## Documentation
See the [neovim-flake Manual](https://notashelf.github.io/neovim-flake/) for
detailed installation guides, configurations, available options, release notes
and more. Tips for installing userspace plugins is also contained in the
documentation.
If you want to dive right into trying **neovim-flake** you can get a fully
featured configuration with `nix` language support by running:
```console
nix run github:notashelf/neovim-flake
```
Please create an issue on the [issue tracker](../../../issues) if you find
the documentation lacking or confusing. I also appreciate any contributions
to the documentation.
## Help
You can create an issue on the [issue tracker](../../../issues) to ask questions
or report bugs. I am not yet on spaces like matrix or IRC, so please use the issue
tracker for now.
## Contributing
I am always looking for new ways to help improve this flake. If you would like
to contribute, please read the [contributing guide](CONTRIBUTING.md) before
submitting a pull request. You can also create an issue on the
[issue tracker](../../../issues) before submitting a pull request if you would
like to discuss a feature or bug fix.
## Philosophy
The philosophy behind this flake configuration is to create an easily
configurable and reproducible Neovim environment. While it does sacrifice in
size (which I know some users will find _disagreeable_), it offers a lot of
flexibility and customizability in exchange for the large size of the flake
inputs. The "KISS" (Keep it simple, stupid) principle has mostly been abandoned
here, however, you _can_ ultimately leverage the flexibility of this flake to
declare a configuration that follows KISS principles, as it is very easy to
bring your own plugins and configurations from non-nix. What this flake is
meant to be does eventually fall into your hands. Whether you are a developer,
writer, or live coder, you can quickly craft a config that suits every project's
needs. Think of it like a distribution of Neovim that you have full control over.
A distribution that takes advantage of pinning vim plugins and third party
dependencies (such as tree-sitter grammars, language servers, and more).
One should never get a broken config when setting options. If setting multiple
options results in a broken Neovim, file an issue! Each plugin knows when another
plugin which allows for smart configuration of keybindings and automatic setup
of things like completion sources and languages.
## FAQ
**Q**: Why is this flake so big?