1<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-importing-modules">
2 <title>Importing Modules</title>
3 <para>
4 Sometimes NixOS modules need to be used in configuration but exist
5 outside of Nixpkgs. These modules can be imported:
6 </para>
7 <programlisting language="bash">
8{ config, lib, pkgs, ... }:
9
10{
11 imports =
12 [ # Use a locally-available module definition in
13 # ./example-module/default.nix
14 ./example-module
15 ];
16
17 services.exampleModule.enable = true;
18}
19</programlisting>
20 <para>
21 The environment variable <literal>NIXOS_EXTRA_MODULE_PATH</literal>
22 is an absolute path to a NixOS module that is included alongside the
23 Nixpkgs NixOS modules. Like any NixOS module, this module can import
24 additional modules:
25 </para>
26 <programlisting language="bash">
27# ./module-list/default.nix
28[
29 ./example-module1
30 ./example-module2
31]
32</programlisting>
33 <programlisting language="bash">
34# ./extra-module/default.nix
35{ imports = import ./module-list.nix; }
36</programlisting>
37 <programlisting language="bash">
38# NIXOS_EXTRA_MODULE_PATH=/absolute/path/to/extra-module
39{ config, lib, pkgs, ... }:
40
41{
42 # No `imports` needed
43
44 services.exampleModule1.enable = true;
45}
46</programlisting>
47</section>