docs: update readme & style

This commit is contained in:
NotAShelf 2023-02-06 05:27:15 +03:00
parent 1c8d224775
commit c2affb9945
No known key found for this signature in database
GPG key ID: 5B5C8895F28445F1
4 changed files with 136 additions and 20 deletions

109
README.md
View file

@ -1,11 +1,84 @@
# neovim-flake <div align="center"><p>
<a href="https://github.com/NotAShelf/neovim-flake/releases/latest">
<img alt="Latest release" src="https://img.shields.io/github/v/release/NotAShelf/neovim-flake?style=for-the-badge&logo=starship&color=C9CBFF&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/NotAShelf/neovim-flake/blob/main/LICENSE">
<img alt="License" src="https://img.shields.io/github/license/NotAShelf/neovim-flake?style=for-the-badge&logo=starship&color=ee999f&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/NotAShelf/neovim-flake/stargazers">
<img alt="Stars" src="https://img.shields.io/github/stars/NotAShelf/neovim-flake?style=for-the-badge&logo=starship&color=c69ff5&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/NotAShelf/neovim-flake/issues">
<img alt="Issues" src="https://img.shields.io/github/issues/NotAShelf/neovim-flake?style=for-the-badge&logo=bilibili&color=F5E0DC&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/NotAShelf/neovim-flake">
<img alt="Repo Size" src="https://img.shields.io/github/repo-size/NotAShelf/neovim-flake?color=%23DDB6F2&label=SIZE&logo=codesandbox&style=for-the-badge&logoColor=D9E0EE&labelColor=302D41" />
</a>
A highly configurable nix flake for neovim, packing everything you might need to create your own neovim IDE.
<p align="center">
<img src="https://stars.medv.io/NotAShelf/neovim-flake.svg", title="commits"/>
</p>
An Nix wrapped IDE layer for the superior text editor, Neovim.
---
**[<kbd><br>Install<br></kbd>][Install]**
**[<kbd><br>Configure<br></kbd>][Configure]**
**[<kbd><br>Documentation<br></kbd>][Documentation]**
**[<kbd><br>Contribute<br></kbd>][Contribute]**
**[<kbd><br>FAQ<br></kbd>][Faq]**
---
A highly configurable nix flake for Neovim, packing everything you might need to create your own neovim IDE.
## Install
**Using `nix`**
The easiest way to install is to use the `nix profile` command. To install the default configuration, run:
```console
nix run github:notashelf/neovim-flake
```
The package exposes `.#nix` as the default output. You may use `.#nix`, `.#tidal` or `.#maximal` to get different configurations.
It is as simply 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`.
**On NixOS**
NixOS users may add this repo to their flake inputs as such:
```nix
{
inputs = {
# point at this repository, you may pin specific revisions or branches while using `github:`
neovim-flake.url = "github:notashelf/neovim-flake";
# you may override our nixpkgs with your own, this will save you some cache hits and s recommended
nixpkgs.follows = "nixpkgs";
};
}
```
Then, you can use the `neovim-flake` input in your `systemPackages` or `home.packages`.
## Configure
TODO (awaiting #1 to be merged, which implements a separate configuration file)
## Documentation ## Documentation
See the [neovim-flake Manual](https://notashelf.github.io/neovim-flake/) for documentation, available options, and release notes. See the [neovim-flake Manual](https://notashelf.github.io/neovim-flake/) for detailed documentation, available options, and release notes.
If you want to dive right into trying neovim-flake you can get a fully featured configuration with `nix` language support by running: If you want to dive right into trying **neovim-flake** you can get a fully featured configuration with `nix` language support by running:
```console ```console
nix run github:notashelf/neovim-flake nix run github:notashelf/neovim-flake
@ -19,24 +92,36 @@ You can create an issue on the [issue tracker](issues) to ask questions or repor
## Philosophy ## Philosophy
The philosophy behind this flake configuration is to create an eaesily configurable and reproducible neovim environment. While it does sacrifice in size 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 flexibiity and configurability in exchange for the large size of the flake inputs. (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 been abandoneed here, but you can ultimately declare a configuration that follows KISS. The KISS (Keep it simple, stupid) principle has been abandoned here, but you can ultimately declare a configuration that follows KISS.
For it is very easy to bring your own plugins and configurations. Whether you are a developer, writer, or live coder (see tidal cycles below!), For it is very easy to bring your own plugins and configurations. Whether you are a developer, writer, or live coder (see tidal cycles below!),
quickly craft a config that suits every project's need. Think of it like a distribution of Neovim that takes advantage of pinning vim plugins and quickly craft a config that suits every project's need. Think of it like a distribution of Neovim that takes advantage of pinning vim plugins and
third party dependencies (such as tree-sitter grammars, language servers, and more). 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. 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.
## Credits ## Credits
This configuration is based on a few other configurations, including: This configuration is based on a few other configurations, including:
- @sioodmy's [dotfiles](https://github.com/sioodmy/dotfiles) - [@sioodmy's](https://github.com/sioodmy) [dotfiles](https://github.com/sioodmy/dotfiles)
- @wiltaylor's [neovim-flake](https://github.com/wiltaylor/neovim-flake) - [@wiltaylor's](https://github.com/wiltaylor) [neovim-flake](https://github.com/wiltaylor/neovim-flake)
- @jordanisaacs's [neovim-flake](https://github.com/jordanisaacs/neovim-flake) - [@jordanisaacs's](https://github.com/jordanisaacs) [neovim-flake](https://github.com/jordanisaacs/neovim-flake)
- @gvolpe's [neovim-flake](https://github.com/gvolpe/neovim-flake) - [@gvolpe's](https://github.com/gvolpe) [neovim-flake](https://github.com/gvolpe/neovim-flake)
I am grateful for their work and inspiration. I am grateful for their work and inspiration.
## FAQ
**Q**: Why is this flake so big?
**A**: I have sacrificed in size in order to provide a highly configurable and reproducible Neovim environment. A binary cache is provided to
eleminate the need to build the flake from source, but it is still a large flake. If you do not need all the features, you can use the default `nix` output
instead of the `maximal` output. This will reduce size by a lot, but you will lose some language specific features.
**Q**: Will you use a plugin manager?
**A**: No. If you feel the need to ask that question, then you have missed the whole point of using nix and ultimately this flake. We load plugins with raw lua.
--- ---

View file

@ -18,7 +18,7 @@ The following is an example of a barebones vim configuration with the default th
[source,nix] [source,nix]
---- ----
{ {
inputs.neovim-flake.url = "github:jordanisaacs/neovim-flake"; inputs.neovim-flake.url = "github:notashelf/neovim-flake";
outputs = {nixpkgs, neovim-flake, ...}: let outputs = {nixpkgs, neovim-flake, ...}: let
system = "x86_64-linux"; system = "x86_64-linux";

View file

@ -7,7 +7,7 @@ While you can configure neovim-flake yourself using the builder, here are a few
=== Tidal Cycles === Tidal Cycles
[source,console] [source,console]
$ nix run github:jordanisaacs/neovim-flake#tidal file.tidal $ nix run github:notashelf/neovim-flake#tidal file.tidal
Utilizing https://github.com/tidalcycles/vim-tidal[vim-tidal] and mitchmindtree's fantastic https://github.com/mitchmindtree/tidalcycles.nix[tidalcycles.nix] start playing with tidal cycles in a single command. Utilizing https://github.com/tidalcycles/vim-tidal[vim-tidal] and mitchmindtree's fantastic https://github.com/mitchmindtree/tidalcycles.nix[tidalcycles.nix] start playing with tidal cycles in a single command.
@ -18,7 +18,7 @@ In your tidal file, type a cycle e.g. `d1 $ s "drum"` and then press _ctrl+enter
=== Nix === Nix
[source,console] [source,console]
$ nix run github:jordanisaacs/neovim-flake#nix test.nix $ nix run github:notashelf/neovim-flake#nix test.nix
Enables all the of neovim plugins, with language support for specifically Nix. This lets you see what a fully configured neovim setup looks like without downloading a whole bunch of language servers and associated tools. Enables all the of neovim plugins, with language support for specifically Nix. This lets you see what a fully configured neovim setup looks like without downloading a whole bunch of language servers and associated tools.
@ -26,7 +26,7 @@ Enables all the of neovim plugins, with language support for specifically Nix. T
=== Maximal === Maximal
[source,console] [source,console]
$ nix shell github:jordanisaacs/neovim-flake#maximal test.nix $ nix shell github:notashelf/neovim-flake#maximal test.nix
It is the same fully configured neovim as with the <<sec-default-nix,Nix>> config, but with every supported language enabled. It is the same fully configured neovim as with the <<sec-default-nix,Nix>> config, but with every supported language enabled.

View file

@ -0,0 +1,31 @@
[[sec-release-0.2]]
== Release 0.2
Release notes for release 0.2
[[sec-release-0.1-changelog]]
=== Changelog
https://github.com/notashelf[notashelf]:
* Added minimap options under `vim.minimap`. The default will be codewindow.nvim.
* Removed hare language support (lsp/tree-sitter/etc). `vim.lsp.hare` is no longer defined. If you use hare and would like it added back, please file an issue.
* <<opt-vim.startPlugins>> & <<opt-vim.optPlugins>> are now an enum of `string` for options sourced from the flake inputs. Users can still provide vim plugin packages.
+
If you are contributing and adding a new plugin, add the plugin name to `availablePlugins` in https://github.com/jordanisaacs/neovim-flake/blob/20cec032bd74bc3d20ac17ce36cd84786a04fd3e/modules/lib/types-plugin.nix[types-plugin.nix].
* `neovimBuilder` has been removed for configuration. Using an overlay is no longer required. See the manual for the new way to configuration.
* Treesitter grammars are now configurable with <<opt-vim.treesitter.grammars>>. Utilizes the nixpkgs `nvim-treesitter` plugin rather than a custom input in order to take advantage of build support of pinned versions. See https://discourse.nixos.org/t/psa-if-you-are-on-unstable-try-out-nvim-treesitter-withallgrammars/23321?u=snowytrees[discourse] for more information. Packages can be found under the `vimPlugins.nvim-treesitter.builtGrammars` namespace.
* <<opt-vim.configRC>> and <<opt-vim.luaConfigRC>> are now of type DAG lines. This allows for ordering of the config. Usage is the same is in home-manager's `home.activation` option.
+
[source,nix]
----
vim.luaConfigRC = lib.nvim.dag.entryAnywhere "config here"
----