diff --git a/default.nix b/default.nix index 295962f..12efe75 100644 --- a/default.nix +++ b/default.nix @@ -1,76 +1,3 @@ -{ enableDevIcons ? false -, enableBarBar ? false -, enableTabby ? false -, enableOrgMode ? false -, viAlias ? false -, vimAlias ? false -, grammarFileTypes ? [ "nix" ] -, theme ? { } -, plugins ? { } -, wrapNeovim -, neovim-unwrapped -, tree-sitter -, neovimPlugins -, lib -, nix2lua -, substituteAll -, ... -}: - -let - inherit (builtins) catAttrs isFunction readFile; - myLib = import ./lib.nix { inherit lib; } // { - inherit substituteAll; - inherit (nix2lua.lib) toLua; - }; - - pluginParams = neovimPlugins // { - inherit plugins; - inherit tree-sitter grammarFileTypes; - inherit enableDevIcons enableTabby enableOrgMode; - themeCfg = theme; - lib = myLib; - }; - - callPlugin = op: - if isFunction op then op pluginParams else import op pluginParams; - callPlugins = list: map callPlugin list; - - pluginsSettings = callPlugins [ - ./plugins/config - ./plugins/syntax - ./plugins/git - ./plugins/explorer - ./plugins/theme - ./plugins/lsp - ./plugins/formatter - ./plugins/ux - ]; - - basePlugins = [ neovimPlugins.plenary-nvim ]; - customPlugins = catAttrs "plugins" pluginsSettings; - allPlugins = basePlugins ++ customPlugins; - - basicConfigs = map readFile [ ./config/basic.lua ]; - pluginConfigs = catAttrs "luaConfig" pluginsSettings; - allConfigs = basicConfigs ++ pluginConfigs; -in -(wrapNeovim neovim-unwrapped { - inherit viAlias; - inherit vimAlias; - - withPython3 = false; - withNodeJs = false; - withRuby = false; - - configure = { - customRC = myLib.mkLuaRc allConfigs; - - packages.myVimPackages = { start = allPlugins; }; - }; -}).overrideAttrs (oldAttrs: { - passthru = oldAttrs.passthru // { - nix2lua = nix2lua.lib; - inherit plugins; - }; -}) +(import (fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz") { + src = builtins.fetchGit ./.; +}).defaultNix diff --git a/flake.nix b/flake.nix index 4054505..158f188 100644 --- a/flake.nix +++ b/flake.nix @@ -212,11 +212,13 @@ inherit neovimPlugins; inherit nix2lua; }; + + mkNeovim = pkgs: pkgs.callPackage ./neovim.nix (mkNvimPlugins pkgs); in { overlays = { default = final: prev: { - myneovim = prev.callPackage self (mkNvimPlugins prev); + myneovim = mkNeovim prev; }; }; } // @@ -225,7 +227,7 @@ inherit (builtins) mapAttrs; pkgs = import nixpkgs { inherit system; }; - minimalNeovim = pkgs.callPackage self (mkNvimPlugins pkgs); + minimalNeovim = mkNeovim pkgs; recommendedNeovim = (minimalNeovim.override { enableDevIcons = true; diff --git a/neovim.nix b/neovim.nix new file mode 100644 index 0000000..295962f --- /dev/null +++ b/neovim.nix @@ -0,0 +1,76 @@ +{ enableDevIcons ? false +, enableBarBar ? false +, enableTabby ? false +, enableOrgMode ? false +, viAlias ? false +, vimAlias ? false +, grammarFileTypes ? [ "nix" ] +, theme ? { } +, plugins ? { } +, wrapNeovim +, neovim-unwrapped +, tree-sitter +, neovimPlugins +, lib +, nix2lua +, substituteAll +, ... +}: + +let + inherit (builtins) catAttrs isFunction readFile; + myLib = import ./lib.nix { inherit lib; } // { + inherit substituteAll; + inherit (nix2lua.lib) toLua; + }; + + pluginParams = neovimPlugins // { + inherit plugins; + inherit tree-sitter grammarFileTypes; + inherit enableDevIcons enableTabby enableOrgMode; + themeCfg = theme; + lib = myLib; + }; + + callPlugin = op: + if isFunction op then op pluginParams else import op pluginParams; + callPlugins = list: map callPlugin list; + + pluginsSettings = callPlugins [ + ./plugins/config + ./plugins/syntax + ./plugins/git + ./plugins/explorer + ./plugins/theme + ./plugins/lsp + ./plugins/formatter + ./plugins/ux + ]; + + basePlugins = [ neovimPlugins.plenary-nvim ]; + customPlugins = catAttrs "plugins" pluginsSettings; + allPlugins = basePlugins ++ customPlugins; + + basicConfigs = map readFile [ ./config/basic.lua ]; + pluginConfigs = catAttrs "luaConfig" pluginsSettings; + allConfigs = basicConfigs ++ pluginConfigs; +in +(wrapNeovim neovim-unwrapped { + inherit viAlias; + inherit vimAlias; + + withPython3 = false; + withNodeJs = false; + withRuby = false; + + configure = { + customRC = myLib.mkLuaRc allConfigs; + + packages.myVimPackages = { start = allPlugins; }; + }; +}).overrideAttrs (oldAttrs: { + passthru = oldAttrs.passthru // { + nix2lua = nix2lua.lib; + inherit plugins; + }; +}) diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..ff89556 --- /dev/null +++ b/shell.nix @@ -0,0 +1,3 @@ +(import (fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz") { + src = builtins.fetchGit ./.; +}).shellNix