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