2017-11-09 05:55:40 +00:00
<section xmlns= "http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0"
xml:id="sec-importing-modules">
2018-05-02 00:57:09 +01:00
<title > Importing Modules</title>
2017-11-09 05:55:40 +00:00
2018-05-02 00:57:09 +01:00
<para >
2019-09-18 21:13:35 +01:00
Sometimes NixOS modules need to be used in configuration but exist outside of Nixpkgs. These modules can be imported:
2018-05-02 00:57:09 +01:00
</para>
2017-11-09 05:55:40 +00:00
<programlisting >
{ config, lib, pkgs, ... }:
{
imports =
[ # Use a locally-available module definition in
# ./example-module/default.nix
./example-module
];
services.exampleModule.enable = true;
}
</programlisting>
2018-05-02 00:57:09 +01:00
<para >
2019-09-18 21:13:35 +01:00
The environment variable <literal > NIXOS_EXTRA_MODULE_PATH</literal> 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:
2018-05-02 00:57:09 +01:00
</para>
2017-11-09 05:55:40 +00:00
<programlisting >
# ./module-list/default.nix
[
./example-module1
./example-module2
]
</programlisting>
<programlisting >
# ./extra-module/default.nix
{ imports = import ./module-list.nix; }
</programlisting>
<programlisting >
# NIXOS_EXTRA_MODULE_PATH=/absolute/path/to/extra-module
{ config, lib, pkgs, ... }:
{
# No `imports` needed
services.exampleModule1.enable = true;
}
</programlisting>
</section>