nix-community.nixvim/wrappers/standalone.nix
Matt Sturgeon 4e5bd1d79b
lib: segregate and deprecate functions that need pkgs
Splits everything that depends on a `pkgs` instance into an optional
attrs, allowing `helpers.nix` to be bootstrapped without `pkgs`.

This required some refactoring:
- `modules.specialArgs` is only available when `pkgs` is used
- `modules.specialArgsWith` now requires `defaultPkgs` be provided
- `builders.*` now have `*With` variants that take `pkgs` as an argument
  and a `withPkgs` function that returns the old interface
- Had to define the fixed part of `builders` outside the attrs for now,
  to avoid infinite recursion.
- The old `builders` are now deprecated, and print a warning when
  evaluated
- `withOptoinalFns` was introduced to merge the optional attrs into the
  final lib.
2024-09-13 19:05:26 +01:00

49 lines
1.1 KiB
Nix

default_pkgs: self:
{
pkgs ? default_pkgs,
lib ? pkgs.lib,
extraSpecialArgs ? { },
_nixvimTests ? false,
module,
}:
let
helpers = import ../lib { inherit pkgs lib _nixvimTests; };
inherit (helpers.modules) evalNixvim;
mkNvim =
mod:
let
evaledModule = evalNixvim {
modules = [
mod
./modules/standalone.nix
];
extraSpecialArgs = {
defaultPkgs = pkgs;
} // extraSpecialArgs;
};
inherit (evaledModule.config) enableMan finalPackage printInitPackage;
in
(pkgs.symlinkJoin {
name = "nixvim";
paths = [
finalPackage
printInitPackage
] ++ pkgs.lib.optional enableMan self.packages.${pkgs.stdenv.hostPlatform.system}.man-docs;
meta.mainProgram = "nvim";
})
// rec {
inherit (evaledModule) config options;
extend =
extension:
mkNvim {
imports = [
mod
extension
];
};
nixvimExtend = lib.warn "<nixvim>.nixvimExtend has been renamed to <nixvim>.extend" extend;
};
in
mkNvim module