lib/plugins: take ownership of modules utils

These util functions were previously defined in `modules`, but
`plugins.utils` is a better home.
This commit is contained in:
Matt Sturgeon 2024-12-18 22:12:51 +00:00
parent ec97297fd5
commit 896f6be694
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
8 changed files with 45 additions and 38 deletions

View file

@ -10,6 +10,9 @@ let
# Removed 2024-09-27 # Removed 2024-09-27
specialArgs = "It has been integrated into `evalNixvim`"; specialArgs = "It has been integrated into `evalNixvim`";
specialArgsWith = "It has been integrated into `evalNixvim`"; specialArgsWith = "It has been integrated into `evalNixvim`";
# Removed 2024-12-18
applyExtraConfig = "It has been moved to `lib.plugins.utils`";
mkConfigAt = "It has been moved to `lib.plugins.utils`";
}; };
in in
{ {
@ -45,37 +48,6 @@ in
helpers = self; helpers = self;
} // extraSpecialArgs; } // extraSpecialArgs;
}; };
/**
Apply an `extraConfig` definition, which should produce a `config` definition.
As used by `mkVimPlugin` and `mkNeovimPlugin`.
The result will be wrapped using a `mkIf` definition.
*/
applyExtraConfig =
{
extraConfig,
cfg,
opts,
enabled ? cfg.enable or (throw "`enabled` argument not provided and no `cfg.enable` option found."),
}:
let
maybeApply = x: maybeFn: if builtins.isFunction maybeFn then maybeFn x else maybeFn;
in
lib.pipe extraConfig [
(maybeApply cfg)
(maybeApply opts)
(lib.mkIf enabled)
];
mkConfigAt =
loc: def:
let
isOrder = loc._type or null == "order";
withOrder = if isOrder then lib.modules.mkOrder loc.priority else lib.id;
loc' = lib.toList (if isOrder then loc.content else loc);
in
lib.setAttrByPath loc' (withOrder def);
} }
// lib.mapAttrs ( // lib.mapAttrs (
name: msg: name: msg:

View file

@ -3,6 +3,7 @@
lib, lib,
}: }:
{ {
utils = call ./utils.nix { };
neovim = call ./neovim.nix { }; neovim = call ./neovim.nix { };
vim = call ./vim.nix { }; vim = call ./vim.nix { };

View file

@ -61,7 +61,7 @@ let
}) })
''; '';
luaConfigAtLocation = lib.nixvim.modules.mkConfigAt configLocation cfg.luaConfig.content; luaConfigAtLocation = lib.nixvim.plugins.utils.mkConfigAt configLocation cfg.luaConfig.content;
in in
{ {
meta = { meta = {
@ -139,7 +139,7 @@ let
# Apply any additional configuration added to `extraConfig` # Apply any additional configuration added to `extraConfig`
(lib.optionalAttrs (args ? extraConfig) ( (lib.optionalAttrs (args ? extraConfig) (
lib.nixvim.modules.applyExtraConfig { lib.nixvim.plugins.utils.applyExtraConfig {
inherit extraConfig cfg opts; inherit extraConfig cfg opts;
} }
)) ))

View file

@ -116,7 +116,7 @@ let
colorscheme = lib.mkDefault colorscheme; colorscheme = lib.mkDefault colorscheme;
}) })
(lib.optionalAttrs (args ? extraConfig) ( (lib.optionalAttrs (args ? extraConfig) (
lib.nixvim.modules.applyExtraConfig { lib.nixvim.plugins.utils.applyExtraConfig {
inherit extraConfig cfg opts; inherit extraConfig cfg opts;
} }
)) ))

34
lib/plugins/utils.nix Normal file
View file

@ -0,0 +1,34 @@
{ lib }:
{
/**
Apply an `extraConfig` definition, which should produce a `config` definition.
As used by `mkVimPlugin` and `mkNeovimPlugin`.
The result will be wrapped using a `mkIf` definition.
*/
applyExtraConfig =
{
extraConfig,
cfg,
opts,
enabled ? cfg.enable or (throw "`enabled` argument not provided and no `cfg.enable` option found."),
}:
let
maybeApply = x: maybeFn: if builtins.isFunction maybeFn then maybeFn x else maybeFn;
in
lib.pipe extraConfig [
(maybeApply cfg)
(maybeApply opts)
(lib.mkIf enabled)
];
mkConfigAt =
loc: def:
let
isOrder = loc._type or null == "order";
withOrder = if isOrder then lib.modules.mkOrder loc.priority else lib.id;
loc' = lib.toList (if isOrder then loc.content else loc);
in
lib.setAttrByPath loc' (withOrder def);
}

View file

@ -74,7 +74,7 @@ let
options, options,
... ...
}: }:
lib.nixvim.modules.applyExtraConfig { lib.nixvim.plugins.utils.applyExtraConfig {
inherit extraConfig; inherit extraConfig;
cfg = getPluginAttr config; cfg = getPluginAttr config;
opts = getPluginAttr options; opts = getPluginAttr options;

View file

@ -150,7 +150,7 @@ in
end end
'' ''
); );
settings = lib.nixvim.modules.applyExtraConfig { settings = lib.nixvim.plugins.utils.applyExtraConfig {
extraConfig = settings; extraConfig = settings;
cfg = cfg.settings; cfg = cfg.settings;
opts = opts.settings; opts = opts.settings;
@ -177,7 +177,7 @@ in
) "You can use `${basePluginPathString}.extraOptions.settings` instead.") ) "You can use `${basePluginPathString}.extraOptions.settings` instead.")
] ]
++ lib.optional (args ? extraConfig) ( ++ lib.optional (args ? extraConfig) (
lib.nixvim.modules.applyExtraConfig { lib.nixvim.plugins.utils.applyExtraConfig {
inherit inherit
extraConfig extraConfig
cfg cfg

View file

@ -464,7 +464,7 @@ let
}; };
testMkLuaConfig = { testMkLuaConfig = {
expr = lib.mapAttrs (_: loc: helpers.modules.mkConfigAt loc "Hello!") { expr = lib.mapAttrs (_: loc: helpers.plugins.utils.mkConfigAt loc "Hello!") {
"simple string" = "foo"; "simple string" = "foo";
"simple list" = [ "simple list" = [
"foo" "foo"