Unverified Commit 04a5fd4b authored by Robert Hensing's avatar Robert Hensing Committed by GitHub
Browse files

nixos/eval-config: Deprecate NIXOS_EXTRA_MODULE_PATH (#349549)

parents 6bff6194 5f197bf5
Loading
Loading
Loading
Loading
+0 −28
Original line number Diff line number Diff line
@@ -16,31 +16,3 @@ outside of Nixpkgs. These modules can be imported:
  services.exampleModule.enable = true;
}
```

The environment variable `NIXOS_EXTRA_MODULE_PATH` is an absolute path
to a NixOS module that is included alongside the Nixpkgs NixOS modules.
Like any NixOS module, this module can import additional modules:

```nix
# ./module-list/default.nix
[
  ./example-module1
  ./example-module2
]
```

```nix
# ./extra-module/default.nix
{ imports = import ./module-list.nix; }
```

```nix
# NIXOS_EXTRA_MODULE_PATH=/absolute/path/to/extra-module
{ config, lib, pkgs, ... }:

{
  # No `imports` needed

  services.exampleModule1.enable = true;
}
```
+1 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ file.
-  `buildDocsInSandbox` indicates whether the option documentation for the
   module can be built in a derivation sandbox. This option is currently only
   honored for modules shipped by nixpkgs. User modules and modules taken from
   `NIXOS_EXTRA_MODULE_PATH` are always built outside of the sandbox, as has
   `extraModules` are always built outside of the sandbox, as has
   been the case in previous releases.

   Building NixOS option documentation in a sandbox allows caching of the built
+23 −2
Original line number Diff line number Diff line
@@ -30,8 +30,29 @@ evalConfigArgs@
  check ? true
, prefix ? []
, lib ? import ../../lib
, extraModules ? let e = builtins.getEnv "NIXOS_EXTRA_MODULE_PATH";
                 in lib.optional (e != "") (import e)
, extraModules ?
    let e = builtins.getEnv "NIXOS_EXTRA_MODULE_PATH";
    in lib.optional (e != "") (
      lib.warn
        ''
          The NIXOS_EXTRA_MODULE_PATH environment variable is deprecated and will be
          removed in NixOS 25.05.
          We recommend a workflow where you update the expression files instead, but
          if you wish to continue to use this variable, you may do so with a module like:

          {
            imports = [
              (builtins.getEnv "NIXOS_EXTRA_MODULE_PATH")
            ];
          }

          This has the benefit that your configuration hints at the
          non-standard workflow.
        ''
        # NOTE: this import call is unnecessary and it even removes the file name
        #       from error messages.
        import e
    )
}:

let