Skip to content

A Neovim framework and doom emacs alternative for the stubborn martian hacker. Powered by fennel and the oxocarbon theme

License

Notifications You must be signed in to change notification settings

nyoom-engineering/nyoom.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nyoom.nvim

Fennel Stars GitHub Issues Forks License Discord Server

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

merged

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. It solves this problem by providing a set of well integrated modules similar to doom-emacs. Modules contain curated plugins and configurations that work together to provide a unified look and feel across all of Nyoom. The end goal of nyoom.nvim is to be used as a framework config for users to extend and add upon, leading to a more unique editing experience.

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 nice standard library, a set of modules, and some opinionated default options, and nothing more.

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.
  • Nix/Guix is a great idea! The Neovim ecosystem is temperamental. Things break and they break often. Disaster recovery should be a priority! Nyoom's package management should be declarative and your private config reproducible, and comes with a means to roll back releases and updates (still a WIP).

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.
  • Per-file indentation style detection and [editorconfig] integration. Let someone else argue about tabs vs spaces
  • Support for modern tooling and navigation through language-servers, null-ls, and tree-sitter.

For more info, checkout our (under construction) FAQ

Prerequisites

  • Neovim v0.8.1+
  • Git
  • Ripgrep 11.0+

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

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

Then read getting started to be walked through installing, configuring and maintaining Nyoom Nvim.

It's a good idea to add ~/.config/nvim/bin to your PATH! Other bin/nyoom commands you should know about:

  • nyoom sync to synchronize your private config with Nyoom by installing missing packages, removing orphaned packages, and regenerating caches. Run this whenever you modify your packages.fnl and modules.fnl
  • nyoom upgrade to update Nyoom to the latest release
  • nyoom lock to dump a snapshot of your currently installed packages to a lockfile file.

Getting help

Neovim is no journey of a mere thousand miles. You will run into problems and mysterious errors. When you do, here are some places you can look for help:

  • Our Documentation covers many use cases.
  • The builtin :help is your best friend
  • To search available keybinds: <SPC>fk
  • Run :check health to detect common issues with your development environment.
  • Search Nyoom's issue tracker in case your issue was already reported.
  • Hop on our Discord server ; it's active and friendly!

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.

Roadmap

(under construction)

Contribute

PRs Welcome

Checkout the Contributor 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.

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