2 .\" SPDX-License-Identifier: BSD-2-Clause
4 .\" Copyright (c) 2018 Kyle Evans <kevans@FreeBSD.org>
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\" notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\" notice, this list of conditions and the following disclaimer in the
13 .\" documentation and/or other materials provided with the distribution.
15 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 .Nd FreeBSD config module
35 contains configuration and module loading functionality.
37 Before hooking into or using the functionality provided by
39 it must be included with a statement such as the following:
41 .Dl local config = require("config")
42 .Ss Exported functions
43 The following functions are exported from
45 .Bl -tag -width "config.setCarouselIndex(id, idx)" -offset indent
46 .It Fn config.getCarouselIndex id
47 Returns the currently chosen index in the carousel menu entry described by
51 for a more in-depth explanation of carousels.
52 .It Fn config.setCarouselIndex id idx
53 Set the chosen index for the carousel menu entry described by
57 A lookup will be done as needed to determine what value
59 actually corresponds to.
60 .It Fn config.readConf file loaded_files
63 as a configuration file
67 and then processing files listed in
73 The caller may optionally pass in a table as the
75 argument, which uses filenames as keys and any non-nil value to
76 indicate that the file named by the key has already been loaded and
77 should not be loaded again.
78 .It Fn config.processFile name silent
81 as a configuration file.
84 exists and parses without error, false otherwise.
88 .Fn config.processFile
89 will not consider a failure to read the file as a failure.
90 .It Fn config.parse text
93 as a configuration file.
94 This is used internally by
95 .Fn config.processFile
96 to parse the contents of a configuration file.
97 Returns true if parsing succeeds without error, false if an error occurred.
98 A message is also printed to the console if an error is encountered.
99 .It Fn config.loadKernel other_kernel
106 .Fn config.loadKernel
109 Otherwise, it will try to load
112 .Pa /boot/{other_kernel} ,
116 The latter is tried in case an absolute path has been specified to the kernel
119 is amended to include the directory the kernel was found in if either of these
120 paths result in a loaded kernel.
122 If no kernel was loaded from either of these paths,
123 .Fn config.loadKernel
124 will attempt to load a kernel named
128 instead of attempting to load a kernel named
131 Returns true if a kernel was loaded, false if no kernel was loaded.
132 .It Fn config.selectKernel kernel
135 to the kernel that will be loaded when either
140 This is usually called by the menu system as the kernel selector carousel is
142 .It Fn config.load file reload
145 as a configuration file.
149 .Pa /boot/defaults/loader.conf
152 will then silently attempt to process any files specified in
153 .Ev loader_conf_files
158 configuration will also be checked as part of
160 Before returning, all
165 .It Fn config.reload file
168 as a configuration file.
170 will restore the environment to how it existed before the last config was
171 loaded, then it will invoke
172 .Fn config.load file .
173 Before returning, all
176 .It Fn config.loadelf
177 Loads all ELF objects, the selected kernel as well as any modules configured to
180 This will be called by the Lua intercepted
185 .It Fn config.enableModule modname
190 If the module was previously blacklisted, then it will be forcefully allowed to
192 .It Fn config.disableModule modname
195 to not be loaded during
197 .It Fn config.isModuleEnabled modname
198 Checks if the module named
200 will be loaded during
202 It checks both that the module is marked for loading and that it is either
203 forced or not blacklisted.
204 .It Fn config.getModuleInfo
209 tables describing the modules that the config module has been made aware of via
211 as well as a representation of
212 .Ar module_blacklist .
215 The following hooks are defined in
217 .Bl -tag -width "config.reloaded" -offset indent
218 .It Fn config.buildenv env
220 .It Fn config.reloaded
222 .It Fn modules.loaded
227 hook is only invoked when an environment needs to be built to execute a lua
228 configuration file that has been specified in
229 .Ev loader_conf_files .
230 It will be invoked for each configuration file encountered.
239 file was originally written by
240 .An Pedro Souza Aq Mt pedrosouza@FreeBSD.org .
241 Later work and this manual page was done by
242 .An Kyle Evans Aq Mt kevans@FreeBSD.org .