YALMS - Yet Another Lua ModuleS
Table of Contents
YALMS
A library of reusable Lua modules and Neovim plugins for developer experience.
Quick Start
Install via LuaRocks:
luarocks install yalms
Or use as a Neovim plugin – Use your favorite plugin manager, example is using LazyVim:
{
"anomalyco/yalms",
dependencies = {
"folke/snacks.nvim",
"nvim-orgmode/orgmode",
},
opts = {
nvm = {
dir = vim.fn.stdpath("data") .. "/nvm",
nixvims = { ... }
}
}
}
Alternatively, enable plugins with sensible defaults by passing true:
{
"anomalyco/yalms",
dependencies = {
"folke/snacks.nvim",
"nvim-orgmode/orgmode",
},
opts = {
orgonomics = true, -- enable pickers, capture window, and clock with defaults
dev = true, -- enable dev scratchpads with defaults
nvm = true, -- enable Nixvim manager with defaults
},
}
Or use as a Neovim plugin (with Nixvim):
require('yalms.nvm').setup({
dir = vim.fn.stdpath("data") .. "/nvm",
nixvims = { ... }
})
Install via Nix
Prerequisites
- Nix package manager installed
- Nixvim (if using Nixvim module)
1. Flake Input
Add YALMS to your flake inputs:
{
inputs = {
yalms.url = "github:anomalyco/yalms";
# ... other inputs
};
}
Reference the package in your outputs:
outputs = { self, yalms, ... }: {
# Access the package
packages.x86_64-linux.default = yalms.packages.x86_64-linux.default;
};
2. Overlay
Use the overlay to add YALMS to your package set:
{
nixpkgs.overlays = [
(import yalms.overlays.yalms)
];
environment.systemPackages = with pkgs;
[ vimPlugins.yalms ];
}
3. Nixvim Module Import
Import the Nixvim module in your Nixvim configuration:
{
imports = [
inputs.yalms.nixvimModules.yalms
];
opts.plugins.yalms.enable = true;
}
4. Options
When using the Nixvim module, available options:
| Option | Type | Default | Description |
|---|---|---|---|
opts.plugins.yalms.enable |
bool |
false |
Enable YALMS plugin |
opts.plugins.yalms.settings |
YalmsOpts |
{} |
Options passed to Yalms.setup() |
The settings option accepts a YalmsOpts table matching the Lua setup options:
opts.plugins.yalms.settings = {
nvm = {
dir = "~/.config/nvim/nvm";
force_rebuild = false;
};
orgonomics = true; # enable all features with defaults
# or for finer control:
# orgonomics = {
# pickers = true;
# clock = {
# breaks_file = "~/org/breaks.org";
# };
# };
};
See YALMS Library Documentation for available modules and their options.
Modules
- yalms - Core utilities and module loading
- yalms.dev - Developer tools (scratches, file watching)
- yalms.env - Environment detection (Neovim, WezTerm)
- yalms.fs - Filesystem operations
- yalms.fswatch - Filesystem watching
- yalms.json - JSON encode/decode
- yalms.str - String manipulation
- yalms.tbl - Table utilities
- yalms.time - Date/time functions
- yalms.cr - Coroutine runner (async operations)
- yalms.events - Event emitter system
- yalms.ui.neoforms - NeoForms (interactive forms)
- yalms.nvm - Nixvim Manager
- yalms.exec - Process execution engine
- yalms.ui - UI components
Plugins
- Dev Tools - Developer scratchpads and file watching
- Nixvim Manager - Manage Nixvim instances
- NeoProcess - Create and visualize recipes
- NeoForms - Build forms as Neovim buffers
- NArea - Notification area component
- Orgonomic - Enhance Nvim orgmode
License
GNU General Public License v3.0 or later
Copyright (C) 2026 Ahmad Raza
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Disclaimer
Some parts of this project, such as unit tests, may be AI generated.