1
1
Fork
You've already forked weave
0
No description
  • Nix 100%
2026年07月10日 14:15:14 +02:00
plugins wrapper: add plugins support 2026年07月10日 14:13:18 +02:00
.envrc feat: init 2025年07月22日 12:10:51 +01:00
.gitignore feat: init 2025年07月22日 12:10:51 +01:00
default.nix feat: init 2025年07月22日 12:10:51 +01:00
flake.lock chore: update flake 2025年11月01日 18:44:54 +00:00
flake.nix feat: init 2025年07月22日 12:10:51 +01:00
LICENSE feat: init 2025年07月22日 12:10:51 +01:00
README.md doc: plugin support 2026年07月10日 14:15:14 +02:00
wrapper.nix wrapper: add plugins support 2026年07月10日 14:13:18 +02:00

weave

Weave is a simple neovim wrapper for nix that allows you to maintain your neovim configuration with lua and with nix for package management.

Weave is meant be a very minimal neovim wrapper, but i can still be pretty opiniated at times.

Weave is based on gift-wrap

Usage

{
 inputs = {
 nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz";
 weave = {
 url = "git+https://codeberg.org/comfysage/weave";
 inputs.nixpkgs.follows = "nixpkgs";
 };
 };
 outputs = { self, nixpkgs, weave }:
 let
 inherit (nixpkgs) lib;
 forAllSystems =
 f: lib.genAttrs lib.systems.flakeExposed (system: f nixpkgs.legacyPackages.${system});
 in
 {
 packages = forAllSystems (pkgs: {
 nvim = weave.legacyPackages.${pkgs.system}.wrapNeovim {
 # what is the name of your neovim config?
 pname = "my-neovim";
 # perhaps add a version suffix to your package
 # this is a sensible default
 versionSuffix = self.shortRev or self.dirtyShortRev or "unknown";
 # this is the base package for your neovim configuration
 # this defaults to neovim-unwrapped and most of the time you will not need to change this
 basePackage = pkgs.neovim-unwrapped;
 # this field allows you to create aliases to the neovim executable
 # this defaults to blank, the bellow example will create the aliases `vi` and `vim`
 aliases = [ "vi" "vim" ];
 # wether to keep the desktop files for neovim
 # by default this is set to false, but you can set it to true
 keepDesktopFiles = true;
 # your user conifguration, this should be a path your nvim config in lua
 userConfig = ./config;
 # use npins to manage your plugins
 plugins = import ./npins {};
 # override npins sources
 pluginOverrides = {
 lynn = { passthru.start = true; };
 };
 # all the plugins that should be stored in the neovim start directory
 # these are the plugins that are loaded when neovim starts
 startPlugins = with pkgs.vimPlugins; [
 nvim-treesitter.withAllGrammars
 nvim-lspconfig
 ];
 # these are plugins that are loaded on demand by your configuration
 optPlugins = with pkgs.vimPlugins; [
 blink-cmp
 telescope
 lazygit-nvim
 ];
 # these are any extra packages that should be available in your neovim environment
 extraPackages = with pkgs; [
 ripgrep
 fd
 inotify-tools
 lazygit
 ];
 # below is a list of plugin providers, these should then be
 # configured in your plugin or setup properly by adding to your path
 # or the extraInitLua
 #
 # this can also be a list of strings
 providers = {
 node = false;
 python = false;
 python3 = true;
 ruby = false;
 perl = false;
 };
 # following the providers above, you can set the exact package for
 # your providers, in this case python3
 extraInitLua = ''
 vim.g.python3_host_prog = '${lib.getExe pkgs.python3}'
 '';
 };
 });
 };
}