mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-24 09:48:42 +02:00
Replaced the `isDocs` specialArg added in #1807 with an internal module option. We should only use `specialArgs` when absolutely necessary, a module or `_module.args` is preferred, but those aren't available until `config` is evaluated so they can't be used for `imports`. The main problem with `specialArgs` is it makes our modules less portable. Luckily that shouldn't be an issue for these context flags.
70 lines
1.7 KiB
Nix
70 lines
1.7 KiB
Nix
{
|
|
pkgs,
|
|
config,
|
|
lib,
|
|
helpers,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib) types;
|
|
|
|
fileModuleType = types.submoduleWith {
|
|
shorthandOnlyDefinesConfig = true;
|
|
specialArgs = {
|
|
inherit helpers;
|
|
defaultPkgs = pkgs;
|
|
};
|
|
# Don't include the modules in the docs, as that'd be redundant
|
|
modules = lib.optionals (!config.isDocs) [
|
|
../../.
|
|
./submodule.nix
|
|
];
|
|
description = "Nixvim configuration";
|
|
};
|
|
in
|
|
{
|
|
options = {
|
|
files = lib.mkOption {
|
|
type = types.attrsOf fileModuleType;
|
|
description = "Extra files to add to the runtimepath";
|
|
default = { };
|
|
example = {
|
|
"ftplugin/nix.lua" = {
|
|
opts = {
|
|
tabstop = 2;
|
|
shiftwidth = 2;
|
|
expandtab = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
filesPlugin = lib.mkOption {
|
|
type = types.package;
|
|
description = "A derivation with all the files inside.";
|
|
internal = true;
|
|
readOnly = true;
|
|
};
|
|
};
|
|
|
|
config =
|
|
let
|
|
inherit (config) files;
|
|
concatFilesOption = attr: lib.flatten (lib.mapAttrsToList (_: builtins.getAttr attr) files);
|
|
in
|
|
{
|
|
# Each file can declare plugins/packages/warnings/assertions
|
|
extraPlugins = concatFilesOption "extraPlugins";
|
|
extraPackages = concatFilesOption "extraPackages";
|
|
warnings = concatFilesOption "warnings";
|
|
assertions = concatFilesOption "assertions";
|
|
|
|
# A directory with all the files in it
|
|
filesPlugin = pkgs.buildEnv {
|
|
name = "nixvim-config";
|
|
paths =
|
|
(lib.mapAttrsToList (_: file: file.plugin) files)
|
|
++ (lib.mapAttrsToList pkgs.writeTextDir config.extraFiles);
|
|
};
|
|
};
|
|
}
|