Giter VIP home page Giter VIP logo

neovim-flake's Introduction

neovim-flake

Nix flake for neovim with configuration options

Originally based on Wil Taylor's amazing neovim-flake

Installation

This config is constantly changing and updating as it is my personal config. It is opinionated and some available options may also be broken which I will try to keep documented in issues. I am sharing it so anyone can use it as inspiration/a starting point for their own config. I recommend cloning the config and running it locally with:

nix run .#

If you want to live life on the edge you can point to this repository directly with:

nix run github:jordanisaacs/neovim-flake.#

Options

The philosophy behind this flake configuration is sensible options. While the default package has almost everything enabled, when building your own config using the overlay everything is disabled. By enabling a plugin or language, it will set up the keybindings and plugin automatically. Additionally each plugin knows when another plugin is enabled allowing for smart configuration of keybindings and automatic setup of things like completion sources and languages.

A goal of mine is that I shouldn't not be able to break neovim by enabling or disabling an option. For example you can't have two completion plugins enabled as the option is an enum.

Screenshot

screenshot

Language Support

Most languages use nvim-lspconfig to set up language server. Additionally some languages also (or exclusively) use null-ls to extend capabilities.

Rust

LSP Server: rust-analyzer

Formatting

Rust analyzer provides builtin formatting with rustfmt

Plugins

Nix

LSP Server: rnix-lsp

Formatting

rnix provides builtin formatting with nixpkgs-fmt but it is disabled and I am instead using null-ls with alejandra

SQL

LSP Server: sqls

Formatting

sqls provides formatting but it does not work very well so it is disabled. Instead using sqlfluff through null-ls.

Linting

Using sqlfluff through null-ls to provide linting diagnostics set at information severity.

Plugins

  • sqls.nvim for useful actions that leverage sqls LSP

C/C++

LSP Server: ccls

Python

LSP Server: pyright

Formatting:

Using black through null-ls

Markdown

Plugins

  • glow.nvim for preview directly in neovim buffer (broken, waiting on issue)

HTML

Plugins

  • nvim-ts-autotag for autoclosing and renaming html tags. Works with html, tsx, vue, svelte, and php

All Plugins

A list of all plugins that can be enabled

LSP

Buffers

Statuslines

Filetrees

Git

Treesitter

Visuals

Utilities

  • telescope an extendable fuzzy finder of lists. Working ripgrep and fd
  • which-key a popup that displays possible keybindings of command being typed

Markdown

  • glow.nvim a markdown preview directly in neovim using glow

Completions

Snippets

  • vim-vsnip a snippet plugin that supports LSP/VSCode's snippet format

Autopairs

Themes

Dependencies

  • plenary which is a dependency of some plugins, installed automatically if needed

neovim-flake's People

Contributors

jordanisaacs avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.