shaunsingh / nyoom.nvim

Configurable, minimal, modular, and lispy neovim config written in Fennel. Base config for users to extend and add upon, leading to a more unique editing experience.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Nyoom.nvim

Install • [Documentation] • [FAQ] • [Screenshots] • Contribute

Fennel Stars GitHub Issues Forks License

These are your father's parentheses.
Elegant weapons for a more... civilized age.
xkcd/297

nyoombottomtext

Nyoom.nvim was an answer to abstracted and complex codebases that take away end-user extensibility, try to be a one-size-fits-all config, and needlessly lazy load everything. Nyoon.nvim provides a solution to these problems by providing easily readable and easy to work with code in order to make a functioning configuration. The end goal of nyoom.nvim is to be used as a base config for users to extend and add upon, leading to a more unique editing experience. Its relatively small and simple, offers the bare minimum needed plugins to have a powerful config, and is suited to my needs, but can just as easily be suited to yours!

Nyoom can be anything you'd like. Enable all the modules for the vscode-alternative in you, remove some and turn it into the prose editor of your dreams, or disable everything and have a nice set of macros to start your configuration from scratch!

At its core, Nyoom consists of a set of intuitive macros, a set of modules, and some opinionated default options, and nothing more.

If you want to jump right into it, see the FAQ page:

Designed against the mantras of doom-emacs doom-emacs:

  • Gotta go fast. Startup and run-time performance are priorities.
  • Close to metal. There's less between you and vanilla neovim by design. That's less to grok and less to work around when you tinker.
  • Opinionated, but not stubborn. Nyoom (and Doom) are about reasonable defaults and curated opinions, but use as little or as much of it as you like.
  • Your system, your rules. You know better. At least, Nyoom hopes so! There are no external dependencies (apart from rust), and never will be.

It also aligns with many of Doom's features:

  • Minimalistic good looks inspired by modern editors.
  • A modular organizational structure for separating concerns in your config.
  • A standard library designed to simplify your fennel bike shedding.
  • A declarative package management and module system (inspired by use-package, powered by Packer.nvim). Install packages from anywhere, and pin them to any commit.
  • A Space(vim)-esque keybinding scheme, centered around leader and localleader prefix keys (SPC and SPCm).
  • Project search (and replace) utilities, powered by ripgrep, and telescope.

However, it also disagrees with some of those ideals

  • Packages are not pinned to commits by default. This configuration is still quite a bit simpler than doom emacs, and breaking changes are usually few and far between. Of course, you are free to pin packages yourself (and use :PackerSnapshot).

For more info, checkout our (under construction) FAQ

Credits

  • David Guevara For getting me into fennel, and for some of his beautiful macros. Without him Nyoom wouldn't exist!
  • Oliver Caldwell For his excellent work on Aniseed, Conjure, and making fennel feel like a first class language in neovim

Changelog

Moved to changelog.md

Feature Overview

Prerequisites

  • Neovim v0.8.0+ (nightly)
  • Cargo/rustc
  • Git

Nyoom works best with a modern terminal with Truecolor support. Optionally, you can install Neovide if you'd like a gui.

Nyoom is comprised of optional modules, some of which may have additional dependencies. Run :checkhealth to check for what you may have missed

Install

Regular:

Nyoom replaces packer.nvim with a cli, enabling advanced features such as nyoom's module system

git clone --depth 1 https://github.com/shaunsingh/nyoom.nvim.git ~/.config/nvim 
cd ~/.config/nvim/
bin/nyoom install 
bin/nyoom sync

Its recommend you add ~/.config/nvim/bin/nyoom to your shells path

Using nix:

(under construction)

Roadmap

(under construction)

Notes

If you have an issue with a plugin in Nyoom.nvim, first you should report it here. Please don't bother package maintainers with issues that are caused by my configs, and vice versa. I'm new to fennel, so don't hesitate to let me know my lisp-fu sucks!

Contribute

PRs Welcome

Checkout the Module Guide

  • I love pull requests and bug reports!
  • Don't hesitate to tell me my lisp-fu sucks, but please tell me why.
  • Don't see support for your language, or think it should be improved? Feel free to open an issue or PR with your changes.

Adressing NvChad

Originally, this README stated the following:

This config was a response to new configs that pop up, with very abstracted and complex codebases, such as NvChad. They try to be a one-size-fits-all config. NvChad and LunarVim both try to fit as much overall functionality as possible and needlessly lazy load everything, when it really isn't needed. Complex codebases lead to less freedom for end-user extensibility. Try forking NvChad and making your own configuration out of it. Everything is tied to the userConfig, and you rely on the maintainer of said code to implement features.

While this still applies to LunarVIM, and some other configuration, NvChad has changed quite a bit since I wrote this statement. They've done a great job on fixing and cleaning up their lazy-loading, and have made their configuration files easier to read for beginners. Additionally, their new approach to user-config is much closer to what you would expect to stock-neovim, and I'd wholeheartedly recommend NvChad as well if you need an easy to use lua config.

About

Configurable, minimal, modular, and lispy neovim config written in Fennel. Base config for users to extend and add upon, leading to a more unique editing experience.

License:MIT License


Languages

Language:Fennel 98.1%Language:Shell 1.7%Language:Lua 0.2%