modules/context: init with isDocs

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.
This commit is contained in:
Matt Sturgeon 2024-07-05 23:26:05 +01:00
parent edc8602d47
commit 04a255ed7e
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
5 changed files with 20 additions and 6 deletions

View file

@ -58,7 +58,10 @@ let
) opt.declarations;
};
modules = [ ../modules/top-level ];
modules = [
../modules/top-level
{ isDocs = true; }
];
hmOptions = builtins.removeAttrs (lib.evalModules {
modules = [ (import ../wrappers/modules/hm.nix { inherit lib; }) ];
@ -73,7 +76,6 @@ rec {
specialArgs = {
inherit helpers;
defaultPkgs = pkgsDoc;
isDocs = true;
};
})
options

View file

@ -14,7 +14,6 @@ let
specialArgs = {
inherit helpers;
defaultPkgs = pkgs;
isDocs = true;
};
};

14
modules/misc/context.nix Normal file
View file

@ -0,0 +1,14 @@
{ lib, ... }:
{
options = {
isDocs = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Whether modules are being evaluated to build documentation.
'';
internal = true;
visible = false;
};
};
}

View file

@ -6,6 +6,7 @@ let
in
{
imports = [
./context.nix
./nixpkgs.nix
./nixvim-info.nix
(nixosModules + "/misc/assertions.nix")

View file

@ -3,12 +3,10 @@
config,
lib,
helpers,
specialArgs,
...
}:
let
inherit (lib) types;
isDocs = specialArgs.isDocs or false;
fileModuleType = types.submoduleWith {
shorthandOnlyDefinesConfig = true;
@ -17,7 +15,7 @@ let
defaultPkgs = pkgs;
};
# Don't include the modules in the docs, as that'd be redundant
modules = lib.optionals (!isDocs) [
modules = lib.optionals (!config.isDocs) [
../../.
./submodule.nix
];